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']); }