public function defAction() { // Формируем список классов для быстрого добавления $types = ormClasses::get('user')->getAllInheritors(); if (count($types) > 1) { $class_list = ''; while (list($id, $name) = each($types)) { $bclass = ormClasses::get($id); $class_list .= '<li><a href="' . system::au() . '/users/user_add/0/' . $bclass->getSName() . '" >' . $bclass->getName() . '</a></li>'; } $java = '<script> $("#usel").parent().css("width", "150px"); </script>'; ui::newButton(lang::get('BTN_NEW_USER'), "/users/user_add", 'class_list', '<ul id="usel">' . $class_list . '</ul>' . $java); } else { ui::newButton(lang::get('BTN_NEW_USER'), "/users/user_add"); } ui::newButton(lang::get('BTN_NEW_UGROUP'), "/users/group_add"); $sel = new ormSelect('user_group'); $sel->orderBy('name', asc); $table = new uiTable($sel); $table->showSearch(true); $table->addColumn('name', lang::get('USERS_TABLE_FIELD_5'), 0, true); $table->addColumn('children', lang::get('USERS_TABLE_FIELD_6'), 0, true, true, 'count'); $table->defaultRight('userlist'); $table->addRight('userlist', 'users', single); $table->addRight('group_upd', 'edit', single); $table->addRight('group_act', 'active', multi); $table->addRight('group_del', 'drop', multi); $table->setDelMessage(lang::get('USERS_DEL_TITLE2'), lang::get('USERS_DEL_TEXT2')); $table->setMultiDelMessage(lang::get('USERS_DEL_TITLE_MULTI2'), lang::get('USERS_DEL_TEXT_MULTI2')); return $table->getHTML(); }
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('/reference'); } if (!user::issetRight('val_add')) { $form->withoutAdditions(); } if (!user::issetRight('val_del')) { $form->withoutRemoving(); } $form->process(); if ($_POST['parram'] == 'apply') { system::redirect('/reference/values/' . $class->id()); } else { system::redirect('/reference'); } } 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('/reference/values/' . 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('/reference/val_' . $mini_action . '/' . $obj_id); } // Если данные изменились корректно перенаправляем на соответствующию страницу if ($_POST['parram'] == 'apply') { system::redirect('/reference/val_upd/' . $obj_id); } else { system::redirect('/reference/values/' . $obj->getClass()->id()); } } }
public function defAction() { if (!system::issetUrl(2)) { system::redirect('/reference'); } if ($class = ormClasses::get(system::url(2))) { if (!$class->isInheritor('handbook') || $class->getSName() == 'handbook') { system::redirect('/reference'); } ui::setNaviBar(lang::right('values')); ui::setHeader($class->getName()); ui::setBackButton('/reference'); if (user::issetRight('val_upd')) { $count = 0; $fields = $class->loadFields(); foreach ($fields as $field) { if ($field['f_view'] == 1) { $count++; } } } else { $count = 4; } $sel = new ormSelect($class->getSName()); if ($count > 5) { ui::newButton(lang::get('BTN_NEW_LIST'), '/reference/val_add/' . system::url(2)); $table = new uiTable($sel); $table->showSearch(true); $table->addColumn('name', 'Имя объекта'); $table->addColumn('id', '#', 200); $table->defaultRight('val_upd'); $table->addRight('val_upd', 'edit', single); $table->addRight('val_del', 'drop', multi); return $table->getHTML(); } else { ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');"); $form = new ormMultiForm('change'); $form->setData($sel); $form->showColumnID(); $form->setRight('val_proc_upd'); $form->moreParam(system::url(2)); if (!user::issetRight('val_upd') || !user::issetRight('val_add')) { $form->withoutAdditions(); } if (!user::issetRight('val_del')) { $form->withoutRemoving(); } return $form->getHTML(); } } else { system::redirect('/reference'); } }
private function createTree($parent, $TEMPLATE) { $items = ''; while ($obj = ormClasses::getInheritor($parent)) { page::assign('subitem', $this->createTree($obj->id(), $TEMPLATE)); page::assign('obj.id', $obj->id()); page::assign('obj.url', system::au() . '/constructor/class_upd/' . $obj->id()); page::assign('obj.name', $obj->getName()); page::assign('obj.sname', $obj->getSName()); page::assign('obj.parent', $obj->getParentId()); $pach = '/css_mpanel/tree/images/classes/'; $ico = file_exists(ROOT_DIR . $pach . $obj->getSName() . '.png') ? $obj->getSName() . '.png' : 'file1.gif'; page::assign('obj.ico', $pach . $ico); $rights = ''; reset($this->rights); while (list($right, $pict) = each($this->rights)) { $modul = $right == 'values' ? 'reference' : 'constructor'; if (user::issetRight($right, $modul) || $pict == 'empty') { if ($pict == 'empty') { $rights .= page::parse($TEMPLATE['empty_right']); } else { $parse = true; if ($right == 'values') { $parse = $obj->isInheritor('handbook') && $obj->getSName() != 'handbook'; } if ($right == 'class_del') { $parse = !$obj->isSystem(); } if ($parse) { $del_button = $right == 'class_del' ? 'class="del_button"' : ''; page::assign('del_button', $del_button); page::assign('right.url', system::au() . '/' . $modul . '/' . $right); page::assign('right.title', lang::right($right, $modul)); page::assign('right.class', $pict); $rights .= page::parse($TEMPLATE['right']); } else { $rights .= page::parse($TEMPLATE['empty_right']); } } } } page::assign('rights', $rights); $items .= page::parse($TEMPLATE['item']); } if (!empty($items)) { page::assign('items', $items); return page::parse($TEMPLATE['frame_items']); } }
public function defAction() { if (file_exists(MODUL_DIR . '/structure/template/settings.tpl')) { include MODUL_DIR . '/structure/template/settings.tpl'; } // ui::newButton(lang::get('BTN_SAVE_ONLY'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');"); if (isset($_SESSION['STRUCTURE_LIST_FLAG']) && $_SESSION['STRUCTURE_LIST_FLAG']) { ui::setCancelButton('/structure/list'); } else { ui::setCancelButton('/structure/tree'); } // Основные настройки page::assignArray(lang::get('STRUCTURE_FORM_FIELD')); page::assign('title_prefix', reg::getKey(ormPages::getPrefix() . '/title_prefix')); page::assign('keywords', reg::getKey(ormPages::getPrefix() . '/keywords')); page::assign('description', reg::getKey(ormPages::getPrefix() . '/description')); ui::CheckBox('cur_date', 1, reg::getKey('/structure/' . domains::curId() . '/cur_date'), lang::get('STRUCTURE_FORM_FIELD', 4)); ui::CheckBox('no_view_no_edit', 1, reg::getKey(ormPages::getPrefix() . '/no_view_no_edit'), lang::get('STRUCTURE_FORM_FIELD', 7)); ui::CheckBox('view_as_tree', 1, reg::getKey(ormPages::getPrefix() . '/view_as_tree'), lang::get('STRUCTURE_FORM_FIELD', 18)); ui::CheckBox('auto_index', 1, reg::getKey(ormPages::getPrefix('search') . '/auto_index'), lang::get('STRUCTURE_FORM_FIELD', 19)); $file = ROOT_DIR . '/robots_part_' . domains::curDomain()->getName() . '.txt'; $robots = file_exists($file) ? file_get_contents($file) : ''; page::assign('robots', $robots); // Форма редактирования шаблонов страниц $form = new uiMultiForm('page_tpl'); $form->insideForm(); $form->setData(templates::getByDestination()); $form->addColumn('t_name', lang::get('STRUCTURE_TABLE_FIELD_5'), 300); $form->addColumn('t_file', lang::get('STRUCTURE_TABLE_FIELD_6'), 300, lang::get('STRUCTURE_TABLE_FIELD_7')); page::assign('page_tpl', $form->getHTML()); // Форма редактирования шаблонов объектов $form = new uiMultiForm('obj_tpl'); $form->insideForm(); $form->setData(templates::getByDestination(1)); $form->addColumn('t_name', lang::get('STRUCTURE_TABLE_FIELD_5'), 300); $form->addColumn('t_file', lang::get('STRUCTURE_TABLE_FIELD_6'), 300, lang::get('STRUCTURE_TABLE_FIELD_7')); page::assign('obj_tpl', $form->getHTML()); // Управление отображением $classes = ormClasses::getPagesClassList(); ui::SelectBox('no_view_classes', $classes, reg::getList(ormPages::getPrefix() . '/no_view'), 600, ' ', '', 'selectbox_multi_big'); ui::SelectBox('no_edit_classes', $classes, reg::getList(ormPages::getPrefix() . '/no_edit'), 600, ' ', '', 'selectbox_multi_big'); return page::parse($TEMPLATE['frame']); }
public function defAction() { // Определяем какие кнопки будут $types = ormClasses::get('user')->getAllInheritors(); if (count($types) > 1) { $class_list = ''; while (list($id, $name) = each($types)) { $bclass = ormClasses::get($id); $class_list .= '<a href="' . system::au() . '/users/user_add/' . system::url(2) . '/' . $bclass->getSName() . '" style="line-height:17px;">' . $bclass->getName() . '</a><br />'; } ui::newButton(lang::get('BTN_NEW_USER'), "/users/user_add/" . system::url(2), 'class_list', $class_list); } else { ui::newButton(lang::get('BTN_NEW_USER'), "/users/user_add/" . system::url(2)); } ui::setBackButton('/users'); // Заголовок страницы if ($group = ormObjects::get(system::url(2))) { ui::setNaviBar($group->name); ui::setHeader(lang::right('userlist')); } // Выбираем пользователей $sel = new ormSelect('user'); if (system::issetUrl(2) && system::url(2) != 0) { $sel->where('parents', '=', system::url(2)); } $sel->orderBy('create_date', desc); // Строим таблицу $table = new uiTable($sel); $table->formatValues(true); $table->showSearch(true); $table->addColumn('login', lang::get('USERS_TABLE_FIELD_1'), 0, true); $table->addColumn('surname name', lang::get('USERS_TABLE_FIELD_2'), 0, true); $table->addColumn('create_date', lang::get('USERS_TABLE_FIELD_7'), 0, true, true, '', 1); $table->addColumn('last_visit', lang::get('USERS_TABLE_FIELD_3'), 0, true, true, '', 1); $table->addColumn('parents', lang::get('USERS_TABLE_FIELD_4'), 0, false, true); $table->defaultRight('user_upd'); $table->addRight('user_upd', 'edit', single); $table->addRight('user_act', 'active', multi); $table->addRight('user_del', 'drop', multi); $table->setDelMessage(lang::get('USERS_DEL_TITLE'), lang::get('USERS_DEL_TEXT')); $table->setMultiDelMessage(lang::get('USERS_DEL_TITLE_MULTI'), lang::get('USERS_DEL_TEXT_MULTI')); return $table->getHTML(); }
public function defAction() { $list = array(); if ($class = ormClasses::get('handbook')) { $mas = $class->getAllInheritors(); while (list($id, $sname) = each($mas)) { if ($sname != 'handbook') { $h = ormClasses::get($sname); $list[] = array('id' => $id, 'empty' => '', 'name' => $h->getName(), 'sname' => $sname); } } } $table = new uiTable($list, 1); $table->addColumn('empty', '', 20); $table->addColumn('name', 'Название справочника', 300); $table->addColumn('sname', 'Системное назавание', 300, 0, 0); $table->defaultRight('values'); $table->addRight('values', 'edit', single); return $table->getHTML(); }
public function getObject() { if (!isset($this->cache['data'])) { $this->cache['data'] = $this->createQuery(1); } if (!isset($this->cache['num'])) { $this->reset(); } $this->cache['num']++; if ($this->cache['num'] < count($this->cache['data'])) { $obj_data = $this->cache['data'][$this->cache['num']]; if (($class = ormClasses::get($obj_data['o_class_id'])) && $class->isPage()) { return ormPages::get($obj_data); } else { return ormObjects::get($obj_data); } } }
private function columns($TEMPLATE) { $columns = ''; reset($this->columns); while (list($key, $column) = each($this->columns)) { if (!isset($this->del_columns[$column['field']]) || $this->del_columns[$column['field']] != $this->count) { if ($column['title'] === 0) { $column['title'] = ormClasses::get($this->select->getObjectsClass())->getFieldName($column['field']); } page::assign('title', $column['title']); $size = !empty($column['size']) ? 'width="' . $column['size'] . '"' : ''; page::assign('width', $size); if ($column['sortable'] && !strpos($column['field'], ' ') && ($column['field'] != 'children' && $column['field'] != 'parents')) { if ($this->isSelection && $this->select->orderField() == $column['field']) { $parram = $this->select->orderParram(); page::assign('sort', $parram); if ($parram == 'asc') { page::assign('sort2', 'desc'); } else { if ($parram == 'desc') { page::assign('sort2', 'asc'); } } } else { page::assign('sort', 'none'); if ($column['first_order'] == 0) { page::assign('sort2', 'asc'); } else { page::assign('sort2', 'desc'); } } page::assign('field', $column['field']); $sortable = page::parse($TEMPLATE['column_order']); } else { $sortable = ''; } page::assign('column_order', $sortable); $columns .= page::parse($TEMPLATE['column']); } } page::assign('columns', $columns); }
/** * @return array( 'count' => 0, // Общее количество страниц 'pages' => array() // Результат поиска. Список ID страниц с учетом параметра $limit ); * @param array $tags - список ID тегов * @param int $limit - Максимальное количество страниц в результатах поиска * @param int $start_pos - Порядковый номер страницы, с которой начнется вывод результатов * @param array $classes_filter - Список ORM-классов, по которым ведется поиск * @desc Формирует список страниц имеющих указанные теги. */ static function find($tags, $limit = 10, $start_pos = 0, $classes_filter = array()) { if (!empty($tags)) { $q_tags = ''; foreach ($tags as $id) { $or = empty($q_tags) ? '' : ' AND '; $q_tags .= $or . 't_id = "' . $id . '"'; } // Генерируем sql-запрос if (!empty($q_tags)) { // Устанавливаем видимость объектов с учестом прав доступа пользователя $state = system::$isAdmin && reg::getKey(ormPages::getPrefix() . '/no_view_no_edit') ? '= 2' : '> 0'; $groups = ''; $m = user::getGroups(); while (list($key, $val) = each($m)) { $groups .= ' or r_group_id = "' . $key . '"'; } // Формируем фильтр по классам $cf = ''; if (!empty($classes_filter) && is_array($classes_filter)) { while (list($num, $class) = each($classes_filter)) { if ($c = ormClasses::get($class)) { $or = empty($cf) ? '' : ' OR '; $cf .= $or . 'o_class_id = "' . $c->id() . '"'; } } if (!empty($cf)) { $cf = 'and (' . $cf . ')'; } } // Получаем количество объектов $sql = 'SELECT count(tr_obj_id) FROM (SELECT tr_obj_id FROM <<tags>>, <<tags_rels>>, <<rights>>, <<objects>>, <<pages>> WHERE t_id = tr_tag_id and tr_obj_id = r_obj_id and r_state ' . $state . ' and ( r_group_id is NULL or r_group_id = "' . user::get('id') . '" ' . $groups . ' ) and (' . $q_tags . ') and tr_obj_id = o_id and o_id = p_obj_id and active = 1 ' . $cf . ' GROUP BY tr_obj_id) t;'; $count = db::q($sql, value); // Получаем список объектов if ($count > 0) { $sql = 'SELECT tr_obj_id page_id FROM <<tags>>, <<tags_rels>>, <<rights>>, <<objects>>, <<pages>> WHERE t_id = tr_tag_id and tr_obj_id = r_obj_id and r_state ' . $state . ' and ( r_group_id is NULL or r_group_id = "' . user::get('id') . '" ' . $groups . ' ) and (' . $q_tags . ') and tr_obj_id = o_id and o_id = p_obj_id and active = 1 ' . $cf . ' GROUP BY tr_obj_id'; if (empty($start_pos)) { $sql .= ' LIMIT ' . $limit . ';'; } else { $sql .= ' LIMIT ' . $start_pos . ', ' . $limit . ';'; } $mas = db::q($sql, records); } else { $mas = array(); } return array('count' => $count, 'pages' => $mas); } } }
function getClassName($val, $obj) { if ($class = ormClasses::get($val)) { return $class->getName(); } }
/** * @return null * @param integer $obj_id - ID объекта, если не указан - дальнейшая работа в режиме добавления. * @param boolean $with_rights - Если TRUE, будут учитываться права текущего пользователя. * @desc Создание объекта и получение данных. */ public function __construct($obj_id = 0, $with_rights = true) { if (!empty($obj_id) && is_numeric($obj_id)) { $obj_id = system::checkVar($obj_id, isInt); if ($with_rights) { $where = ormPages::getSqlForRights(); $table = ', <<rights>>'; $select = ', MAX(r_state) r_state'; } else { $where = $table = $select = ''; } $sql = 'SELECT *' . $select . ' FROM <<objects>>, <<pages>>' . $table . ' WHERE o_id = "' . $obj_id . '" and p_obj_id = o_id' . $where . ';'; $row = db::q($sql, record); if ($row !== false && !empty($row)) { $this->class = ormClasses::get($row['o_class_id']); if ($this->class->isPage()) { $this->id = $obj_id; $this->name = $row['o_name']; $this->create_date = $row['o_create_date']; $this->change_date = $row['o_change_date']; $this->to_trash = $row['o_to_trash']; $this->right_state = isset($row['r_state']) ? $row['r_state'] : 0; // Информация о странице while (list($key, $val) = each($row)) { if (in_array($key, $this->page_fields)) { $this->cur_prop[$key] = $val; } } } else { $this->newError(44, 'Вы пытаетесь загрузить обычный объект с ID = ' . $obj_id . '. Используйте для этого ormObjects::get();!'); } } else { $this->newError(45, 'Невозможно загрузить данные ORM-страницы!'); } } else { if (is_array($obj_id) && isset($obj_id['o_id']) && isset($obj_id['o_class_id'])) { /* Загрузка данных в объект из другого источника (ormSelect::getObject(), ormPageCollection::getPageOfSection()). Используется для уменьшения дублирующих запросов, например при выборке объектов одного класса. */ $this->id = system::checkVar($obj_id['o_id'], isInt); $this->class = ormClasses::get($obj_id['o_class_id']); if ($this->class->isPage()) { if (isset($obj_id['o_name'])) { $this->name = system::checkVar($obj_id['o_name'], isString); } if (isset($obj_id['o_create_date'])) { $this->create_date = $obj_id['o_create_date']; } if (isset($obj_id['o_change_date'])) { $this->change_date = $obj_id['o_change_date']; } if (isset($obj_id['o_to_trash'])) { $this->to_trash = $obj_id['o_to_trash']; } if (isset($obj_id['r_state'])) { $this->right_state = $obj_id['r_state']; } // Установка значений основных полей $this->loadFields(); while (list($key, $field) = each($this->fields)) { if ($field['f_type'] > 1 && $field['f_type'] < 90) { $this->cur_prop[$key] = isset($obj_id[$key]) ? $obj_id[$key] : $this->empty; } } // Информация о странице while (list($key, $val) = each($obj_id)) { if (in_array($key, $this->page_fields)) { $this->cur_prop[$key] = $val; } } } else { $this->newError(44, 'Вы пытаетесь загрузить обычный объект с ID = ' . $obj_id['o_id'] . '. Используйте для этого ormObjects::get();!'); } } } }
/** * @return HTML * @param int $obj_id_or_class - ID раздела сайта или системное название ORM-класса. * @param string $group_name - Название группы, поля которой необходимо вывести. Если 0, выводятся все видимые поля. * @param boolean $spec - Если 0, выводятся все видимые поля. Если 1, только поля помеченные галочкой "специальное". * @param string $templ_name - Шаблон оформления, по которому будет строится список полей * @desc МАКРОС: Вернет список полей (значений) раздела сайта в соответствующем оформлении */ public function fieldList($obj_id_or_class, $group_name = 0, $spec = 0, $templ_name = '_fields_list') { $templ_file = '/structure/objects/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('structure.fieldList', $templ_file); } $fields = $obj = ''; // Определяем класс if (is_numeric($obj_id_or_class) && ($obj = ormPages::get($obj_id_or_class))) { $class = $obj->getClass(); } else { $class = ormClasses::get($obj_id_or_class); } // Получаем список полей if ($class instanceof ormClass) { $spec = !empty($spec) ? $class->loadSpecFields() : $class->loadFields(); } while (list($sname, $field) = each($spec)) { if (empty($group_name) || $group_name == $field['fg_sname']) { if (empty($field['f_type'])) { // Разделители полей page::assign('size', $field['f_max_size']); page::assign('title', $field['f_name']); if (!empty($field['f_name']) && isset($TEMPLATE['separator_text'])) { $fields .= page::parse($TEMPLATE['separator_text']); } else { $fields .= page::parse($TEMPLATE['separator']); } } else { // Парсим поля страницы page::assign('field.id', $field['f_id']); page::assign('field.name', $field['f_name']); page::assign('field.sname', $sname); if ($obj instanceof ormObject) { page::assign('field.value', $obj->__get($sname)); page::assign('field._value', $obj->__get('_' . $sname)); } if (isset($TEMPLATE['field_' . $sname])) { $fields .= page::parse($TEMPLATE['field_' . $sname]); } else { if ($field['f_type'] > 89 && $field['f_type'] < 101 && isset($TEMPLATE['field_list'])) { $fields .= page::parse($TEMPLATE['field_list']); } else { $fields .= page::parse($TEMPLATE['field']); } } } } } if (!empty($fields)) { page::assign('fields', $fields); return page::parse($TEMPLATE['frame']); } }
public function upd() { // Проверяем наличие шаблонов $templs = templates::getByDestination(0, true); if (empty($templs)) { ui::MessageBox(lang::get('STRUCTURE_TEMPL_NOT_FOUND'), lang::get('STRUCTURE_TEMPL_NOT_FOUND2')); system::redirect('/structure/settings#tabs-page_tpl'); } // Указываем для какого объекта строить форму if (system::action() == "upd") { // Изменение страницы if (system::url(2) == 0) { system::redirect('/structure/settings'); } $obj = ormPages::get(system::url(2)); if ($obj instanceof ormPage) { $parent_id = $obj->getParentId(); ui::setHeader($obj->name); ui::setNaviBar(lang::get('TEXT_EDIT') . $obj->getClass()->getPadej(1)); } $class_list = ''; $right = 'page_proc_upd'; } else { if (system::action() == "add") { // Добавление страницы $class_name = system::issetUrl(3) ? system::url(3) : ormPages::getPopularClass(system::url(2)); if (!($class = ormClasses::get($class_name))) { system::redirect('/structure/tree'); } if (in_array($class->id(), reg::getList(ormPages::getPrefix() . '/no_edit'))) { system::redirect('/structure/tree'); } if (system::issetUrl(2) && system::url(2) != 0) { $parent = ormPages::get(system::url(2)); ui::setNaviBar($parent->name, '/structure/list/' . $parent->id); } ui::setHeader(lang::get('TEXT_ADD') . $class->getPadej(1)); // Если это добавление нового объекта $obj = new ormPage(); $obj->setParent(system::url(2)); $obj->setClass($class_name); $obj->view_in_menu = 1; $obj->view_submenu = 1; $obj->active = 1; $obj->in_search = 1; $obj->in_index = 1; $obj->publ_date = date('d.m.Y H:i:s'); // Наследуем параметры от родителя // Шаблоны $parent_id = $obj->issetParents() ? $obj->getParentId() : 0; $templ = templates::getPopularForSection($parent_id); $def_templ_1 = $obj->getClass()->getDefTemplate(0); $def_templ_2 = $obj->getClass()->getDefTemplate(1); $obj->template_id = $def_templ_1 != 0 ? $def_templ_1 : $templ[0]; $obj->template2_id = $def_templ_2 != 0 ? $def_templ_2 : $templ[1]; $parent_id = system::url(2); // Количество элементов на странице $this->getPopularValue($obj, 'number_of_items', 10); // Способ сортировки $this->getPopularValue($obj, 'order_by', ''); // Формируем список классов для быстрого изменения класса объекта $types = ormClasses::get('section')->getAllInheritors(); $no_edit = reg::getList(ormPages::getPrefix() . '/no_edit'); $elem_list = $cat_list = ''; while (list($id, $name) = each($types)) { if (!in_array($id, $no_edit)) { $bc = ormClasses::get($id); $pach = '/css_mpanel/tree/images/'; $ico = 'classes/' . $bc->getSName() . '.png'; if (!file_exists(ROOT_DIR . $pach . $ico)) { $ico = 'file1.gif'; } if ($bc->isInheritor('category') || $bc->getSName() == 'section') { $cat_list .= ' <li><img src="' . $pach . $ico . '"> <a href="' . system::au() . '/structure/page_add/' . $parent_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>'; } else { $elem_list .= ' <li ><img src="' . $pach . $ico . '"> <a href="' . system::au() . '/structure/page_add/' . $parent_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>'; } } } $class_list = '<ul>' . $cat_list . '</ul><ul>' . $elem_list . '</ul>'; $right = 'page_proc_add'; } } page::assign('right', $right); // Если произошли ошибки, перенаправляем на главную страницу модуля if (!$obj instanceof ormPage || $obj->issetErrors()) { system::redirect('/structure/tree'); } // Устанавливаем кнопки для формы if (isset($_SESSION['STRUCTURE_LIST_FLAG']) && $_SESSION['STRUCTURE_LIST_FLAG']) { ui::setCancelButton('/structure/list/' . $parent_id); } else { ui::setCancelButton('/structure/tree'); } if ($obj->isEditable()) { 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); $form->addPadding('param', 9, 1); // Выбор шаблона оформления страниц $form->addField('param', 10, '', lang::get('STRUCTURE_TEMPLATE'), $this->getTemplateBox('template_id', $templs, $obj->template_id)); // Выбор шаблона оформления объектов $form->addField('param', 11, '', lang::get('STRUCTURE_TEMPLATE2'), $this->getTemplateBox('template2_id', templates::getByDestination(1, true), $obj->template2_id, 1)); // Выводим ID и URL страницы $this->getPageInfo($obj, $form); $form->newTabs(lang::get('STRUCTURE_TABS_RIGHT'), rights::getListForObject($obj, system::action())); //$form->newTabs(lang::get('STRUCTURE_TABS_RESTORE'), ' '); return $form->getHTML(); }
/** * @return array( 'count' => 0, // Общее количество страниц 'pages' => array() // Результат поиска. Список ID страниц с учетом параметра $limit ); * @param string $words - Поисковой запрос * @param int $limit - Максимальное количество страниц в результатах поиска * @param int $start_pos - Порядковый номер страницы, с которой начнется вывод результатов * @param array $classes_filter - Список ORM-классов, по которым ведется поиск * @desc Формирует список страниц удовлетворяющих поисковой фразе. */ static function find($words, $limit = 10, $start_pos = 0, $classes_filter = array()) { if (!empty($words)) { // Разбиваем запрос на отдельные слова $tmp = self::splitString($words); $q_words = ''; foreach ($tmp as $word) { $word = self::morphGetRoot($word); if (!empty($word) && (strlen($word) > 2 || is_numeric($word))) { $or = empty($q_words) ? '' : ' OR '; $q_words .= $or . 'w_name Like "' . $word . '%"'; } } // Генерируем sql-запрос if (!empty($q_words)) { // Устанавливаем видимость объектов с учестом прав доступа пользователя $state = system::$isAdmin && reg::getKey(ormPages::getPrefix() . '/no_view_no_edit') ? '= 2' : '> 0'; $groups = ''; $m = user::getGroups(); while (list($key, $val) = each($m)) { $groups .= ' or r_group_id = "' . $key . '"'; } // Формируем фильтр по классам $cf = ''; if (!empty($classes_filter) && is_array($classes_filter)) { while (list($num, $class) = each($classes_filter)) { if ($c = ormClasses::get($class)) { $or = empty($cf) ? '' : ' OR '; $cf .= $or . 'o_class_id = "' . $c->id() . '"'; } } if (!empty($cf)) { $cf = 'and (' . $cf . ')'; } } // Получаем количество объектов $sql = 'SELECT count(sr_obj_id) FROM (SELECT sr_obj_id FROM <<search_words>>, <<search_rankings>>, <<rights>>, <<objects>>, <<pages>> WHERE w_id = sr_word_id and sr_lang_id = "' . languages::curId() . '" and sr_domain_id = "' . domains::curId() . '" and sr_obj_id = r_obj_id and r_state ' . $state . ' and ( r_group_id is NULL or r_group_id = "' . user::get('id') . '" ' . $groups . ' ) and (' . $q_words . ') and sr_obj_id = o_id and o_id = p_obj_id and active = 1 ' . $cf . ' GROUP BY sr_obj_id) t;'; $count = db::q($sql, value); // Получаем список объектов if ($count > 0) { $sql = 'SELECT sr_obj_id page_id, SUM(sr_rank) rank FROM <<search_words>>, <<search_rankings>>, <<rights>>, <<objects>>, <<pages>> WHERE w_id = sr_word_id and sr_lang_id = "' . languages::curId() . '" and sr_domain_id = "' . domains::curId() . '" and sr_obj_id = r_obj_id and r_state ' . $state . ' and ( r_group_id is NULL or r_group_id = "' . user::get('id') . '" ' . $groups . ' ) and (' . $q_words . ') and sr_obj_id = o_id and o_id = p_obj_id and active = 1 ' . $cf . ' GROUP BY sr_obj_id ORDER BY SUM(sr_rank) DESC'; if (empty($start_pos)) { $sql .= ' LIMIT ' . $limit . ';'; } else { $sql .= ' LIMIT ' . $start_pos . ', ' . $limit . ';'; } $mas = db::q($sql, records); } else { $mas = array(); } return array('count' => $count, 'pages' => $mas); } } }
public function defAction() { $_SESSION['STRUCTURE_LIST_FLAG'] = 1; // Если страниц нет, предлагаем добавить новую if (ormPages::getCountOfSection(0) == 0) { ui::MessageBox(lang::get('STRUCTURE_PAGE_NOT_FOUND'), lang::get('STRUCTURE_PAGE_NOT_FOUND2')); system::redirect('/structure/page_add'); } $obj_id = system::issetUrl(2) ? system::url(2) : 0; function getPageNotice($page) { $notice = ''; if ($page->is_home_page) { $notice = lang::get('STRUCTURE_TREE_TEXT12'); } if ($page->other_link != '') { $notice = lang::get('STRUCTURE_TREE_TEXT32'); } if (!$page->view_in_menu) { if (!empty($notice)) { $notice .= ', '; } $notice .= lang::get('STRUCTURE_TREE_TEXT22'); } if (!empty($notice)) { return '(' . $notice . ')'; } else { return ''; } } // Вывод дерева объектов $tree = new ormTree(328, 57); $tree->setClass('ormPage'); $tree->setRoot(0, reg::getKey(ormPages::getPrefix() . '/title_prefix'), 'list/0'); $tree->setNotice('getPageNotice'); $tree->setRightEdit('list'); $tree->setRightActive('page_proc_act'); $tree->setRightRemove('page_proc_moveto'); $tree->setRightAjaxLoad('list'); $tree->setDelMessage(lang::get('STRUCTURE_DEL_TITLE'), lang::get('STRUCTURE_DEL_TEXT')); $tree->addRight('page_upd', lang::right('page_upd'), 'compose_image'); $tree->addRight('page_add', lang::right('page_add'), 'add_image'); //, 'class_list', $class_list ui::setLeftPanel($tree->getHTML()); // Заголовок страницы ui::setHeader(lang::right('tree')); if (!empty($obj_id) && ($obj = ormPages::get($obj_id))) { ui::setNaviBar(lang::right('list')); ui::setHeader($obj->name); ui::setBackButton('/structure/list/' . $obj->getParentId()); } else { $obj_id = 0; } // Формируем список классов для быстрого добавления $class_name = ormPages::getPopularClass($obj_id); $class = ormClasses::get($class_name); $types = ormClasses::get('section')->getAllInheritors(); $no_edit = reg::getList(ormPages::getPrefix() . '/no_edit'); $elem_list = $cat_list = ''; while (list($id, $name) = each($types)) { if (!in_array($id, $no_edit)) { $bc = ormClasses::get($id); $pach = '/css_mpanel/tree/images/'; $ico = 'classes/' . $bc->getSName() . '.png'; if (!file_exists(ROOT_DIR . $pach . $ico)) { $ico = 'file1.gif'; } if ($bc->isInheritor('category') || $bc->getSName() == 'section') { $cat_list .= ' <li><img src="' . $pach . $ico . '"> <a href="' . system::au() . '/structure/page_add/' . $obj_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>'; } else { $elem_list .= ' <li ><img src="' . $pach . $ico . '"> <a href="' . system::au() . '/structure/page_add/' . $obj_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>'; } } } $class_list = '<ul>' . $cat_list . '</ul><ul>' . $elem_list . '</ul>'; ui::newButton(lang::get('PANEL_BTN_ADD_PART') . $class->getPadej(0), "/structure/page_add/" . $obj_id, 'class_list', $class_list); // Формируем выборку страниц для таблицы $sel = new ormSelect(); $sel->findInPages(); $sel->where('parents', '=', $obj_id); // Определяем способ сортировки списка $order_by = !empty($obj_id) ? $obj->order_by : ''; if (!empty($order_by)) { $pos = strpos($order_by, ' '); if ($pos) { $parram = substr($order_by, $pos + 1); $order_by = substr($order_by, 0, $pos); } else { $parram = ''; } $sel->orderBy($order_by, $parram); } else { $sel->orderBy(position, asc); } // Вывод таблицы $table = new uiTable($sel); $table->formatValues(true); $table->showSearch(true); $table->hideEmptyColumns(true); $table->addColumn('name', lang::get('STRUCTURE_TABLE_FIELD_1'), 500, true); $table->addColumn('image', lang::get('STRUCTURE_TABLE_FIELD_2'), 400, false, false); $table->addColumn('price', lang::get('STRUCTURE_TABLE_FIELD_3'), 400); $table->addColumn('publ_date', lang::get('STRUCTURE_TABLE_FIELD_4'), 400); $table->defaultRight('page_upd'); $table->addRight('page_upd', 'edit', single); $table->addRight('list', 'list', single); $table->addRight('page_history', 'history', single); $table->addRight('page_proc_act', 'active', multi); $table->addRight('page_del', 'drop', multi); $table->setDelMessage(lang::get('STRUCTURE_DEL_TITLE'), lang::get('STRUCTURE_DEL_TITLE')); $table->setMultiDelMessage(lang::get('STRUCTURE_DEL_TITLE_MULTI'), lang::get('STRUCTURE_DEL_TEXT_MULTI')); return $table->getHTML(); }
public function upd() { $is_page = false; if (file_exists(MODUL_DIR . '/constructor/template/class.tpl')) { include MODUL_DIR . '/constructor/template/class.tpl'; } if (system::action() == "upd") { // форма обновления информации $class = new ormClass(system::url(2)); if ($class->id() == '') { system::redirect('/constructor/tree'); } page::assign('obj.class_name', $class->getName()); page::assign('obj.sname', $class->getSName()); page::assign('obj.text', $class->getPadej()); page::assign('obj.id', $class->id()); $system = $class->isSystem(); $is_list = $class->isList(); $is_page = $class->isPage(); $is_user = $class->isInheritor('user'); $base_class = $class->getBaseClass(); page::assign('right', 'class_proc_upd'); // Выводим дерево для отображения структуры класса $tree = new ormFieldsTree(); page::assign('fields', $tree->getHTML($class)); } else { if (system::action() == "add") { // форма добавления информации $system = $is_list = $uniqum = $base_class = 0; // Проверяем существует ли родитель? if (system::issetUrl(2)) { $parent = new ormClass(system::url(2)); if ($parent->id() == '') { system::redirect('/constructor/tree'); } $is_list = $parent->isList(); $is_page = $parent->isPage(); $is_user = $parent->isInheritor('user'); } else { $is_user = false; } page::assign('obj.id', system::url(2)); page::assign('right', 'class_proc_add'); } } if ($is_page) { ui::SelectBox('class_list', ormClasses::getPagesClassList(), $base_class, 400, ' '); ui::SelectBox('template_list1', templates::getByDestination(0, true), isset($class) ? $class->getDefTemplate(0) : 0, 400, ' '); ui::SelectBox('template_list2', templates::getByDestination(1, true), isset($class) ? $class->getDefTemplate(1) : 0, 400, ' '); page::fParse('page_fields', $TEMPLATE['page_fields']); } else { if ($is_user) { page::fParse('page_fields', $TEMPLATE['user_fields']); } else { page::assign('page_fields', ''); } } if (system::action() == "add" || !$class->isSystem()) { ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');"); ui::setCancelButton('/constructor'); } else { ui::setBackButton('/constructor'); } page::assignArray(lang::get('CONSTR_FORM_FIELD')); page::assignSavingPost(); ui::CheckBox('system', 1, $system, lang::get('CONSTR_FORM_FIELD', 3)); ui::CheckBox('is_list', 1, $is_list, lang::get('CONSTR_FORM_FIELD', 4)); return page::parse($TEMPLATE['frame'], 1); }
public function setClass($sname) { if (empty($this->id)) { $this->class = ormClasses::get($sname); } else { return false; } }
public function defAction() { if (!reg::getKey(ormPages::getPrefix() . '/view_as_tree')) { system::redirect('/structure/list'); } $_SESSION['STRUCTURE_LIST_FLAG'] = 0; // Если страниц нет, предлагаем добавить новую if (ormPages::getCountOfSection(0) == 0) { ui::MessageBox(lang::get('STRUCTURE_PAGE_NOT_FOUND'), lang::get('STRUCTURE_PAGE_NOT_FOUND2')); system::redirect('/structure/page_add'); } $types = ormClasses::get('section')->getAllInheritors(); $no_edit = reg::getList(ormPages::getPrefix() . '/no_edit'); $elem_list = $cat_list = ''; while (list($id, $name) = each($types)) { if (!in_array($id, $no_edit)) { $obj = ormClasses::get($id); $pach = '/css_mpanel/tree/images/'; $ico = 'classes/' . $obj->getSName() . '.png'; if (!file_exists(ROOT_DIR . $pach . $ico)) { $ico = 'file1.gif'; } if ($obj->isInheritor('category') || $obj->getSName() == 'section') { $cat_list .= ' <li><img src="' . $pach . $ico . '"> <a name="' . system::au() . '/structure/page_add/%obj_id%/' . $obj->getSName() . '" href="">' . $obj->getName() . '</a></li>'; } else { $elem_list .= ' <li ><img src="' . $pach . $ico . '"> <a name="' . system::au() . '/structure/page_add/%obj_id%/' . $obj->getSName() . '" href="">' . $obj->getName() . '</a></li>'; } } } $class_list = '<ul>' . $cat_list . '</ul><ul>' . $elem_list . '</ul>'; function getPageNotice($page) { $notice = ''; if ($page->is_home_page) { $notice = lang::get('STRUCTURE_TREE_TEXT1'); } if ($page->other_link != '') { $notice = lang::get('STRUCTURE_TREE_TEXT3'); } if (!$page->view_in_menu) { if (!empty($notice)) { $notice .= ', '; } $notice .= lang::get('STRUCTURE_TREE_TEXT2'); } if (!empty($notice)) { return '(' . $notice . ')'; } else { return ''; } } $tree = new ormTree(975, 265); $tree->setClass('ormPage'); $tree->setRoot(0, reg::getKey(ormPages::getPrefix() . '/title_prefix'), 'settings'); $tree->setRightEdit('page_upd'); $tree->setRightActive('page_proc_act'); $tree->setRightRemove('page_proc_moveto'); $tree->setRightAjaxLoad('tree'); $tree->setDelMessage(lang::get('STRUCTURE_DEL_TITLE'), lang::get('STRUCTURE_DEL_TEXT')); $tree->addRight('getUrl()', lang::get('STRUCTURE_PAGE_URL'), 'view_image'); $tree->addEmptyRight(); $tree->addEmptyRight(); $tree->addRight('page_add', lang::right('page_add'), 'add_image', 0, 1, 'class_list', $class_list); $tree->addEmptyRight(); $tree->addRight('list', lang::right('list'), 'list_block_image'); $tree->addEmptyRight(); $tree->addRight('page_upd', lang::right('page_upd'), 'compose_image'); $tree->addRight('page_copy', lang::right('page_copy'), 'copy_image', 0, 0); $tree->addRight('page_history', lang::right('page_history'), 'history_image', 0, 0); $tree->addRight('page_del', lang::right('page_del'), 'drop_image', 1, 0); $tree->setNotice('getPageNotice'); return $tree->getHTML(); }
private function createClass() { $sql = 'SELECT count(c_id) FROM <<classes>> WHERE c_sname = "' . $this->sname . '";'; if (db::q($sql, value) == 0) { $nul = $this->base_class == NULL ? '' : 'c_base_class = "' . $this->base_class . '",'; $nul .= $this->parent_id == NULL ? '' : 'c_parent_id = "' . $this->parent_id . '",'; $parent = $this->getParent(); $this->is_page = $parent instanceof ormClass ? $parent->isPage() : 0; $sql = 'INSERT INTO <<classes>> SET c_name = "' . $this->name . '", c_sname = "' . $this->sname . '", ' . $nul . ' c_text = "' . $this->padej . '", c_system = "' . $this->system . '", c_is_list = "' . $this->is_list . '", c_is_page = "' . $this->is_page . '";'; $this->id = db::q($sql); if ($this->id !== false) { $sql = 'CREATE TABLE <<__' . $this->sname . '>> ( `obj_id` INT( 11 ) NOT NULL ) ENGINE=InnoDB;'; if (db::q($sql) !== false) { db::q('ALTER TABLE <<__' . $this->sname . '>> ADD CONSTRAINT <<__' . $this->sname . '_fk_obj_id>> FOREIGN KEY (`obj_id`) REFERENCES <<objects>> (`o_id`) ON DELETE CASCADE ON UPDATE CASCADE'); // Регистрация класса в коллекции ormClasses::registration($this); // Наследует все поля родительского класса if ($parent instanceof ormClass) { $groups = $parent->getAllGroups(); if (!empty($groups)) { while (list($key, $gval) = each($groups)) { $parentGroup = new ormFieldsGroup($gval['fg_id']); $group = clone $parentGroup; $group->setClassId($this->id); $gid = $group->save(); if ($gid !== false) { $fields = $parentGroup->getAllFields(1); while (list($key, $fval) = each($fields)) { $field = clone new ormField($fval['f_id']); $field->setGroupId($gid); $field->save(); } } } } } else { // Класс сам по себе, создаем группу и поле по умолчанию $group = new ormFieldsGroup(); $group->setName('Основное'); $group->setSName('base'); $group->setView(1); $group->setSystem(1); $group->setClassId($this->id); $gid = $group->save(); if ($gid !== false) { $field = new ormField(); $field->setName('Название'); $field->setSName('name'); $field->setType(10); $field->setView(1); $field->setSearch(0); $field->setInherit(1); $field->setFilter(0); $field->setRequired(1); $field->setSystem(0); $field->setUniqum(0); $field->setGroupId($gid); $field->save(); } } return $this->id; } else { $this->newError(27, 'Невозможно создать таблицу данных класса!'); return false; } } else { $this->newError(12, 'Ошибка в SQL запросе!'); return false; } } else { $this->newError(26, 'Класс с указанным системным именем уже существует в системе!'); return false; } }
public function proc_upd() { if (system::action() == "proc_upd") { $obj = new ormField($_POST['obj_id']); } else { if (system::action() == "proc_add") { $obj = new ormField(); $obj->setGroupId($_POST['obj_id']); } } $obj->setName(system::POST('fname')); $obj->setSName(system::POST('fsname')); $obj->setHint(system::POST('hint')); $obj->setType(system::POST('type')); $obj->setView(system::POST('view')); $obj->setSearch(system::POST('search')); $obj->setInherit(system::POST('inherit')); $obj->setFilter(system::POST('filter')); $obj->setRequired(system::POST('required')); $obj->setSystem(system::POST('system')); $obj->setUniqum(system::POST('uniqum')); $obj->setMaxSize(system::POST('max_size')); $obj->setQuickAdd(system::POST('quick_add')); $obj->setRelType(system::POST('reltype')); $obj->setSpec(system::POST('spec')); // Работа с привязанным справочником if (system::POST('type') == 95 || system::POST('type') == 90 || system::POST('type') == 97) { $list_id = system::POST('list_id'); // Если не был указан справочник, то автоматически создаем новый if (empty($list_id)) { $class_name = 'list_' . system::POST('fsname', isVarName); if ($class = ormClasses::get($class_name)) { $list_id = $class->id(); } else { $class = new ormClass(); $class->setParentId(29); $class->setName('Для поля "' . system::POST('fname', isString) . '"'); $class->setSName($class_name); $class->setSystem(0); $class->setIsList(1); $list_id = $class->save(); if ($list_id === false) { $list_id = 0; } } } $obj->setListId($list_id); } else { $obj->setListId(0); } $obj_id = $obj->save(); if ($obj_id === false) { echo json_encode(array('error' => 1, 'data' => $obj->getErrorListText(' '))); } else { $tree = new ormFieldsTree(); $forUpd = system::action() == "proc_add" ? 0 : 1; echo json_encode(array('error' => 0, 'data' => $tree->getFieldHTML($obj, $forUpd))); } system::stop(); }
/** * @return null * @param string $callback - Имя php-функции для обработки добавления/изменения объектов. * @desc Сохраняет все пришедшие данные. Метод используется обработчиком формы. */ public function process($callback = '', $addit_parram = '') { if (isset($_POST['obj' . $this->form_name]) && isset($_POST['class_' . $this->form_name])) { $class = ormClasses::get($_POST['class_' . $this->form_name]); $mas = $class->loadFields(); while (list($id, $fields) = each($_POST['obj' . $this->form_name])) { $keys = array_keys($fields); if (is_numeric($id)) { $obj = ormObjects::get($id); } else { if (!$this->without_add && !empty($fields[$keys[0]])) { $obj = new ormObject(); $obj->setClass($class->getSName()); } } if (isset($obj) && $obj instanceof ormObject) { if (!$this->without_del && isset($_POST['delete_' . $obj->id])) { $obj->toTrash(); } else { reset($mas); while (list($key, $f_val) = each($mas)) { if ($f_val['f_type'] > 89 && $f_val['f_type'] < 101 && $f_val['f_relation'] == 2 && isset($fields[$key])) { // Справочник с типом "Выбор родителя" $obj->clearParents(); $ps = $obj->getParents(); $parents = $fields[$key]; if (!empty($parents)) { if (is_numeric($parents) && !empty($parents)) { $pos = isset($ps[$parents]) ? $ps[$parents]['position'] : 0; $obj->setNewParent($parents, $pos); } else { if (is_array($parents)) { while (list($key, $val) = each($parents)) { if (!empty($val)) { $pos = isset($ps[$val]) ? $ps[$val]['position'] : 0; $obj->setNewParent($val, $pos); } } } } } } else { if ($f_val['f_type'] == 50 && !isset($fields[$key])) { // Галочка $obj->__set($key, false); } else { if (isset($fields[$key])) { // Дополнительная проверка для файловых полей if ($f_val['f_type'] > 69 && $f_val['f_type'] < 86) { if (!empty($_FILES['file_obj' . $this->form_name]['tmp_name'][$id][$key])) { // Создаем переменную обманку, чтобы объект сам обработал файл $file = array('name' => $_FILES['file_obj' . $this->form_name]['name'][$id][$key], 'type' => $_FILES['file_obj' . $this->form_name]['type'][$id][$key], 'tmp_name' => $_FILES['file_obj' . $this->form_name]['tmp_name'][$id][$key], 'error' => $_FILES['file_obj' . $this->form_name]['error'][$id][$key], 'size' => $_FILES['file_obj' . $this->form_name]['size'][$id][$key]); $_FILES['file_' . $key] = $file; } } $obj->__set($key, $fields[$key]); } else { if (!empty($fields[$key . '_date']) && isset($fields[$key . '_time'])) { $datetime = $fields[$key . '_date'] . ' ' . $fields[$key . '_time'] . ':00'; $obj->__set($key, $datetime); } } } } } if (!empty($callback) && function_exists($callback)) { $is_ok = call_user_func($callback, $obj, $addit_parram); } else { $is_ok = true; } if ($is_ok) { $is_ok = $obj->save(); } if ($is_ok === false) { // echo $obj->getErrorListText(); system::savePostToSession(); ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); //ui::selectErrorFields($obj->getErrorFields()); } unset($obj); } } } } }
public static function getVirtual($classes_list) { $f = array(); while (list($key, $class_name) = each($classes_list)) { if (empty($f)) { $f = ormClasses::get($class_name)->loadFields(); //self::printMas($class_name, $f); } else { $fields = ormClasses::get($class_name)->loadFields(); //self::printMas($class_name, $fields); $f = array_intersect_key($f, $fields); } } // self::printMas('virtual', $f); // print_r($f); // die(); return $f; }
/** * @return string * @param string $templ_name - Шаблон оформления * @desc МАКРОС: Выводит форму регистрации пользователя */ function addForm($templ_name = 'add') { if (reg::getKey('/users/reg')) { $templ_file = '/users/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('users.addForm', $templ_file); } // Парсим все поля $fields = ormClasses::get('user')->loadFields(); while (list($name, $field) = each($fields)) { page::assign('obj.' . $name, ''); } // Вывод сообщения об ошибках page::parseError('add_user'); // Согласие с условиями регистрации page::assign('checked', isset($_SESSION['SAVING_POST']['confirm']) ? 'checked' : ''); page::assignSavingPost(); return page::parse($TEMPLATE['frame']); } }
public function upd() { // Указываем для какого объекта строить форму if (system::action() == "upd") { if (system::url(2) == 0) { system::redirect('/structure/settings'); } $obj = ormObjects::get(system::url(2)); $class_list = ''; $right = 'form_proc_upd'; } else { if (system::action() == "add") { $obj = new ormObject(); $obj->setClass('feedback_form'); $obj->admin_sender_name = '{name}'; $obj->admin_sender_address = '{email}'; $obj->admin_subject = 'Сообщение с сайта {site_name}'; $obj->admin_template = ' <p> Посетитель сайта {site_name}, воспользовавшись формой обратной связи, отправил следующее сообщение: </p> <p> <i>{content}</i> </p> <p> ФИО посетителя: {name} <br> E-mail для связи: {email} </p> <p> С уважением, Bagira.CMS<br> </p> '; $obj->notice_sender_name = '{site_name}'; $obj->notice_sender_address = '{base_email}'; $obj->notice_subject = 'Уведомление с сайта {site_name}'; $obj->notice_template = ' <p> Добрый день, {name}. </p> <p> Это письмо - автоматическое уведомление о том, что отправленное вами сообщение принято к рассмотрению. Мы постараемся ответить вам в кратчайшие сроки. </p> <p> Благодарим за обращение,<br> Администрация сайта {site_name}.<br> </p> '; $obj->answer_sender_name = '{site_name}'; $obj->answer_sender_address = '{base_email}'; $obj->answer_subject = 'Ответ на ваше сообщение с сайта {site_name}'; $obj->answer_template = ' <p> Добрый день, {name}. </p> <p> Не так давно, воспользовавшись формой обратной связи, вы отправили нам следующее сообщение: </p> <p> <i>{content}</i> </p> <p> Наш ответ: </p> <p> {answer} </p> <p> С уважением,<br> Администрация сайта {site_name}.<br> </p> '; $right = 'form_proc_add'; } } page::assign('right', $right); if (!$obj instanceof ormObject || $obj->issetErrors()) { system::redirect('/feedback/settings'); } ui::setCancelButton('/feedback/settings'); ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');"); // Создаем форму и выводим ее на страницу $form = new ormEditForm($obj, $right); $list = array(); if ($class = ormClasses::get('feedback')) { $mas = $class->getAllInheritors(); while (list($id, $sname) = each($mas)) { $h = ormClasses::get($sname); $list[] = array('id' => $id, 'name' => $h->getName() . ' (' . $sname . ')'); } } $form->replaceField('form_class', ui::SelectBox('form_class', $list, $obj->form_class, 400)); return $form->getHTML(); }
static function getPopularClass($section_id) { if ($page = self::get($section_id)) { if ($page->issetChildren()) { $max_class = array(); while ($obj = $page->getChild()) { $class = $obj->getClass()->getSName(); if (isset($max_class[$class])) { $max_class[$class]++; } else { $max_class[$class] = 1; } } $max_count = 0; $class_name = 'page'; while (list($class, $count) = each($max_class)) { if ($count > $max_count) { $max_count = $count; $class_name = $class; } } return $class_name; } else { $class = $page->getClass(); if ($class->getBaseClass() != 0) { return ormClasses::get($class->getBaseClass())->getSName(); } else { return $class->getSName(); } } } else { return 'page'; } }
public function proc_upd() { $mini_action = substr(system::action(), -3); if (system::action() == "proc_upd") { // Говорим какой объект нужно изменить $obj = ormObjects::get(system::POST('obj_id')); } else { if (system::action() == "proc_add") { $class_name = 'user'; $class = ormClasses::get($_POST['class_id']); if ($class instanceof ormClass && $class->isInheritor('user')) { $class_name = $class->getSName(); } // Говорим какой объект нужно создать $obj = new ormObject(); $obj->setClass($class_name); } } // Если произошли ошибки, перенаправляем if ($obj->issetErrors()) { system::redirect('/users/userlist/' . $_POST['groups'][0]); } // Присваиваем полям в объекте пришедшие значения из POST $obj->loadFromPost($mini_action); if ($obj->newVal('active')) { $obj->error_passw = 0; } if ($obj->id == user::get('id')) { $obj->active = 1; } // Сохраняем изменения $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']) ? $_POST['groups'][0] : $_POST['obj_id']; system::redirect('/users/user_' . $mini_action . '/' . $obj_id); } else { rights::setListForModuls($obj_id, 1); cache::delete('user' . $obj_id); } // Если данные изменились корректно перенаправляем на соответствующию страницу if ($_POST['parram'] == 'apply') { system::redirect('/users/user_upd/' . $obj_id); } else { system::redirect('/users/userlist/' . $_POST['groups'][0]); } }
private function getFiltersList() { if ($this->select instanceof ormSelect && empty($this->filters)) { $class_name = $this->select->getObjectsClass(); if (!empty($class_name)) { $fields = ormClasses::get($class_name)->loadFields(); } else { $fields = array(); } // Добавляем виртуальные поля $bf['id'] = array('f_sname' => 'id', 'f_name' => lang::get('CONSTR_BASE_FIELD1'), 'f_filter' => false, 'f_type' => 40); $bf['change_date'] = array('f_sname' => 'change_date', 'f_name' => lang::get('CONSTR_BASE_FIELD2'), 'f_filter' => false, 'f_type' => 32); $bf['create_date'] = array('f_sname' => 'create_date', 'f_name' => lang::get('CONSTR_BASE_FIELD3'), 'f_filter' => false, 'f_type' => 32); $fields = array_merge($bf, $fields); // Строим список фильтров $this->filters = array(); $names = ''; while (list($key, $field) = each($fields)) { if (($field['f_filter'] || isset($this->show_filters[$field['f_sname']])) && !in_array($key, $this->hide_filters) && $field['f_type'] != 100) { $this->filters[$key] = $field; $names .= $key; } } // Вычисляем префикс для сессий фильтра $this->prefix = md5($names); } }
static function checkClasses() { $classes = ''; $cl_name = func_get_args(); while (list($num, $val) = each($cl_name)) { if (!ormClasses::get($val)) { $classes .= '<li>' . $val . '</li>'; } } if (!empty($classes)) { $modul = lang::module(system::url(0)); if (empty($modul)) { $modul = system::url(0); } ui::$stop = true; ui::MessageBox(str_replace('%name%', $modul, lang::get('TEXT_CLASS_NOT_FOUND')), lang::get('TEXT_CLASS_NOT_FOUND2') . '<ul>' . $classes . '</ul>'); } }