Esempio n. 1
0
 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();
 }
Esempio n. 2
0
 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']);
 }
Esempio n. 3
0
 /**
  * @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);
             }
         }
     }
 }
Esempio n. 4
0
 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');
 }
Esempio n. 5
0
 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 . '".';
     }
 }
Esempio n. 6
0
 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();
 }
Esempio n. 7
0
 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;
 }
Esempio n. 8
0
 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('/');
         }
     }
 }
Esempio n. 9
0
    /**
     * @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);
            }
        }
    }
Esempio n. 10
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));
 }
Esempio n. 11
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');
 }
Esempio n. 12
0
    /**
    * @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);
            }
        }
    }
Esempio n. 13
0
 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;
 }
Esempio n. 14
0
    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();
    }
Esempio n. 15
0
 /**
 * @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);
         }
     }
 }
Esempio n. 16
0
 /**
  * @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']);
 }
Esempio n. 17
0
 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);
         }
     }
 }
Esempio n. 18
0
 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();
 }
Esempio n. 19
0
 public function defAction()
 {
     return ormPages::get404();
 }
Esempio n. 20
0
 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']);
     }
 }
Esempio n. 21
0
    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();
    }
Esempio n. 22
0
 function getClassName($val, $obj)
 {
     if ($obj = ormPages::get($val)) {
         return $obj->getClass()->getName();
     }
 }
Esempio n. 23
0
 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();
     }
 }
Esempio n. 24
0
 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);
 }
Esempio n. 25
0
 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']);
             }
         }
     }
 }
Esempio n. 26
0
 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']);
         }
     }
 }
Esempio n. 27
0
 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']);
 }
Esempio n. 28
0
 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();
 }
Esempio n. 29
0
    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;
    }
Esempio n. 30
0
 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();
 }