// обработчик изменения объекта public function proc_upd() { if (isset($_POST['objchange'])) { // Обработчик мультиформы $form = new ormMultiForm('change'); $class = ormClasses::get($form->getParam(0)); if (!$class->isInheritor('handbook') || $class->getSName() == 'handbook') { system::redirect('/constructor'); } $form->process(); if ($_POST['parram'] == 'apply') { system::redirect('/constructor/list/' . $class->id()); } else { system::redirect('/constructor'); } } else { // Обработчик для еденичного изменения класса $mini_action = substr(system::action(), -3); if (system::action() == "proc_upd") { // Говорим какой объект нужно изменить $obj = ormObjects::get(system::POST('obj_id')); } else { if (system::action() == "proc_add") { // Говорим какой объект нужно создать $obj = new ormObject(); $obj->setClass(system::POST('class_id')); } } // Если произошли ошибки, перенаправляем на главную страницу модуля if ($obj->issetErrors()) { system::redirect('/constructor/list/' . system::POST('class_id')); } // Присваиваем пришедшие значения полям в объекте $obj->loadFromPost($mini_action); // Сохраняем изменения $obj_id = $obj->save(); // Если объект не сохранился, выводим пользователю текст ошибки. if ($obj_id === false) { system::savePostToSession(); ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); ui::selectErrorFields($obj->getErrorFields()); $obj_id = empty($_POST['obj_id']) ? system::POST('class_id') : system::POST('obj_id'); system::redirect('/constructor/list_' . $mini_action . '/' . $obj_id); } // Если данные изменились корректно перенаправляем на соответствующию страницу if ($_POST['parram'] == 'apply') { system::redirect('/constructor/list_upd/' . $obj_id); } else { system::redirect('/constructor/list/' . $obj->getClass()->id()); } }
/** * @return null * @param ormObject $obj - ORM-Объект информация о котором заносится в журнал * @param string $text - Текст сообщения * @param const $state - Статус сообщения, используйте одну из контант: info - В порядке информации error - Ошибка warning - Предупреждение * @param string $type - Тип записи (для системных нужд, использовать не рекомендуется) 0 - обычная, 1 - информаци о помещении объекта в корзину * @desc Функция реализует добавление событий об изменение ORM-объектов в базу данных */ static function revue(ormObject $obj, $text, $state = error, $type = 0) { $state = system::checkVar($state, isInt); $type = system::checkVar($type, isInt); $text = system::checkVar($text, isString); db::q('INSERT INTO <<revue>> SET rev_state = "' . $state . '", rev_type = "' . $type . '", rev_obj_id = "' . $obj->id . '", rev_class_id = "' . $obj->getClass()->id() . '", rev_user_id = "' . user::get('id') . '", rev_user = "******", rev_datetime = "' . date('Y-m-d H:i:s') . '", rev_message = "' . $text . '", rev_ip = "' . $_SERVER['REMOTE_ADDR'] . '";'); }
public function upd() { // Указываем для какого объекта строить форму if (system::action() == "upd") { // Если это редактирование $obj = ormObjects::get(system::url(2)); // Заголовок страницы ui::setNaviBar(lang::get('TEXT_EDIT') . $obj->getClass()->getPadej(1)); ui::setHeader($obj->login); $class_list = ''; $group_id = system::issetUrl(3) ? system::url(3) : $obj->getParentId(); $right = 'user_proc_upd'; } else { if (system::action() == "add") { $class_name = system::issetUrl(3) ? system::url(3) : 'user'; // Если это добавление нового объекта $group_id = system::url(2); $right = 'user_proc_add'; $obj = new ormObject(); $obj->setParent($group_id); $obj->setClass($class_name); $obj->active = 1; // Формируем список классов для быстрого изменения класса объекта $types = ormClasses::get('user')->getAllInheritors(); $class_list = ''; while (list($id, $name) = each($types)) { if ($bc = ormClasses::get($id)) { $url = system::au() . '/users/user_add/' . $group_id . '/' . $bc->getSName(); $class_list .= '<a href="' . $url . '" style="line-height:17px;">' . $bc->getName() . '</a><br />'; } } // Заголовок страницы if ($group = ormObjects::get($group_id)) { ui::setNaviBar($group->name, '/users/userlist/' . $group_id); ui::setHeader(lang::get('TEXT_ADD') . $obj->getClass()->getPadej(1)); } } } // Если произошли ошибки, перенаправляем на главную страницу модуля if (!$obj->isInheritor('user')) { system::redirect('/users/userlist'); } // Устанавливаем кнопки для формы if (empty($group_id)) { ui::setCancelButton('/users/grouplist'); } else { ui::setCancelButton('/users/userlist/' . $group_id); } ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');"); // Создаем форму и выводим ее на страницу $form = new ormEditForm($obj, $right); $form->setORMList($class_list); // Изменяем вид поля "Модуль по умолчанию" $modules = user::getModulesForObject($obj); $form->replaceField('def_modul', ui::SelectBox('def_modul', $modules, $obj->def_modul, 400)); // Добавляем вкладку "Права доступа" $tab_content = '<div style="margin-left:20px;width: 950px;">' . lang::get('USERS_TEXT_RIGHT_HINT') . rights::getListForModuls($obj->id, 1) . '</div>'; $form->attachJavaScript('/css_mpanel/users_upd.js'); $form->newTabs(lang::get('USERS_TABS_RIGHT'), $tab_content); return $form->getHTML(); }
/** * @return Результат выполнения * @param ormObject $obj - Экзепляр ormObject * @param string $field - Имя обрабатываемого поля * @param integer $field_type - Тип ORM-поля * @param string $value - Значение для обработки * @param string $function - PHP-функция для обработки значения, если есть * @desc Обрабатываем значение */ protected function processValue($obj, $field, $field_type, $value, $function) { // Получаем данные класса if ($field == 'class_id') { $value = $obj->getClass()->id(); } elseif ($field == 'class') { $value = $obj->getClass()->getSName(); } elseif ($field == 'class_name') { $value = $obj->getClass()->getName(); } // Обрабатываем значение if (!empty($function)) { $value = $this->exeFunction($value, $obj, $function); } else { if ($field == 'parents') { // Получаем список родителей $value = $this->viewParents($value, $obj); } else { if ($field == 'children') { // Получаем список подобъектов $value = $this->viewChildren($value, $obj); } else { if (!empty($field_type)) { if ($field_type == 20) { $value = $this->viewUrl($value, $obj); } else { if ($field_type == 25) { $value = $this->viewDate($value, $obj); } else { if ($field_type == 30) { $value = $this->viewTime($value, $obj); } else { if ($field_type == 32) { $value = $this->viewDateTime($value, $obj); } else { if ($field_type == 50) { $value = $this->viewBool($value, $obj); } else { if ($field_type == 70 || $field_type == 80 || $field_type == 85) { $value = $this->viewFile($value, $obj); } else { if ($field_type == 73) { $value = $this->viewFiles($value, $obj); } else { if ($field_type == 75) { $value = $this->viewImage($value, $obj); } else { if ($field_type == 90) { $value = $this->viewList($value, $obj); } else { if ($field_type == 95) { $value = $this->viewListMore($value, $obj); } } } } } } } } } } } } } } return $value; }