Example #1
0
 public function defAction()
 {
     function getClassName($val, $obj)
     {
         if ($obj = ormPages::get($val)) {
             return $obj->getClass()->getName();
         }
     }
     $sel = new ormSelect('feedback');
     $sel->findInPages();
     $sel->where('form_id', '<>', 0);
     $sel->orderBy('create_date', desc);
     $table = new uiTable($sel);
     $table->showSearch(true);
     $table->formatValues(true);
     $table->addColumn('content', 'Текст сообщения', 300);
     $table->addColumn('name', 'Имя пользователя', 120);
     $table->addColumn('email', 'E-mail', 120);
     $table->addColumn('create_date', 'Дата публикации', 120);
     $table->addColumn('id', 'Тип', 120, 0, 1, 'getClassName');
     $table->defaultRight('message_upd');
     $table->addRight('message_act', 'active', multi);
     $table->addRight('message_upd', 'edit', single);
     $table->addRight('message_del', 'drop', multi);
     return $table->getHTML();
 }
Example #2
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');
 }
Example #3
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();
    }
Example #4
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);
 }
Example #5
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']);
 }
Example #6
0
 public function __get($name)
 {
     if ($name == 'url' && !empty($this->id)) {
         if (empty($this->url)) {
             $this->url = ormPages::getPageUrlById($this->id);
         }
         //echo $this->id.'|'.$this->url.'<br/>';
         return $this->url;
     } else {
         if ($name == '_url' && !empty($this->id)) {
             if (empty($this->_url)) {
                 if ($this->__get('other_link') != '') {
                     $link = $this->__get('other_link');
                     if ($link == '/first_subsection') {
                         $sel = new ormSelect();
                         /// $sel->fields('id');
                         $sel->findInPages();
                         $sel->where('parents', '=', $this->id);
                         $sel->orderBy('position');
                         $sel->limit(1);
                         if ($subsection = $sel->getObject()) {
                             $this->_url = $subsection->__get('_url');
                         }
                     } else {
                         $this->_url = $link;
                     }
                 } else {
                     $this->_url = ormPages::getPageUrlById($this->id);
                 }
             }
             return $this->_url;
         } else {
             if ($name == 'first_children_id' && !empty($this->id)) {
                 $sel = new ormSelect();
                 $sel->findInPages();
                 $sel->where('parents', '=', $this->id);
                 $sel->fields('id');
                 $sel->limit(1);
                 $order_by = $this->__get('order_by');
                 if (!empty($order_by)) {
                     $pos = strpos($order_by, ' ');
                     if ($pos) {
                         $parram = substr($order_by, $pos + 1);
                         $order_by = substr($order_by, 0, $pos);
                     } else {
                         $parram = '';
                     }
                     $sel->orderBy($order_by, $parram);
                 }
                 return $sel->getObject()->id;
             } else {
                 if ($name == 'count_children' && !empty($this->id)) {
                     return $this->countChildren();
                 } else {
                     if ($this->isSysField($name) && isset($this->cur_prop[$name])) {
                         return $this->cur_prop[$name];
                     } else {
                         if ($this->isSysField($name) && isset($this->new_prop[$name])) {
                             return $this->new_prop[$name];
                         } else {
                             return parent::__get($name);
                         }
                     }
                 }
             }
         }
     }
 }
Example #7
0
 /**
  * @return HTML
  * @param int $section_id - ID новостной ленты, для которой необходимо построить RSS-ленту
  * @param string $templ_name - Шаблон оформления, по которому будет строится RSS-лента
  * @desc МАКРОС: Выводит содержимое RSS-ленты.
  */
 public function rss($section_id, $templ_name = 'rss')
 {
     $templ_file = '/structure/rss/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('structure.rss', $templ_file);
     }
     $cur_domain = 'http://' . domains::curDomain()->getName();
     page::assign('channel.url', $cur_domain);
     page::assign('channel.date', date('r'));
     page::assign('channel.notice', '');
     // Определяем из каких категорий выводить ленту новостей
     $sections = array();
     if ($section_id == 'all') {
         // Из нескольких
         $sel = new ormSelect('news_feed');
         $sel->findInPages();
         $sel->fields('id');
         $sel->where('rss_export', '=', 1);
         $sel->where('active', '=', 1);
         while ($obj = $sel->getObject()) {
             $sections[] = $obj->id;
         }
         page::assign('channel.title', domains::curDomain()->getSiteName());
     } else {
         // Из одной
         $section_id = system::checkVar($section_id, isInt);
         if (empty($section_id)) {
             return '';
         }
         $sections[] = $section_id;
         if ($sect = ormPages::get($section_id)) {
             page::assign('channel.title', $sect->name);
         }
     }
     // Формируем выборку объектов
     $sel = new ormSelect();
     $sel->findInPages();
     $sel->fields('name, notice, publ_date');
     $sel->where('parents', '=', $sections, 'OR');
     $sel->where('active', '=', 1);
     $sel->orderBy('publ_date', desc);
     $sel->limit(3);
     // Формируем список
     $list = '';
     while ($obj = $sel->getObject()) {
         $num = $sel->getObjectNum() + 1;
         page::assign('obj.num', $num);
         page::assign('obj.id', $obj->id);
         page::assign('obj.url', $cur_domain . $obj->_url);
         page::assign('obj.name', $obj->name);
         $notice = str_replace('&nbsp;', '', strip_tags($obj->notice));
         page::assign('obj.notice', $notice);
         $date = date('r', strtotime($obj->publ_date));
         page::assign('obj.date', $date);
         /*
         if ($obj->podkast != '') {
             page::assign('obj.media_url', $cur_domain.$obj->podkast);
             page::fParse('media', $TEMPLATE['media']);
         } else
             page::assign('media', '');
         */
         if (isset($TEMPLATE['list'])) {
             $list .= page::parse($TEMPLATE['list']);
         } else {
             return page::errorBlock('structure.rss', $templ_file, 'list');
         }
     }
     if (!empty($list)) {
         page::assign('list', $list);
         if (isset($TEMPLATE['frame_list'])) {
             $list = page::parse($TEMPLATE['frame_list']);
         } else {
             return page::errorBlock('structure.rss', $templ_file, 'frame_list');
         }
     }
     return $list;
 }
Example #8
0
 static function checkObjectLinks()
 {
     if (system::url(0) == 'getObjectLinksTree') {
         if (file_exists(MODUL_DIR . '/mpanel/template/objectLinks.tpl')) {
             include MODUL_DIR . '/mpanel/template/objectLinks.tpl';
         }
         $tree = new ormTree(457, 0);
         $tree->miniStyle();
         $tree->setClass('ormPage');
         $tree->setRoot(0, reg::getKey(ormPages::getPrefix() . '/title_prefix'));
         $tree->setRightAjaxLoad('tree');
         page::assign('tree', $tree->getHTML());
         page::assign('parram', system::url(1));
         echo page::parse($TEMPLATE['tree_frame']);
         system::stop();
     } else {
         if (system::url(0) == 'getObjectLinks') {
             if (file_exists(MODUL_DIR . '/mpanel/template/objectLinks.tpl')) {
                 include MODUL_DIR . '/mpanel/template/objectLinks.tpl';
                 if (!($obj = ormPages::get(system::url(1)))) {
                     $obj = ormObjects::get(system::url(1));
                 }
                 if ($obj instanceof ormObject && !$obj->issetErrors()) {
                     page::assign('id', $obj->id);
                     page::assign('name', $obj->name);
                     page::assign('url', $obj->url);
                     page::assign('field_name', system::url(2));
                     page::assign('field_id', system::url(3));
                     if ($obj->getClass()->isPage()) {
                         echo page::parse($TEMPLATE['new_object_link']);
                     } else {
                         echo page::parse($TEMPLATE['object_link']);
                     }
                 }
             }
             system::stop();
         } else {
             if (system::url(0) == 'findObjectLinks' && isset($_POST['query'])) {
                 // Формируем список подсказок
                 $sel = new ormSelect();
                 $sel->findInPages();
                 $sel->fields('name');
                 $sel->where('name', 'LIKE', '%' . $_POST['query'] . '%');
                 $list = $list2 = '';
                 while ($obj = $sel->getObject()) {
                     $zapi = $sel->getObjectNum() != 0 ? ', ' : '';
                     $list .= $zapi . "'" . $obj->name . "'";
                     $list2 .= $zapi . " ['" . $obj->id . "', '" . system::url(1) . "' ]";
                 }
                 echo "{ query:'" . $_POST['query'] . "', suggestions:[" . $list . "], data:[" . $list2 . "] }";
                 system::stop();
             }
         }
     }
 }