public function createAction() { $this->disableRender = true; $form = new K_Form(); $uploadDir = WWW_PATH . '/adm/img/tree'; $allowedkeys = array('type_name', 'type_desc', 'type_fields', 'type_parent_elements', 'type_children_elements', 'ck_hmvc', 'stype'); $values = array(); $formData = $form->getData(); $formPostArray = isset($_POST['type_fields']) ? $_POST['type_fields'] : false; parse_str(substr($_POST['type_fields'], 1), $formPostArray); if ($formPostArray != false) { K_Loader::load('formbuilder', APP_PATH . '/plugins'); $formBuilder = new Formbuilder($formPostArray); $formArray = $formBuilder->get_encoded_form_array(); } else { throw new Exception("Не заданы поля для нового типа!"); } if (!$formData) { throw new Exception("Невозможно обработать форму без данных!"); } $seo = false; foreach ($formData as $elementKey => $elementValue) { if (in_array($elementKey, $allowedkeys)) { if (is_string($elementValue)) { $elementValue = trim($elementValue); } $values[$elementKey] = $elementValue; if ($elementKey == 'type_name') { $values[$elementKey] = preg_replace("/[^a-z]/", "", $elementValue); if (empty($values[$elementKey])) { throw new Exception("Название нового типа не соответствует шаблону!"); } } if ($elementKey == 'type_fields' && json_decode($formArray['form_structure']) == null) { if (!is_null($formArray['form_structure']) && (is_string($formArray['form_structure']) && $formArray['form_structure'] != 'null')) { throw new Exception("Поля переданы не в json-формате! " . json_last_error()); } } if ($elementKey == 'type_parent_elements' || $elementKey == 'type_children_elements') { if (is_array($elementValue)) { if (in_array(1, $elementValue)) { $elementValue = array('all'); } if (in_array(2, $elementValue)) { $elementValue = array(); } if (!in_array(1, $elementValue) && !in_array(2, $elementValue)) { $elementValue = self::convertToSelectElements($elementValue, $elementKey); } $values[$elementKey] = $elementValue; } } if (isset($_POST['seo']) && $_POST['seo']) { $seo = true; } } } if ($form->hasFiles()) { $pathData = $form->moveUploadedFile('icon', $uploadDir, $form->getElement('type_name')); if ($pathData == null) { throw new Exception("Не удалось загрузить иконку!"); } } else { throw new Exception("Не обнаружено иконки для типа!"); } K_Tree_Types::add($values['type_name'], $values['type_desc'], $formArray['form_structure'], $values['type_children_elements'], $values['type_parent_elements'], 'type', true, $formArray, $values['ck_hmvc'], $seo); echo 'Новый тип успешно добавлен!'; }