public function restore() { if (system::issetUrl(2) && is_numeric(system::url(2))) { // Одиночное востановление $obj = new ormObject(system::url(2)); if ($obj->isInheritor('section')) { $obj = new ormPage(system::url(2)); } $obj->restore(); echo 'delete'; } else { if (isset($_POST['objects'])) { // Множественное востановление while (list($id, $val) = each($_POST['objects'])) { if (is_numeric($id)) { $obj = new ormObject($id); if ($obj->isInheritor('section')) { $obj = new ormPage($id); } $obj->restore(); } } echo 'delete'; } } ormPages::clearCache(); system::stop(); }
function upd() { // Устанавливаем кнопки для формы ui::setCancelButton('/comments/list'); ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');"); if (file_exists(MODUL_DIR . '/comments/template/comment.tpl')) { include MODUL_DIR . '/comments/template/comment.tpl'; } if (!($obj = comments::get(system::url(2)))) { system::redirect('/comments/list'); } if ($obj->getUserId() != 0 && user::issetRight('user_upd', 'users')) { $url = system::au() . '/users/user_upd/' . $obj->getUserId(); page::assign('user_link', $url); page::fParse('user_name', $TEMPLATE['user_link']); } else { page::fParse('user_name', $TEMPLATE['user_name']); } page::assign('obj.id', $obj->id()); page::assign('obj.username', $obj->getUserName()); page::assign('obj.email', $obj->getEmail()); page::assign('obj.text', $obj->getText()); page::assign('obj.date', date('d.m.Y H:i', strtotime($obj->getPublDate()))); page::assign('obj.parram', $obj->getParram()); ui::CheckBox('active', 1, $obj->isActive(), 'Проверен'); // Информация о странице if ($page = ormPages::get($obj->getObjId())) { page::assign('page.id', $page->id); page::assign('page.url', $page->url); page::assign('page.name', $page->name); } return page::parse($TEMPLATE['frame']); }
/** * @return NULL * @param int $goods_id - ID товара * @param int $count - Количество товаров * @desc Добавляет товар в корзину */ static function addGoods($goods_id, $count) { if (!isset($_SESSION['basket'])) { $_SESSION['basket'] = array(); } // Получаем экземпляр товара if (is_numeric($goods_id)) { $goods = ormPages::get($goods_id, 'goods'); } else { if ($goods_id instanceof ormPage) { $goods = $goods_id; } else { $goods = false; } } // Добавляем в корзину if ($goods instanceof ormPage && $goods->isInheritor('goods')) { if (!reg::getKey('/eshop/check_count') || reg::getKey('/eshop/min_count') < $goods->count) { if (isset($_SESSION['basket'][$goods->id])) { $_SESSION['basket'][$goods->id]['count']++; } else { $_SESSION['basket'][$goods->id] = array('goods_id' => $goods->id, 'cost' => $goods->price, 'count' => $count); } } } }
public function to_basketAction() { if ($goods = ormPages::get(system::url(2), 'goods')) { $count = system::issetUrl(3) ? system::url(3) : 1; basket::addGoods($goods, $count); } system::redirect('/eshop/basket'); }
public function unsubscribeAction() { if ($page = ormPages::get(system::url(3))) { comments::unsubscribe(system::url(2), system::url(3)); page::globalVar('title', lang::get('COM_TITLE')); page::globalVar('h1', lang::get('COM_TITLE')); return lang::get('COM_UNSUBSCRIBE') . '"' . $page->name . '".'; } }
public function unsubscribeAction() { if (system::issetUrl(2) && system::issetUrl(3)) { if (($obj = ormObjects::get(system::url(2))) && $obj->isInheritor('subscription')) { mailingProcess::delEmailById(system::url(3), $obj->id); page::assign('name', $obj->name); return page::parse(lang::get('SUBSCRIPTION_MSG2')); } } return ormPages::get404(); }
function changeText($id, $obj) { if (!empty($id)) { reg::setKey($id, $obj['text'], $obj['description']); } else { if (!empty($obj['text'])) { reg::addToList(ormPages::getPrefix() . '/minitext', $obj['text'], $obj['description']); } } return true; }
public function doAction() { $answers = system::POST('answers'); $error = 2; $msg = ''; if (count($answers) > 0) { if ($vote = ormPages::get(system::POST('vote_id'), 'vote')) { if (!$vote->close) { $sel = new ormSelect('answer'); $sel->fields('name, count'); $sel->where('parents', '=', $vote->id); while ($answ = $sel->getObject()) { if (in_array($answ->id, $answers)) { $answ->count = $answ->count + 1; $answ->save(); if (!$vote->multiselect) { break; } } } cache::delete('vote' . $vote->id . '1'); cache::delete('vote' . $vote->id . '0'); $_SESSION['voting_' . $vote->id] = 1; $error = 0; } else { // Голосование закрыто $msg = lang::get('VOTING_MSG_CLOSE'); $error = 1; } } else { $msg = lang::get('VOTING_MSG_NOT_FOUND'); } } else { $msg = lang::get('VOTING_MSG_CHOSE_VAR'); } if (system::isAjax()) { if ($error < 2 && $vote instanceof ormPage) { $data = page::macros('voting')->objView($vote->id); } system::json(array('error' => 0, 'html' => $data, 'msg' => $msg)); } else { if (!empty($_POST['back_url'])) { system::redirect($_POST['back_url'], true); } else { system::redirect('/'); } } }
/** * @return integer - ID шаблона * @param integer $obj_id - ID раздела сайта * @desc Определяет популярный (часто используемый) шаблон в указанном разделе */ static function getPopularForSection($obj_id) { $sql = empty($obj_id) ? ' r_parent_id is NULL and ' : ' r_parent_id = "' . $obj_id . '" and '; $mas = db::q('SELECT template_id, template2_id FROM <<pages>>, <<objects>>, <<rels>> WHERE ' . $sql . ' r_field_id is NULL and r_children_id = o_id and p_obj_id = o_id and o_to_trash = 0 GROUP BY o_id;', records); if (count($mas) > 0) { return array(self::getPopTemplate($mas, 'template_id'), self::getPopTemplate($mas, 'template2_id')); } else { if (!empty($obj_id)) { return array(ormPages::get($obj_id)->__get('template_id'), ormPages::get($obj_id)->__get('template2_id')); } else { return array(0, 0); } } }
public function change_rateAction() { if ($page = ormPages::get(system::url(2))) { if (!isset($_SESSION['change_rate'][$page->id]) && $page->getClass()->issetField('rate')) { // Высчитываем новый рейтинг $rate = system::checkVar(system::url(3), isInt); if ($rate > 5) { $rate = 5; } else { if ($rate < 1) { $rate = 1; } } $new_rate = $page->rate != 0 ? ($page->rate + $rate) / 2 : $rate; // Сохраняем $page->rate = $new_rate; $page->save(); $_SESSION['change_rate'][$page->id] = 1; system::json(array('error' => 0, 'new_rate' => $new_rate)); } } system::json(array('error' => 1, 'new_rate' => 0)); }
public function proc() { if (system::isAjax() && system::issetUrl(2)) { if (system::url(2) == 'start') { searchIndex::clear(); reg::setKey(ormPages::getPrefix('search') . '/index_date', date('d.m.Y')); $sel = new ormSelect(); $sel->fields('name'); $sel->findInPages(); $sel->where('active', '=', 1); $sel->where('in_search', '=', 1); echo $sel->getCount(); } else { if (system::url(2) == 'info') { $data = reg::getKey(ormPages::getPrefix('search') . '/index_date'); if (empty($data)) { $data = '-'; } system::json(array('pages' => searchIndex::getCountPages(), 'words' => searchIndex::getCountWords(), 'data' => $data)); } else { $sel = new ormSelect(); $sel->findInPages(); $sel->where('active', '=', 1); $sel->where('in_search', '=', 1); $sel->limit(system::url(2), 1); searchIndex::indexPage($sel->getObject()); echo 'ok'; } } system::stop(); } if (system::POST('parram') == 'clear') { searchIndex::clear(); } system::redirect('/search/index'); }
/** * @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); } } }
public function getParent($class_name = '') { if (empty($class_name)) { if ($this instanceof ormPage) { return ormPages::get($this->getParentId()); } else { return ormObjects::get($this->getParentId()); } } else { if ($class = ormClasses::get($class_name)) { // Ищем родителя нужного класса $this->getParents(); reset($this->parents); while (list($obj_id, $val) = each($this->parents)) { if ($val['parent_class'] == $class->id()) { if ($class->isPage()) { return ormPages::get($obj_id); } else { return ormObjects::get($obj_id); } } } } } return false; }
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(); }
/** * @return null * @param ormPage $page - страница для индексации * @desc Проводит индексацию страницы, предварительно удалив старые данные индексации и проверив возможность такой индексации. */ static function autoIndex($page) { if (reg::getKey(ormPages::getPrefix('search') . '/auto_index')) { if ($page instanceof ormPage) { // Если есть, удаляем старый индекс страницы self::delIndexForPage($page->id); self::indexPage($page); } } }
/** * @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']); }
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); } } }
public function del() { if (system::issetUrl(2) && is_numeric(system::url(2))) { // Одиночное удаление if ($obj = ormPages::get(system::url(2))) { $obj->toTrash(); echo 'delete'; } } else { if (isset($_POST['objects'])) { // Множественное удаление while (list($id, $val) = each($_POST['objects'])) { if ($obj = ormPages::get($id)) { $obj->toTrash(); } } echo 'delete'; } } system::stop(); }
public function defAction() { return ormPages::get404(); }
function getHTML($templ_name = 'orm_tree') { if (file_exists(MODUL_DIR . '/mpanel/template/' . $templ_name . '.tpl')) { include MODUL_DIR . '/mpanel/template/' . $templ_name . '.tpl'; $main_url = system::au() . '/' . system::url(0) . '/'; page::assign('main_url', $main_url); page::assign('plus_table', $this->plus_table); // Помечаем веточку закрытой if (system::isAjax() && (system::url(2) == 'close' || system::url(2) == 'open') && system::issetUrl(3)) { if (system::url(2) == 'open' && is_numeric(system::url(3))) { $_SESSION['TREE_OPEN_NODES'][system::url(3)] = 1; } else { if (isset($_SESSION['TREE_OPEN_NODES'][system::url(3)])) { unset($_SESSION['TREE_OPEN_NODES'][system::url(3)]); } } system::stop(); } else { // По POST запросу формируем ветку дерева if (isset($_POST['id'])) { if (!empty($_POST['id'])) { //system::log($_POST['id']); $_POST['id'] = str_replace('phtml_', '', $_POST['id']); $pos = strpos($_POST['id'], '_'); $_POST['id'] = substr($_POST['id'], 0, strlen($_POST['id']) - (strlen($_POST['id']) - $pos)); //system::log($_POST['id']); } $_SESSION['TREE_OPEN_NODES'][$_POST['id']] = 1; ormPages::init(array($_POST['id'] => 1)); // Строим одни уровень дерева $tmp = $this->build_menu($_POST['id'], $TEMPLATE, false); //echo str_replace('`%`', '%', $tmp); echo $tmp; system::stop(); } } // Парсим дерево разделов if (isset($_SESSION['TREE_OPEN_NODES'])) { ormPages::init($_SESSION['TREE_OPEN_NODES']); } $subm = $this->build_menu($this->root_id, $TEMPLATE); page::assign('sub_items', $subm); page::assign('item.id', $this->root_id); page::assign('item.parent_id', ''); page::assign('item.url', $this->root_url); page::assign('item.active', 1); page::assign('item.name', $this->root_title); page::assign('item.notice', ''); page::assign('obj.ico', '/css_mpanel/tree/images/classes/core.png'); page::assign('obj.url', ''); page::assign('close', empty($subm) ? '' : ' open'); page::fParse('items', $TEMPLATE['items']); page::fParse('frame_items', $TEMPLATE['frame_items']); // Выводим список прав для веточек $item = ''; $zagl_width = 0; while (list($key, $right) = each($this->rights)) { if ($right['java'] == 1) { $zagl_width += 20; } if ($right == 'empty' || !user::issetRight($right['name']) && $right['name'] != 'getUrl()') { $item .= $right != 'empty' ? '' : page::parse($TEMPLATE['item_right_null']); } else { page::assign('title', $right['title']); page::assign('image_style', $right['class']); page::assign('url', $main_url . $right['name'] . '/'); page::assign('hide_in_root', $right['show_in_root'] ? '' : ' hide_in_root'); if ($right['name'] == 'getUrl()') { $templ = 'item_right_url'; } else { $templ = $right['java'] == 1 ? 'item_right_del' : 'item_right'; } if (!empty($right['list'])) { $templ = 'item_right_list'; page::assign('list_id', $right['list']); page::assign('list_html', $right['list_html']); page::fParse('tree_list', $TEMPLATE['tree_list']); } $item .= page::parse($TEMPLATE[$templ]); } } page::assign('rights', $item); page::assign('act_link', $this->rightActive); page::assign('remove_link', $this->rightRemove); page::assign('load_link', $this->ajaxLink); page::assign('root_id', $this->root_id); page::assign('zagl_width', $zagl_width); // Текст сообщения об удалении элементов if (empty($this->del_title) || empty($this->del_text)) { $this->del_title = lang::get('TABLE_DROP_TITLE'); $this->del_text = lang::get('TABLE_DROP_TEXT'); } page::assign('del_title', $this->del_title); page::assign('del_text', $this->del_text); page::assign('width', $this->width); page::assign('width2', $this->width2); page::assign('left', $this->width - $this->width2); page::assign('style_prefix', $this->miniStyle ? '_mini' : ''); page::assign('isEditable', $this->rightEdit ? 1 : 0); page::assign('isChangeActive', $this->rightActive ? 1 : 0); page::assign('isDragged', $this->rightRemove ? 1 : 0); page::assign('isShowRight', empty($this->rights) ? 0 : 1); return page::parse($TEMPLATE['main']); } }
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(); }
function getClassName($val, $obj) { if ($obj = ormPages::get($val)) { return $obj->getClass()->getName(); } }
public function send_messageAction() { if ($form_obj = ormObjects::get(system::POST('form_id'))) { $issetErrors = false; $answer = array(); // Проверка капчи if ($form_obj->captcha && !system::validCapcha('random_image')) { $issetErrors = true; $answer = array('field' => 'random_image', 'msg' => lang::get('FEEDBACK_ERROR1')); } // Если указанно куда, добавляем объект в БД if (($form_obj->any_sections || $form_obj->section) && !$issetErrors) { // Определяем раздел, в который будем добавлять отзыв if ($form_obj->any_sections) { $section = system::POST('section_id', isInt); } else { $section = $form_obj->section; $section = !empty($section) ? $section[0] : 0; } // Создаем объект обратной связи $obj = new ormPage(); $obj->setParent($section); $obj->setClass($form_obj->form_class); $obj->tabuList('pseudo_url', 'h1', 'keywords', 'title', 'description', 'answer', 'active', 'is_home_page', 'view_in_menu', 'view_submenu', 'in_search', 'in_index', 'in_new_window', 'other_link', 'img_act', 'img_no_act', 'img_h1'); $obj->loadFromPost(); $obj->active = 0; $obj->view_in_menu = 1; $obj->view_submenu = 1; $obj->in_search = 1; $obj->in_index = 1; $obj->is_home_page = 0; if ($obj->name != '') { $obj->h1 = $obj->name; $obj->title = $obj->name; } $obj->pseudo_url = rand(1000, 9999); $obj->template_id = ($sect = ormPages::get($form_obj->section)) ? $sect->template_id : 1; $obj->form_id = $form_obj->id; $obj->setRightForAll(2); $obj_id = $obj->save(); if ($obj_id) { $obj->pseudo_url = $obj_id; $obj->save(); $obj = new ormPage($obj_id); } else { $issetErrors = true; $f = $obj->getErrorFields(); $answer = array('field' => $f['focus'], 'msg' => $obj->getErrorListText(' ')); } } if (!$issetErrors) { // Отправка нужных писем page::assign('site_name', domains::curDomain()->getSiteName()); page::assign('site_url', domains::curDomain()->getName()); page::assign('base_email', domains::curDomain()->getEmail()); while (list($key, $val) = each($_POST)) { page::assign($key, system::checkVar($val, isText)); } if (isset($obj)) { $fields = $obj->getClass()->loadFields(); foreach ($fields as $field) { if (in_array($field['f_type'], array(70, 75, 80, 85))) { $fsname = $field['f_sname']; $fvalue = $obj->{$fsname}; if ($fvalue != '') { page::assign($fsname, $fvalue); } } } } // Если указан список адресатов, отправляем письма if ($form_obj->mailing_list != '') { $mail = new phpmailer(); $mail->From = $this->parse($form_obj->admin_sender_address); $mail->FromName = $this->parse($form_obj->admin_sender_name); /* if (!empty($this->files)) for($i = 0; $i < count($this->files); $i++) $mail->AddAttachment($this->files[$i][0], $this->files[$i][1]); */ $mail->AddAddress($form_obj->mailing_list); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = $this->parse($form_obj->admin_subject); $mail->Body = $this->parse($form_obj->admin_template); $mail->Send(); } // Если нужно, отправляем уведомление пользователю if ($form_obj->send_notice && !$issetErrors) { $mail = new phpmailer(); $mail->From = $this->parse($form_obj->notice_sender_address); $mail->FromName = $this->parse($form_obj->notice_sender_name); $mail->AddAddress(system::POST('email')); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = $this->parse($form_obj->notice_subject); $mail->Body = $this->parse($form_obj->notice_template); $mail->Send(); } // Показываем результат if (system::isAjax()) { if ($form_obj->msg != '') { $text = $form_obj->msg; } else { $text = lang::get('FEEDBACK_MSG_1'); } system::json(array('field' => 0, 'msg' => strip_tags($text))); } else { system::redirect('/feedback/ok/' . $form_obj->id); } } else { // Произошли ошибки if (system::isAjax()) { system::json($answer); } else { system::savePostToSession(); system::saveErrorToSession('feedback', $answer); if (empty($_POST['back_url'])) { $_POST['back_url'] = '/structure/map'; } system::redirect($_POST['back_url'], true); } } system::stop(); } else { system::stop(); } }
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); }
private function sendEmails() { $last_email = ''; // Информация о новом комментарии page::assign('username', $this->getUserName()); page::assign('comment', $this->getText()); page::assign('comment_id', $this->id()); // Информация о странице if ($page = ormPages::get($this->getObjId())) { page::assign('page.id', $page->id); page::assign('page.url', $page->url); page::assign('page.name', $page->name); } // Отправляем письмо автору предыдущего коммента if ($this->getParentId() != 0) { $old_comment = new comment($this->getParentId()); if ($old_comment->getEmail() != $this->getEmail()) { $last_email = $old_comment->getEmail(); page::assign('old_comment', $old_comment->getText()); page::assign('name', $old_comment->getUserName()); system::sendMail('/comments/mails/new_answer.tpl', $last_email); } } // Отправляем письма всем подписавщимся на уведомления $sql = 'SELECT c_username, c_email FROM <<comments>> WHERE c_obj_id = "' . $this->getObjId() . '" and c_send_email = 1 and c_id <> "' . $this->id() . '" GROUP BY c_email;'; $list = db::q($sql, records); if (!empty($list)) { while (list($key, $val) = each($list)) { if ($val['c_email'] != $last_email && $val['c_email'] != $this->getEmail()) { page::assign('name', $val['c_username']); page::assign('index', str_replace(array('.', '@'), array('_', '__'), $val['c_email'])); system::sendMail('/comments/mails/new_comment.tpl', $val['c_email']); } } } }
public function goodsList($order_id, $templ_name = 'goods_list') { $templ_file = '/eshop/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('eshop.goodsList', $templ_file); } if ($order = ormObjects::get($order_id, 'eshop_order')) { $fields = page::getFields('obj', $TEMPLATE['list']); $sel = new ormSelect('eshop_goods'); $sel->where('parents', '=', $order_id); $list = ''; $num = $cost = 0; while ($goods = $sel->getObject()) { if ($obj = ormPages::get($goods->goods_id, 'goods')) { $num++; if (isset($fields['obj'])) { while (list($key, $val) = each($fields['obj'])) { if ($val != 'url' && $val != 'class' && $val != 'num') { page::assign('obj.' . $val, $obj->__get($val)); } } } page::assign('obj.num', $num); 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' : ''); page::assign('obj.id', $obj->id); page::assign('obj.name', $obj->name); page::assign('obj.cost', $goods->cost); page::assign('obj.count', $goods->count); page::assign('obj.url', $obj->url); $cost_all = $goods->cost * $goods->count; page::assign('obj.cost_all', $cost_all); $cost += $cost_all; $list .= page::parse($TEMPLATE['list']); } } if (!empty($list)) { page::assign('cost', $cost); page::assign('list', $list); return page::parse($TEMPLATE['frame']); } else { return page::parse($TEMPLATE['empty']); } } }
public function tagAction() { $templ_file = '/search/gettag.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('search.getTag', $templ_file); } if (system::issetUrl(2) && ($tag = tags::infoTag(system::url(2)))) { $msg = lang::get('SEARCH_H1_TAGS') . ' "' . $tag['name'] . '"'; page::globalVar('h1', $msg); page::globalVar('title', $msg); // Получаем список классов $classes_filter = array(); if (!empty($_POST['classes'])) { $tmp = explode(",", $_POST['classes']); $classes_filter = array(); foreach ($tmp as $v) { $v = trim($v); if (!empty($v)) { $classes_filter[] = $v; } } } $max_count = reg::getKey(ormPages::getPrefix('search') . '/max_count'); $start = (system::getCurrentNavNum() - 1) * $max_count; $result = tags::find(array($tag['id']), $max_count, $start, $classes_filter); $list = ''; while (list($num, $val) = each($result['pages'])) { if ($page = ormPages::get($val['page_id'])) { page::assign('obj.id', $page->id); page::assign('obj.num', $num + $start + 1); page::assign('obj.name', $page->name); page::assign('obj.url', $page->_url); //page::assign('obj.content', $page->content); $cn = $page->getClass()->getSName(); $block_name = isset($TEMPLATE['list_' . $cn]) ? 'list_' . $cn : 'list'; $list .= page::parse($TEMPLATE[$block_name]); } } page::assign('count_page', ceil($result['count'] / $max_count)); } else { $list = ''; $msg = lang::get('SEARCH_H1_TAGS2'); page::globalVar('h1', $msg); page::globalVar('title', $msg); } if (!empty($list)) { page::assign('list', $list); page::fParse('list', $TEMPLATE['frame_list']); } else { page::fParse('list', $TEMPLATE['not_found']); } return page::parse($TEMPLATE['frame']); }
public function activateAction() { if (!reg::getKey('/users/reg') || !reg::getKey('/users/activation')) { system::redirect('/'); } if ($userKey = system::checkVar(system::url(2), isMD5)) { // Ищем нужного пользователя $sel = new ormSelect('user'); $sel->where('md5_flag', '=', $userKey); $sel->limit(1); if ($user = $sel->getObject()) { $key = md5(date('d.m.Y') . 'activate' . $user->id); if ($key == $userKey) { $user->active = 1; $user->md5_flag = ''; $user->save(); // Авторизуем пользователя user::authHim($user); page::globalVar('h1', lang::get('USERS_ADD_H1')); page::globalVar('title', lang::get('USERS_ADD_H1')); return lang::get('USERS_ADD_MSG2'); } } } return ormPages::get404(); }
public function delete() { if (!empty($this->id) && $this->id != 1) { $is_ok = true; $list = languages::getAll(); while (list($key, $val) = each($list)) { // Удаление страниц $tmp = ormPages::delAllFor($this->id, $val['id']); if (!$tmp) { $is_ok = $tmp; } else { // Удаление прав на домен db::q('DELETE FROM <<modules_rights>> WHERE mr_name = "' . $val['id'] . ' ' . $this->id . '" and mr_mod_id = "3";'); } } // Удаление домена if ($is_ok) { $is_ok = db::q('DELETE FROM <<domains>> WHERE d_id = "' . $this->id . '";'); if ($is_ok !== false) { // Удаление настроек reg::delKey('/structure/' . $this->id); system::log('Удален домен "' . $this->values['d_name'] . '" (id:' . $this->id . ')', warning); return true; } else { system::log('Произошла ошибка при удалении домена "' . $this->values['d_name'] . '" (id:' . $this->id . ')', error); $this->newError(12, 'Произошла ошибка при удалении домена "' . $this->values['d_name'] . '"!'); } } else { system::log('Пользователь пытался удалить домен "' . $this->values['d_name'] . '" (id:' . $this->id . '), но ему не хватило прав на удаление всех страниц!', error); $this->newError(63, 'Вы не можете удалить домен "' . $this->values['d_name'] . '", т.к. не имеете прав на удаление некоторых страниц!'); } } return false; }
static function start() { header('Content-Type: text/html; charset=utf-8'); self::parseUrl(); // Опредяем текущий язык и домен (в случае необходимости обрезаем URL) languages::curLang(); // Устанавливаем в доступ языковые переменные if (file_exists(MODUL_DIR . '/core/sitelang-' . languages::curPrefix() . '.php')) { include MODUL_DIR . '/core/sitelang-' . languages::curPrefix() . '.php'; lang::setLang($LANG); } // Подключаем класс для работы с текущим пользователем user::init(); // активация шаблонной системы self::$defTemplate = '/structure/default.tpl'; page::init('%', '%'); page::globalVar('h1', ''); page::globalVar('title', ''); page::globalVar('site_name', domains::curDomain()->getSiteName()); page::globalVar('base_email', domains::curDomain()->getEmail()); page::globalVar('user_id', user::get('id')); page::globalVar('pre_lang', languages::pre()); page::globalVar('time', time()); page::globalVar('current_url', self::getCurrentUrl()); page::globalVar('current_url_pn', self::getCurrentUrlPN()); page::assign('current_url', self::getCurrentUrl()); page::assign('current_url_pn', self::getCurrentUrlPN()); // Заглушка для IE6 if (reg::getKey('/core/noIE6') && preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT'])) { $val = explode(" ", stristr($_SERVER['HTTP_USER_AGENT'], 'msie')); if ($val[1] == '6.0;') { page::parseIt('/ieDie.tpl', false, true); system::stop(); } } // Заглушка для IE7 if (reg::getKey('/core/noIE7') && preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT'])) { $val = explode(" ", stristr($_SERVER['HTTP_USER_AGENT'], 'msie')); if ($val[1] == '7.0;') { page::parseIt('/ieDie.tpl', false, true); system::stop(); } } // Заглушка для IE8 if (reg::getKey('/core/noIE8') && preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT'])) { $val = explode(" ", stristr($_SERVER['HTTP_USER_AGENT'], 'msie')); if ($val[1] == '8.0;') { page::parseIt('/ieDie.tpl', false, true); system::stop(); } } // Оффлайн сообщение if (!domains::curDomain()->online() && !user::isAdmin() && !(self::issetUrl(0) && self::url(0) == 'mpanel')) { page::globalVar('content', domains::curDomain()->getOfflineMsg()); page::parseIt('/offline.tpl', false, true); system::stop(); } // Генерация файлов robots.txt и sitemap.xml ormPages::getContentFileRobots(); ormPages::getContentFileSiteMap(); // Проверяем, есть ли текущая страница в кэше page::checkCache(); // Вызов макроса через Ajax page::callAjaxMacros(); // Парсим мето-информацию "по умолчанию" page::globalVar('keywords', reg::getKey(ormPages::getPrefix() . '/keywords')); page::globalVar('description', reg::getKey(ormPages::getPrefix() . '/description')); // Загрузка необходимого функционала в зависимости от адреса $content = ''; // Пытаемся загрузить МОДУЛЬ if (self::issetUrl(0)) { $content = self::loadController('controller'); } // Пытаемся загрузить СТРАНИЦУ if (!self::issetUrl(0) || $content === false) { $content = self::loadController('controller', 1, 'structure'); } // Отображение сообщения "Страница не найдена" if (empty($content)) { $content = ormPages::get404(); } // Парсим контент на страницу page::fParse('content', $content); // Версия для печати $print_file = '/structure/_' . self::getCurrentNavVal() . '.tpl'; if (self::getCurrentNavVal() != '' && file_exists(TEMPL_DIR . $print_file)) { self::$defTemplate = $print_file; } if (!self::$isAdmin) { $title = str_replace('%text%', page::getGlobalVar('title'), reg::getKey(ormPages::getPrefix() . '/title_prefix')); page::globalVar('title', $title); if (file_exists(MODUL_DIR . '/core/template/minitext.tpl')) { include MODUL_DIR . '/core/template/minitext.tpl'; } // Мини-тексты, если есть $list = reg::getList(ormPages::getPrefix() . '/minitext'); while (list($id, $val) = each($list)) { //инлайн редактирование if (user::isAdmin() && user::issetRight('minitext_edit', 'structure')) { $val = str_replace('%val%', $val, str_replace('%id%', $id, $TEMPLATE['frame'])); } page::globalVar('text_' . $id, $val); } } // Выводим содержимое на экран page::parseIt(self::$defTemplate); // Завершение работы self::stop(); }