/**
  * @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);
 }
Exemple #2
0
	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();		
		
		
	}