Пример #1
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');
 }
Пример #2
0
 public function defAction()
 {
     page::globalVar('h1', lang::get('SEARCH_H1'));
     page::globalVar('title', lang::get('SEARCH_H1'));
     $templ_file = '/search/default.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('search.getResult', $templ_file);
     }
     if (!empty($_SESSION['search_words']) && empty($_POST['words'])) {
         $_POST['words'] = $_SESSION['search_words'];
     }
     if (isset($_POST['classes'])) {
         $_SESSION['search_classes'] = $_POST['classes'];
     }
     if (!empty($_SESSION['search_classes']) && !isset($_POST['classes'])) {
         $_POST['classes'] = $_SESSION['search_classes'];
     }
     if (!empty($_POST['words'])) {
         $words = $_POST['words'];
         $_SESSION['search_words'] = $_POST['words'];
         // Получаем список классов
         $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 = searchIndex::find($_POST['words'], $max_count, $start, $classes_filter);
         $list = '';
         $fields_arr = array();
         if (!empty($result)) {
             $page_count = ceil($result['count'] / $max_count);
             while (list($num, $val) = each($result['pages'])) {
                 if ($page = ormPages::get($val['page_id'])) {
                     page::assign('obj.num', $num + $start + 1);
                     page::assign('obj.url', $page->_url);
                     page::assign('obj.rank', $val['rank']);
                     $cn = $page->getClass()->getSName();
                     $block_name = isset($TEMPLATE['list_' . $cn]) ? 'list_' . $cn : 'list';
                     if (!isset($fields_arr[$block_name])) {
                         $fields_arr[$block_name] = array();
                         $fields = page::getFields('obj', $TEMPLATE[$block_name]);
                         if (isset($fields['obj'])) {
                             while (list($key, $val) = each($fields['obj'])) {
                                 if ($val != 'url' && $val != 'class' && $val != 'num' && $val != 'rank') {
                                     $fields_arr[$block_name][$val] = $val;
                                 }
                             }
                         }
                     }
                     reset($fields_arr[$block_name]);
                     while (list($key, $val) = each($fields_arr[$block_name])) {
                         page::assign('obj.' . $key, $page->__get($key));
                     }
                     $list .= page::parse($TEMPLATE[$block_name]);
                 }
             }
         } else {
             $page_count = 0;
         }
         page::assign('count_page', $page_count);
     } else {
         $words = $list = '';
     }
     if (!empty($list)) {
         page::assign('list', $list);
         page::fParse('list', $TEMPLATE['frame_list']);
     } else {
         page::fParse('list', $TEMPLATE['not_found']);
     }
     page::assign('words', $words);
     return page::parse($TEMPLATE['frame']);
 }
Пример #3
0
    protected function createObject()
    {
        // Проверяем, если в структуре сайта нет домашней страницы, делаем текущую таковой
        if (isset($this->new_prop['is_home_page']) && !$this->new_prop['is_home_page']) {
            $hp = db::q('SELECT p_obj_id FROM <<pages>>
		        		WHERE lang_id = "' . languages::curId() . '" and
				       		  domain_id = "' . domains::curId() . '" and
			        		  is_home_page = 1', value);
            $this->new_prop['is_home_page'] = empty($hp) ? 1 : 0;
        }
        $ret = parent::createObject();
        if ($ret !== false) {
            $this->saveRight(true);
            if (isset($this->new_prop['pseudo_url']) && strlen($this->new_prop['pseudo_url']) > 80) {
                $this->new_prop['pseudo_url'] = $this->id;
            }
            $fields = '';
            reset($this->new_prop);
            while (list($key, $value) = each($this->new_prop)) {
                if ($this->isPageField($key)) {
                    $fields .= $this->procValue($key, $value);
                }
            }
            $fields = substr($fields, 0, strlen($fields) - 2);
            if (!empty($fields)) {
                $this->setHomePage(false);
                $fields = ', ' . $fields;
                $sql = 'INSERT INTO <<pages>>
		       			SET p_obj_id = "' . $this->id . '",
		       				lang_id = "' . languages::curId() . '",
		       				domain_id = "' . domains::curId() . '"' . $fields . ';';
                if (db::q($sql) !== false) {
                    $ret = $this->id;
                    searchIndex::autoIndex($this);
                    ormPages::clearCache();
                    system::revue($this, 'Добавил страницу', info);
                } else {
                    $ret = false;
                }
            }
        }
        return $ret;
    }