/** * @return void * @param array $fields * @param array $values * @param string $block_name * @param object &$tpl * @desc parse custom form data */ function __customFormHandler($fields, $values, $block_name, &$tpl) { $parse_variables = array(); foreach ($fields as $name => $type) { $this->setElement($name, $type); switch ($this->element_type) { case 'image': $value = $values['id']; break; default: $value = $values[$name]; break; } $caption = formatCaption($this->fields_name[$name]); $parse_fields['FIELD_' . strtoupper($name)] = $this->makeFormElement($value); $parse_fields[strtoupper($name)] = $this->makeElementView($value); $parse_fields[strtoupper($name) . '_CAPTION'] = $caption; // FORM CHECK // ======================================== if (!is_null($this->fields_params[$name]['check'])) { $chk = $this->fields_params[$name]['check']; preg_match('/[^\\\\](\\*|\\+|\\{([0-9]+)\\,([0-9]*)\\})/', ' ' . $chk, $matches); if ($matches[1] == '+') { $min = 1; } else { list($tmp, $tmp, $min, $max) = $matches; } $min = (int) $min; $max = (int) $max; $type = preg_replace('/^([a-z]+)_.*/', '\\1', $this->fields[$name]); $msg = $this->fields_params[$name]['check_msg']; $check[] = "['{$name}', '{$caption}', '{$type}', '{$chk}', {$min}, {$max}, '{$msg}']"; } // ======================================= // add confirmation fields for password if ($type == 'password') { $this->setElement($name . '_confirmation', $type); $parse_fields['FIELD_' . strtoupper($name) . '_CONFIRMATION'] = $this->makeFormElement($values[$name]); $parse_fields[strtoupper($name) . '_CONFIRMATION'] = $this->makeElementView($values[$name]); $parse_fields[strtoupper($name) . '_CONFIRMATION_CAPTION'] = formatCaption($this->fields_name[$name] . ' confirmation'); } } if ($this->buffer != '') { $this->loadTemplate($this->buffer); unset($this->buffer); } if (arrayIsOk($this->add_variables)) { $parse_fields += $this->add_variables; } if (arrayIsOk($this->caption_variables)) { $parse_fields += $this->caption_variables; } $this->__clearAddVariables(); // FORM CHECK // ======================================== // parse form if (arrayIsOk($check)) { $check = '[' . implode(',', $check) . ']'; } else { $check = '[]'; } $parse_fields['JS_CHECK'] = $check; // ======================================== $tpl->parseVariable($parse_fields, $block_name); }
function makeView() { GLOBAL $data; GLOBAL $db; GLOBAL $parser; $data->set($this->parent); // Get first field name for parent list // if isset list fields if (isset($data->list_fields)) { $columns = $data->list_fields; } // get columns as array if (isset($columns)) { $columns_array = explode(',', $columns); } else { $columns_array = array(0=>'name'); } $parent_column=$columns_array[0]; $parent_table = $data->table; $parent_list=cmsList($parent_column,$_GET['order'],$_GET['order_type'],$cond,'cms/cross_list', 'dynamic_list'); $data->set($this->child); $child_table=$data->table; $parser->setCaption(array( 'caption_name' => formatCaption($parent_column) )); $query = "SELECT p.$parent_column as element, c.id, '".$this->parent."' as parent_type, '".$this->child."' as type, p.id as parent_id, 0 as back FROM $parent_table p, $child_table c WHERE p.id=c.$this->cross_field ORDER BY c.".$data->order; $rows = $db->query($query); $child_list = $parser->makeList($rows,'cms/cross_list','child_list'); $parser->loadTemplate('cms/cross_list'); $parser->tpl->parseVariable(array( 'child_list' => $child_list, 'parent_list' => $parent_list ),'cross_list'); return $parser->tpl->get(); }