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 defAction() { function getClassName($val, $obj) { if ($obj = ormPages::get($val)) { return $obj->getClass()->getName(); } } $sel = new ormSelect('feedback'); $sel->findInPages(); $sel->where('form_id', '<>', 0); $sel->orderBy('create_date', desc); $table = new uiTable($sel); $table->showSearch(true); $table->formatValues(true); $table->addColumn('content', 'Текст сообщения', 300); $table->addColumn('name', 'Имя пользователя', 120); $table->addColumn('email', 'E-mail', 120); $table->addColumn('create_date', 'Дата публикации', 120); $table->addColumn('id', 'Тип', 120, 0, 1, 'getClassName'); $table->defaultRight('message_upd'); $table->addRight('message_act', 'active', multi); $table->addRight('message_upd', 'edit', single); $table->addRight('message_del', 'drop', multi); return $table->getHTML(); }
private function getNewNumber() { // Определям номер нового заказа $sel = new ormSelect('eshop_order'); $sel->fields('name'); $sel->orderBy('name', desc); $sel->limit(1); if ($last_order = $sel->getObject()) { $number = $last_order->name + 1; } else { $number = 1; } return $number; }
public function defAction() { if ($parent = ormObjects::get(system::url(2))) { ui::setNaviBar(lang::right('msg')); ui::setHeader($parent->name); } else { system::redirect('/subscription'); } ui::setBackButton('/subscription'); ui::newButton(lang::get('SUBSCRIBE_BTN_ADD2'), '/subscription/msg_add/' . system::url(2)); function getState($date, $obj) { if ($obj->error_part_num > 0) { $time = time() - strtotime($obj->last_subscribe); if ($time > 4) { return str_replace('%part%', $obj->error_part_num, lang::get('SUBSCRIBE_MSG', 1)); } else { return str_replace('%part%', $obj->error_part_num, lang::get('SUBSCRIBE_MSG', 2)); } } else { if ($obj->part_count_awaiting > 0) { page::assign('part1', $obj->part_count - $obj->part_count_awaiting); page::assign('part2', $obj->part_count); return page::parse(lang::get('SUBSCRIBE_MSG', 3)); } else { if ($obj->last_subscribe == '0000-00-00 00:00:00') { return lang::get('SUBSCRIBE_MSG', 4); } else { return lang::get('SUBSCRIBE_MSG', 5) . ' ' . date('d.m.Y ' . lang::get('SUBSCRIBE_MSG', 6) . ' H:i', strtotime($obj->last_subscribe)); } } } } // Выводим список сообщений рассылки $sel = new ormSelect('subscribe_msg'); $sel->fields('name, last_subscribe, part_count, part_count_awaiting, error_part_num'); $sel->where('parents', '=', system::url(2)); $sel->orderBy('create_date', desc); $table = new uiTable($sel); $table->formatValues(true); $table->addColumn('name', lang::get('SUBSCRIBE_MSG_TT1'), 300); $table->addColumn('last_subscribe', lang::get('SUBSCRIBE_MSG_TT2'), 300, 0, 1, 'getState'); $table->defaultRight('msg_upd'); $table->addRight('msg_upd', 'edit', single); $table->addRight('msg_del', 'drop', multi); return $table->getHTML(); }
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() { function getNumber($val, $obj) { return substr('00000', 0, 5 - strlen($val)) . $val; } $sel = new ormSelect('eshop_order'); //$sel->where('form_id', '<>', 0); $sel->orderBy('date', desc); $table = new uiTable($sel); $table->showFilters(true); $table->formatValues(true); $table->addColumn('name', 'Номер', 100, false, true, 'getNumber'); $table->addColumn('state', 'Статус', 300); $table->addColumn('date', 'Дата', 300); $table->addColumn('email', 'E-mail', 300); $table->defaultRight('order_view'); $table->addRight('order_view', 'edit', single); $table->addRight('order_del', 'drop', multi); return $table->getHTML(); }
public function defAction() { ui::addLeftButton(lang::right('list'), 'list'); ui::addLeftButton(lang::right('state'), 'state'); ui::addLeftButton(lang::right('delivery'), 'delivery'); ui::addLeftButton(lang::right('payment'), 'payment'); ui::newButton(lang::get('ESHOP_ADD_STATE'), '/eshop/state_add'); $sel = new ormSelect('eshop_status'); //$sel->where('form_id', '<>', 0); $sel->orderBy('number', asc); $table = new uiTable($sel); $table->showFilters(true); $table->formatValues(true); $table->addColumn('number', '#', 10); $table->addColumn('name', 'Название', 200); $table->addColumn('notice', 'Описание', 400); $table->defaultRight('state_upd'); $table->addRight('state_upd', 'edit', single); $table->addRight('state_del', 'drop', multi); return $table->getHTML(); }
/** * @return string HTML * @param integer $obj - Экземпляр объекта (ormObject, ormPage) * @param string $action - Тип действия: "upd" - изменение, "add" - добавление * @desc Выводит форму изменения прав доступа для объекта */ public static function getListForObject($obj, $action) { if (file_exists(MODUL_DIR . '/users/template/right_list_object.tpl')) { include MODUL_DIR . '/users/template/right_list_object.tpl'; } if (isset($_POST['query'])) { // Формируем список подсказок для пользователя $sel = new ormSelect('user'); $sel->fields('login'); $sel->where('id', '<>', '29'); $sel->where('login', 'LIKE', '%' . $_POST['query'] . '%'); $users = ''; while ($user = $sel->getObject()) { $zapi = $sel->getObjectNum() != 0 ? ', ' : ''; $users .= $zapi . "'" . $user->login . "'"; } echo "{ query:'" . $_POST['query'] . "', suggestions:[" . $users . "], data:[] }"; system::stop(); } else { if (isset($_POST['user_name'])) { // Добавляем выбранного пользователя в список $sel = new ormSelect('user'); $sel->fields('login'); $sel->where('id', '<>', '29'); $sel->where('login', '=', $_POST['user_name']); $sel->limit(1); $user = $sel->getObject(); if ($user instanceof ormObject) { page::assign("group.id", $user->id); page::assign("group.name", $user->login); page::assign("checked_edit", ''); page::assign("checked_view", 'checked'); echo page::parse($TEMPLATE['group']); } system::stop(); } } // Выводим список групп $sel = new ormSelect('user_group'); $sel->where('id', '<>', '32'); $sel->orderBy('name', asc); $groups = $sel->getData(); $rights = array(); if ($action == 'upd') { $users = db::q('SELECT o_id, login o_name FROM <<rights>>, <<objects>>, <<__user>> WHERE r_obj_id = "' . $obj->id . '" and r_group_id = o_id and obj_id = o_id and o_class_id <> 33;', records); $groups = array_merge($groups, $users); $tmp = db::q('SELECT r_state, r_group_id FROM <<rights>> WHERE r_obj_id = "' . $obj->id . '";', records); while (list($key, $right) = each($tmp)) { $rights[$right['r_group_id']] = $right['r_state']; } $select_all = count($tmp) == 1 && empty($tmp[0]['r_group_id']) ? $tmp[0]['r_state'] : false; } else { $select_all = 2; } $items = ''; $num = $edit_num = $view_num = 0; while (list($key, $group) = each($groups)) { $state = isset($rights[$group['o_id']]) ? $rights[$group['o_id']] : 0; if ($state == 2) { $edit_num++; } $checked_edit = $state == 2 || $select_all == 2 ? 'checked' : ''; page::assign("checked_edit", $checked_edit); if ($state > 0) { $view_num++; } $checked_view = $state > 0 || $select_all > 0 ? 'checked' : ''; page::assign("checked_view", $checked_view); page::assign("group.id", $group['o_id']); page::assign("group.name", $group['o_name']); $items .= page::parse($TEMPLATE['group']); $num = $key + 1; } $checked_edit = $select_all == 2 || $num == $edit_num ? 'checked' : ''; page::assign("checked_edit", $checked_edit); $checked_view = $select_all > 0 || $num == $view_num ? 'checked' : ''; page::assign("checked_view", $checked_view); page::assign("text.all_user", lang::get('STRUCTURE_RIGHT_ALL_USER')); page::assign("text.title", lang::get('STRUCTURE_RIGHT_TITLE')); page::assign("groups", $items); return page::parse($TEMPLATE['frame']); }
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 orderList($templ_name = 'order_list') { $templ_file = '/eshop/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('eshop.orderList', $templ_file); } $sel = new ormSelect('eshop_order'); $sel->where('parents', '=', user::get('id')); $sel->orderBy('name', desc); $list = ''; while ($obj = $sel->getObject()) { $order = new eShopOrder($obj); page::assign('order.id', $order->id); page::assign('order.number', $order->getNumber()); page::assign('order.cost', $order->getTotalCost()); page::assign('order.state', $order->_state); page::assign('order.date', $order->date); $list .= page::parse($TEMPLATE['list']); } if (!empty($list)) { page::assign('list', $list); return page::parse($TEMPLATE['frame']); } else { return page::parse($TEMPLATE['empty']); } }
public static function getSectionByPath($path) { $section = ''; if (is_numeric($path)) { if ($path == 0) { $section = 'root'; $class_name = ''; } else { $section = ormPages::get($path); $class_name = ''; } } else { if (strpos($path, '..')) { // Выборка всех подразделов раздела, например "454 .. pages" $str = str_replace(' ', '', $path); // Определяем класс $section_id = 0; $pos = strpos($str, '..'); if ($pos) { $class_name = substr($str, $pos + 2); $section_id = substr($str, 0, $pos); } else { $class_name = ''; } $section = self::getAllSubSections($section_id); } else { if (strpos($path, '>')) { // Обычная цепочка, вида "455 > #5 > category goods" $str = str_replace(array('> ', ' >'), '>', $path); // Определяем класс $pos = strpos($str, ' '); if ($pos) { $class_name = substr($str, $pos + 1); $str = substr($str, 0, $pos); } else { $class_name = ''; } // Получаем путь $list = array(); $mas = explode('>', $str); while (list($key, $val) = each($mas)) { $val = trim($val); if (!empty($val)) { $list[] = $val; } } // Определяем объект $parent_id = 0; reset($list); while (list($key, $val) = each($list)) { if (is_numeric($val)) { // Указан ID if (empty($key)) { $parent_id = $val; } } else { if ($val[0] == '#') { // Указан порядковый номер в списке $num = str_replace('#', '', $val) - 1; $sel = new ormSelect(); $sel->findInPages(); $sel->fields('id'); $sel->where('active', '=', 1); if (!empty($parent_id)) { $sel->where('parents', '=', $parent_id); } else { $sel->where('parents', '=', 0); } $sel->limit($num, 1); $sel->orderBy(position, asc); if ($section = $sel->getObject()) { $parent_id = $section->id; } else { $section = false; break; } } else { // Указан класс $sel = new ormSelect($val); $sel->findInPages(); $sel->fields('id'); $sel->where('active', '=', 1); if (!empty($parent_id)) { $sel->where('parents', '=', $parent_id); } else { $sel->where('parents', '=', 0); } $sel->limit(1); $sel->orderBy(position, asc); if ($section = $sel->getObject()) { $parent_id = $section->id; } else { $section = false; $section; } } } } } else { $pos = strpos($path, ' '); if ($pos) { $obj_id = substr($path, 0, $pos); if (is_numeric($obj_id)) { $class_name = substr($path, $pos + 1); if ($obj_id == 0) { $section = 'root'; } else { $section = ormPages::get($obj_id); } } else { $class_name = $path; } } else { $class_name = $path; } } } } return array('section' => $section, 'class' => $class_name); }
/** * @return HTML * @param int $obj_id - ID раздела, из которого необходимо вывести список голосований. * Если вывести список всех голосований на сайте, укажите "all". * @param string $templ_name - Шаблон оформления. * @param int $max_count - Максимальное количество элементов в списке. * @param string $order_by - Способ сортировки элементов списка. SQL-подобный синтаксис, например: "name DESC". * @desc МАКРОС: Выводит список голосований из указанного раздела. */ public function objList($obj_id = 'all', $templ_name = 'default', $max_count = 10, $order_by = 0) { $templ_file = '/voting/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('voting.objList', $templ_file); } $key = 'vote-list' . $obj_id . $templ_name . $max_count; if (!($data = cache::get($key)) || $order_by == 'random') { if ($obj_id != 'all') { $info = ormPages::getSectionByPath($obj_id); if ($info['section'] === false) { return ''; } if ($info['section'] instanceof ormPage) { $section = $info['section']; $obj_id = $section->id; } } // Получаем список голосований $sel = new ormSelect('vote'); $sel->findInPages(); $sel->where('active', '=', 1); $sel->where('view_in_menu', '=', 1); // Сортировка списка 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('publ_date', desc); } $sel->limit($max_count); if (is_numeric($obj_id)) { $sel->where('parents', '=', $obj_id); } // Узнаем какие поля объектов будут участвовать в выборке $fields_str = 'close, multiselect'; $fields = page::getFields('obj', $TEMPLATE['vote_result'] . $TEMPLATE['vote']); if (isset($fields['obj'])) { while (list($okey, $val) = each($fields['obj'])) { if ($val != 'url' && $val != 'class' && $val != 'num') { $fields_str .= empty($fields_str) ? $val : ', ' . $val; } } } $sel->fields($fields_str); $data = $sel->getData(); // Записываем в кэш cache::set($key, $data); } // Выводим список на страницу $list = ''; foreach ($data as $obj) { $list .= $this->objView($obj, $TEMPLATE); } page::assign('list', $list); return page::parse($TEMPLATE['frame']); }
/** * @return HTML * @param int(string) $section - ID объекта, подразделы которой будут выводиться в списке или системное имя класса, объекты которого нужно вывести * @param string $templ_name - Шаблон оформления по которому будет строится список * @param int $max_count - Максимальное количество элементов в списке * @param string $order_by - Способ сортировки элементов списка. SQL-подобный синтаксис, например: "name DESC". * @param int $start_pos - Номер элемента по порядку с которого будет выводиться список. * @desc МАКРОС: Выводит список объектов. */ public function objList($section, $TEMPLATE = 'default', $max_count = 0, $order_by = 0, $start_pos = 0) { $list = ''; // Определяем источник данных: ID, имя класса, путь, объект ormPage $independent = $section instanceof ormObject ? false : true; $class_name = $class_frame = ''; if ($independent) { if (!is_numeric($section)) { $pos = strpos($section, ' '); if ($pos) { $class_name = substr($section, $pos + 1); $section = substr($section, 0, $pos); } else { $class_name = $section; $section = -1; } } } // Если нужно, подгружаем файл шаблона if (!is_array($TEMPLATE)) { $templ_file = '/core/objects/' . $TEMPLATE . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('core.objList', $templ_file); } } // Формируем выборку объектов $sel = new ormSelect($class_name); if ($section >= 0) { page::assign('parent_id', $section); $sel->where('parents', '=', $section); } // Сортировка списка 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); } $class_list = $sel->getClassesList(); if (!empty($class_list)) { // Узнаем какие поля объектов будут участвовать в выборке $fields_str = ''; $fields = page::getFields('obj', $TEMPLATE, $class_list, $class_frame); if (isset($fields['obj'])) { while (list($key, $val) = each($fields['obj'])) { if ($val != 'url' && $val != 'class' && $val != 'num') { $fields_str .= empty($fields_str) ? $val : ', ' . $val; } } } $sel->fields($fields_str); // Количество элементов и постраничная навигация if (!empty($max_count)) { if (isset($fields['funct']) && in_array('structure.navigation', $fields['funct'])) { $count_page = ceil($sel->getCount() / $max_count); page::assign('count_page', $count_page); if (system::getCurrentNavNum() != 0) { $niz = empty($start_pos) ? system::getCurrentNavNum() * $max_count - $max_count : $start_pos; $sel->limit($niz, $max_count); } else { $sel->limit($max_count); } } else { if (!empty($start_pos)) { $sel->limit($start_pos, $max_count); } else { $sel->limit($max_count); } } } // Формируем список while ($obj = $sel->getObject()) { // Парсим поля страницы if (isset($fields['obj_all'])) { reset($fields['obj_all']); while (list($num, $name) = each($fields['obj_all'])) { page::assign('obj.' . $name, $obj->__get($name)); } } $class = $obj->getClass()->getSName(); $num = $sel->getObjectNum() + 1; page::assign('obj.num', $num); page::assign('obj.class', $class); page::assign('class-first', $num == 1 ? 'first' : ''); page::assign('class-last', $num == $sel->getObjectCount() ? 'last' : ''); page::assign('class-odd', $num % 2 == 0 ? 'odd' : ''); page::assign('class-even', $num % 2 != 0 ? 'even' : ''); page::assign('class-third', $num % 3 == 0 ? 'third' : ''); if ($num === 1) { page::assign('first_children_id', $obj->id); } page::assign('last_children_id', $obj->id); if (isset($TEMPLATE['list_' . $class])) { $templ = 'list_' . $class; } else { if (isset($TEMPLATE['list'])) { $templ = 'list'; } else { $templ = ''; } } if (isset($TEMPLATE[$templ])) { if ($num > 1 && isset($TEMPLATE['separator'])) { $list .= $TEMPLATE['separator']; } $list .= page::parse($TEMPLATE[$templ]); } } } if (!empty($list) && $independent) { page::assign('list', $list); if (isset($TEMPLATE['frame_list'])) { $list = page::parse($TEMPLATE['frame_list']); } else { $list = page::errorBlock('core.objList', $templ_file, 'frame_list'); } } return $list; }
public function __get($name) { if ($name == 'url' && !empty($this->id)) { if (empty($this->url)) { $this->url = ormPages::getPageUrlById($this->id); } //echo $this->id.'|'.$this->url.'<br/>'; return $this->url; } else { if ($name == '_url' && !empty($this->id)) { if (empty($this->_url)) { if ($this->__get('other_link') != '') { $link = $this->__get('other_link'); if ($link == '/first_subsection') { $sel = new ormSelect(); /// $sel->fields('id'); $sel->findInPages(); $sel->where('parents', '=', $this->id); $sel->orderBy('position'); $sel->limit(1); if ($subsection = $sel->getObject()) { $this->_url = $subsection->__get('_url'); } } else { $this->_url = $link; } } else { $this->_url = ormPages::getPageUrlById($this->id); } } return $this->_url; } else { if ($name == 'first_children_id' && !empty($this->id)) { $sel = new ormSelect(); $sel->findInPages(); $sel->where('parents', '=', $this->id); $sel->fields('id'); $sel->limit(1); $order_by = $this->__get('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); } return $sel->getObject()->id; } else { if ($name == 'count_children' && !empty($this->id)) { return $this->countChildren(); } else { if ($this->isSysField($name) && isset($this->cur_prop[$name])) { return $this->cur_prop[$name]; } else { if ($this->isSysField($name) && isset($this->new_prop[$name])) { return $this->new_prop[$name]; } else { return parent::__get($name); } } } } } } }
/** * @return HTML * @param int $section_id - ID новостной ленты, для которой необходимо построить RSS-ленту * @param string $templ_name - Шаблон оформления, по которому будет строится RSS-лента * @desc МАКРОС: Выводит содержимое RSS-ленты. */ public function rss($section_id, $templ_name = 'rss') { $templ_file = '/structure/rss/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('structure.rss', $templ_file); } $cur_domain = 'http://' . domains::curDomain()->getName(); page::assign('channel.url', $cur_domain); page::assign('channel.date', date('r')); page::assign('channel.notice', ''); // Определяем из каких категорий выводить ленту новостей $sections = array(); if ($section_id == 'all') { // Из нескольких $sel = new ormSelect('news_feed'); $sel->findInPages(); $sel->fields('id'); $sel->where('rss_export', '=', 1); $sel->where('active', '=', 1); while ($obj = $sel->getObject()) { $sections[] = $obj->id; } page::assign('channel.title', domains::curDomain()->getSiteName()); } else { // Из одной $section_id = system::checkVar($section_id, isInt); if (empty($section_id)) { return ''; } $sections[] = $section_id; if ($sect = ormPages::get($section_id)) { page::assign('channel.title', $sect->name); } } // Формируем выборку объектов $sel = new ormSelect(); $sel->findInPages(); $sel->fields('name, notice, publ_date'); $sel->where('parents', '=', $sections, 'OR'); $sel->where('active', '=', 1); $sel->orderBy('publ_date', desc); $sel->limit(3); // Формируем список $list = ''; while ($obj = $sel->getObject()) { $num = $sel->getObjectNum() + 1; page::assign('obj.num', $num); page::assign('obj.id', $obj->id); page::assign('obj.url', $cur_domain . $obj->_url); page::assign('obj.name', $obj->name); $notice = str_replace(' ', '', strip_tags($obj->notice)); page::assign('obj.notice', $notice); $date = date('r', strtotime($obj->publ_date)); page::assign('obj.date', $date); /* if ($obj->podkast != '') { page::assign('obj.media_url', $cur_domain.$obj->podkast); page::fParse('media', $TEMPLATE['media']); } else page::assign('media', ''); */ if (isset($TEMPLATE['list'])) { $list .= page::parse($TEMPLATE['list']); } else { return page::errorBlock('structure.rss', $templ_file, 'list'); } } if (!empty($list)) { page::assign('list', $list); if (isset($TEMPLATE['frame_list'])) { $list = page::parse($TEMPLATE['frame_list']); } else { return page::errorBlock('structure.rss', $templ_file, 'frame_list'); } } return $list; }