Exemple #1
0
 public static function f_loadTypes($params = array())
 {
     $result = array();
     $typesTable = new K_Tree_Types_Model();
     $types = $typesTable->select()->fetchArray();
     $typeClass = 'Type_Controller_' . ucfirst($params['tree_type']);
     if ($params['tree_type'] == 'list') {
         $list = K_CupItems::getItems($params['tree_id'], $params['tree_type']);
         $listTypes = array_map('trim', explode(',', $list[0]['types']));
         for ($i = 0, $j = 0; $i < sizeof($types); $i++) {
             if (in_array($types[$i]['type_name'], $listTypes)) {
                 $result[$j] = new stdClass();
                 $result[$j]->value = $types[$i]['type_name'];
                 $result[$j]->baseline = 'undefined';
                 $j++;
             }
         }
     } else {
         for ($i = 0, $j = 0; $i < sizeof($types); $i++) {
             if (isset($typeClass::$allowedChildren[0])) {
                 if ($typeClass::$allowedChildren[0] == 'all' && sizeof($typeClass::$allowedChildren) == 1 || $typeClass::$allowedChildren[0] == 'all' && !in_array($types[$i]['type_name'], $typeClass::$allowedChildren) || $typeClass::$allowedChildren[0] != 'all' && in_array($types[$i]['type_name'], $typeClass::$allowedChildren)) {
                     $result[$j] = new stdClass();
                     $result[$j]->value = $types[$i]['type_name'];
                     $result[$j]->baseline = 'undefined';
                     $j++;
                 }
             }
         }
     }
     return $result;
 }
 /**
  * Загружает структуру формы для типа итема 
  * 
  * 
  *    
  */
 public static function loadTypeStructure($type, $formMethodsClass = false, $formMethodsParams = array())
 {
     if ($type) {
         try {
             $typesTable = new K_Tree_Types_Model();
             $typeData = $typesTable->select()->where('`type_name`="' . $type . '"')->fetchRow();
             $unserializedFormData = unserialize($typeData['type_fields']);
             $unserializedFormData = json_decode($unserializedFormData['form_structure']);
             for ($i = 0; $i < sizeof($unserializedFormData); $i++) {
                 if ($unserializedFormData[$i]->type == 'select') {
                     if (!empty($unserializedFormData[$i]->values->method) && $formMethodsClass !== false) {
                         if (method_exists($formMethodsClass, 'f_' . $unserializedFormData[$i]->values->method)) {
                             $className = $formMethodsClass;
                             $methodName = 'f_' . $unserializedFormData[$i]->values->method;
                             $data = $className::$methodName(isset($formMethodsParams[$unserializedFormData[$i]->values->method]) ? $formMethodsParams[$unserializedFormData[$i]->values->method] : array());
                             $unserializedFormData[$i]->options = $data;
                         }
                     }
                 }
             }
             $resultData = array('form_structure' => json_encode($unserializedFormData));
             return $resultData;
         } catch (Exception $err) {
             K_Debug::get()->addError('Model K_Tree_Types_Model not found');
         }
     } else {
         K_Debug::get()->addError('Element ' . $treeId . ' was not loaded. Node required');
     }
 }
Exemple #3
0
 public static function typeExists($type)
 {
     $typesModel = new K_Tree_Types_Model();
     $suchTypeCount = $typesModel->select()->where('`type_name`="' . $type . '"')->count();
     return $suchTypeCount;
 }
    public function updateElementAction()
    {
        $this->disableRender = true;
        $values = array();
        $treeTable = new K_Tree_Model();
        $elementId = $this->getParam('id');
        $node = K_tree::getNode($elementId);
        $typeModelName = 'Type_Model_' . ucfirst($node['tree_type']);
        $typeModel = new $typeModelName();
        $query = new K_Db_Query();
        $columns = $query->q('SHOW COLUMNS FROM `type_' . $node['tree_type'] . '`');
        foreach ($columns as $c_key => $column) {
            $columns[$c_key] = $column->toArray();
            foreach ($_POST as $p_key => $value) {
                if ('type_' . $node['tree_type'] . '_' . $p_key == $columns[$c_key]['Field']) {
                    $values['type_' . $node['tree_type'] . '_' . $p_key] = $value;
                } elseif ($columns[$c_key]['Field'] == 'type_' . $node['tree_type'] . '_aaccess') {
                    $values['type_' . $node['tree_type'] . '_aaccess'] = '';
                }
            }
        }
        $form = new K_Form();
        $uploadDir = WWW_PATH . '/upload';
        $typeFiles = $form->getFiles();
        $typesModel = new K_Tree_Types_Model();
        $typeData = $typesModel->select('type_fields')->where('`type_name`="' . $node['tree_type'] . '"')->fetchRow();
        $typeData = $typeData->toArray();
        $typeData = unserialize($typeData['type_fields']);
        $typeData = json_decode($typeData['form_structure']);
        if ($form->hasFiles()) {
            $typeFiles = $form->getFiles();
        }
        foreach ($typeData as $key => $value) {
            /*  если необходимо добавлять текущее время к дате 
                if($value->values->name  == 'date'){  
                    $dates =  K_date::dateParse($_POST['date']);
                    $values['type_' . $node['tree_type'] . '_date'] = date('Y-m-d',$dates['ts']) .' '.date('G:i:s',time()); 
                }           */
            // var_dump($typeFiles);
            if ($value->type == 'file' || $value->type == 'multifile') {
                if ($value->type == 'multifile') {
                    $currentTypeData = $typeModel->select()->where('`type_' . $node['tree_type'] . '_id`=' . (int) $node['tree_id'])->fetchRow();
                    $currentTypeData = $currentTypeData->toArray();
                    // массив файлов сохранённый в базе;
                    if ($filesArray = unserialize($currentTypeData['type_' . $node['tree_type'] . '_' . $value->values->name])) {
                        $i = 0;
                        $fcount = count($filesArray);
                        for ($i = 0; $i < $fcount; $i++) {
                            $isDelete = false;
                            if ($_POST[$value->values->name . '_delete_' . $i] || $typeFiles[$value->values->name . '_f_' . $i]) {
                                $currentLastLoadedFile = $uploadDir . '/' . $filesArray[$i]['f'];
                                if (is_file($currentLastLoadedFile)) {
                                    unlink($currentLastLoadedFile);
                                }
                                unset($filesArray[$i]);
                                $isDelete = true;
                            }
                            if (!$isDelete && $_POST[$value->values->name . '_t_' . $i]) {
                                $filesArray[$i]['t'] = $_POST[$value->values->name . '_t_' . $i];
                            }
                        }
                    }
                    foreach ($typeFiles as $k => $v) {
                        if (preg_match('/^' . $value->values->name . '_f_([0-9]*)$/s', $k, $m)) {
                            if (is_dir($uploadDir)) {
                                $pathData = $form->moveUploadedFile($k, $uploadDir, md5(time() . rand()), true);
                                /*
                                                            if ($value->values->filter)
                                                            {
                                                            $filters = explode('|', $value->values->filter);
                                                            
                                                            foreach ($filters as $filter)
                                                            {
                                                            $filter = explode(':', $filter);
                                                           
                                                            if ($filter[0] == 'image')
                                                            {
                                                            $pathData['path'] = '/images/'.$pathData['filename'].'&'.$filter[1];
                                                            }
                                                            }
                                                            }*/
                            } else {
                                $this->putAjax('Директории для загрузки не существует "' . $k . '"!');
                            }
                            if ($pathData) {
                                $fileOne['f'] = $pathData['filename'];
                                if (!empty($_POST[$value->values->name . '_t_' . $m[1]])) {
                                    $fileName = $_POST[$value->values->name . '_t_' . $m[1]];
                                } else {
                                    $fileName = $v['name'];
                                }
                                $fileOne['t'] = $fileName;
                                $filesArray[] = $fileOne;
                            } else {
                                $this->putAjax('Не удалось загрузить файл "' . $k . '"!');
                            }
                        }
                    }
                    //упорядочим массив
                    $filesArrayOrdered = array();
                    foreach ($filesArray as $v) {
                        if (isset($v)) {
                            $filesArrayOrdered[] = $v;
                        }
                    }
                    $values['type_' . $node['tree_type'] . '_' . $value->values->name] = count($filesArrayOrdered) ? serialize($filesArrayOrdered) : '';
                } else {
                    if ($_POST[$value->values->name . '_delete']) {
                        $currentTypeData = $typeModel->select()->where('`type_' . $node['tree_type'] . '_id`=' . (int) $node['tree_id'])->fetchRow();
                        $currentTypeData = $currentTypeData->toArray();
                        $currentLastLoadedFile = $uploadDir . '/' . $currentTypeData['type_' . $node['tree_type'] . '_' . $value->values->name];
                        if (is_file($currentLastLoadedFile)) {
                            unlink($currentLastLoadedFile);
                        }
                        $values['type_' . $node['tree_type'] . '_' . $value->values->name] = '';
                    } else {
                        if ($form->hasFiles() && isset($typeFiles[$value->values->name])) {
                            if (is_dir($uploadDir)) {
                                $currentTypeData = $typeModel->select()->where('`type_' . $node['tree_type'] . '_id`=' . (int) $node['tree_id'])->fetchRow();
                                $currentTypeData = $currentTypeData->toArray();
                                $currentLastLoadedFile = $uploadDir . '/' . $currentTypeData['type_' . $node['tree_type'] . '_' . $value->values->name];
                                if (is_file($currentLastLoadedFile)) {
                                    unlink($currentLastLoadedFile);
                                }
                                $pathData = $form->moveUploadedFile($value->values->name, $uploadDir, md5(time() . rand()), true);
                                /*
                                                            if ($value->values->filter)
                                                            {
                                                            $filters = explode('|', $value->values->filter);
                                                            
                                                            foreach ($filters as $filter)
                                                            {
                                                            $filter = explode(':', $filter);
                                                            
                                                            if ($filter[0] == 'image')
                                                            {
                                                            $pathData['path'] = '/images/'.$pathData['filename'].'&'.$filter[1];
                                                            }
                                                            }
                                                            }*/
                            } else {
                                $this->putAjax('Директории для загрузки не существует "' . $value->values->name . '"!');
                            }
                            if ($pathData) {
                                $values['type_' . $node['tree_type'] . '_' . $value->values->name] = $pathData['filename'];
                            } else {
                                $this->putAjax('Не удалось загрузить файл "' . $value->values->name . '"!');
                            }
                        } else {
                            if ($value->values->filter == 'required' && !isset($typeFiles[$value->values->name])) {
                                $this->putAjax('Файл "' . $value->values->name . '" не был загружен!');
                            } else {
                                if (!$values['type_' . $node['tree_type'] . '_' . $value->values->name]) {
                                    unset($values['type_' . $node['tree_type'] . '_' . $value->values->name]);
                                }
                            }
                        }
                    }
                }
            }
        }
        $typeModel->update($values, '`type_' . $node['tree_type'] . '_id`=' . (int) $elementId);
        echo 'Данные сохранены!
		<script type="text/javascript">
			$(document).ready(function(){
				setTimeout(function(){
				loadTabs(' . (int) $elementId . ');
				}, 2000);
			});
		</script>
		';
    }
Exemple #5
0
 public static function update($typeName, $desc, $fields, $formbuilderStructure = false)
 {
     if (!is_array($fields) || empty($fields)) {
         if (json_decode($fields) != null) {
             $fields = json_decode($fields);
             $fields = self::objectToArray($fields);
         } else {
             throw new Exception('Cannot modify fields in: ' . $typeName);
         }
     }
     $typesTable = new K_Tree_Types_Model();
     $typesTable->update(array('type_desc' => $desc, 'type_fields' => serialize($formbuilderStructure), 'type_modified' => time()), '`type_name` = "' . $typeName . '"');
     $query = new K_Db_Query();
     $columns = $query->q('SHOW COLUMNS FROM `type_' . $typeName . '`');
     $rightFields = array();
     $usedFields = array(0 => 'type_' . $typeName . '_id');
     $i = 0;
     foreach ($fields as $fieldId => $field) {
         if ($field['type'] == 'submit' || $field['type'] == 'reset') {
             continue;
         }
         $rightFields[$i] = 'type_' . $typeName . '_' . $field['values']['name'];
         $rightFieldParams[$i] = $field;
         $i++;
     }
     $idExists = false;
     foreach ($columns as $key => $column) {
         $columns[$key] = $column->toArray();
         if (!in_array($columns[$key]['Field'], $rightFields) && $columns[$key]['Field'] != 'type_' . $typeName . '_id' && $columns[$key]['Field'] != 'type_' . $typeName . '_pid') {
             $query->q('ALTER TABLE `type_' . $typeName . '` DROP `' . $columns[$key]['Field'] . '`');
         } else {
             $usedFields[] = $columns[$key]['Field'];
         }
         if ($columns[$key]['Field'] == 'type_' . $typeName . '_id') {
             $idExists = true;
         }
     }
     if (!$idExists) {
         $query->q('ALTER TABLE `type_' . $typeName . '` ADD `type_' . $typeName . '_id` INT UNSIGNED NOT NULL FIRST');
     }
     foreach ($rightFields as $key => $value) {
         if (!in_array($value, $usedFields)) {
             $usedFieldsValues = $usedFields;
             echo $qui = 'ALTER TABLE `type_' . $typeName . '` ADD `' . $value . '` ' . self::setType($rightFieldParams[$key]['type'], $rightFieldParams[$key]['vlds']) . ' NOT NULL AFTER `' . end($usedFieldsValues) . '`';
             $query->q($qui);
             $usedFields[] = 'type_' . $typeName . '_' . $value;
         }
     }
     return true;
 }
 public static function f_loadAllTypes($params = array())
 {
     $result = array();
     $typesTable = new K_Tree_Types_Model();
     $types = $typesTable->select()->fetchArray();
     $result[0] = new stdClass();
     $result[0]->value = 'Все';
     $result[0]->baseline = 'undefined';
     $result[1] = new stdClass();
     $result[1]->value = 'Нет';
     $result[1]->baseline = 'undefined';
     for ($i = 0, $j = 2; $i < sizeof($types); $i++, $j++) {
         $result[$j] = new stdClass();
         $result[$j]->value = $types[$i]['type_name'];
         $result[$j]->baseline = 'undefined';
     }
     return $result;
 }