function get_pages($count_total, $count_line_on_page, $count_pages_on_pager = 10) { $count_pages = ceil($count_total / $count_line_on_page); if ($count_pages < 1) { $count_pages = 1; } $dta = array(); $dta['total_items'] = $count_total; $dta['items_per_page'] = $count_line_on_page; $dta['page_selected'] = $this->page_selected; $dta['page_last'] = $this->make_page($count_pages); $dta['page_first'] = $this->make_page(1); if ($this->page_selected - 1 > 0) { $dta['page_prev'] = $this->make_page($this->page_selected - 1); } if ($this->page_selected + 1 <= $count_pages) { $dta['page_next'] = $this->make_page($this->page_selected + 1); } $cur_left = $this->page_selected; $cur_right = $this->page_selected; $tmp_pages = array(); $limit_pages = min($count_pages, $count_pages_on_pager); while (count($tmp_pages) < $limit_pages) { if ($cur_left > 0) { $tmp_pages[$cur_left] = $this->make_page($cur_left); $cur_left--; } if (count($tmp_pages) < $limit_pages) { if ($cur_right <= $count_pages) { $tmp_pages[$cur_right] = $this->make_page($cur_right); $cur_right++; } } } //while ksort($tmp_pages); $tmp_pages = array_values($tmp_pages); $dta['pages'] = $tmp_pages; if (isset($_REQUEST['debug_xsl']) && _GL_DEBUG === true) { $old_is_debug = $_REQUEST['debug_xsl']; unset($_REQUEST['debug_xsl']); } $res = $dta; $res['html'] = xsl_out($this->xsl_file, 'pager', $dta, false, $this->params); if (isset($old_is_debug)) { $_REQUEST['debug_xsl'] = $old_is_debug; } return $res; }
function get_validation_rules() { $tmp = $_REQUEST['debug_xsl']; $_REQUEST['debug_xsl'] = 0; $text = xsl_out("common/validation_rules.xsl", 'rules', $this->fields, false); $_REQUEST['debug_xsl'] = $tmp; $text = preg_replace("#,[\\s\n]*?}#", "}", $text); return $text; }
function xsl_out() { return xsl_out($this->xsl, $this->root_node, $this->h_data, $this->is_debug, $this->xsl_params); }
function run_site() { global $o_global; /* Ищем обработчик для заданного пути * обработчики задаются в _site.xml * * Если для пути /one/two/three в _site.xml обработчик не задан, то ищется обработчик для /one/two, * если нет и для этого пути, то бурётся обработчик для /one. Иначе выводится 404 * * */ $url_params = $o_global->url_params; if ($url_params[0] == 'res') { //для ресурсов сразу отдаём 404 header("HTTP/1.0 404 Not Found"); /*$tmp=$o_global->site_root.implode('/',$url_params); echo file_get_contents($tmp);*/ exit; } do { $cur_page = $o_global->get_page_by_screen($url_params); array_pop($url_params); } while ($cur_page === false && !empty($url_params)); $o_global->curr_page = $cur_page; if ($o_global->curr_page === false) { //попробуем найти эту же страницу, но без учёта прав $url_params = $o_global->url_params; do { $cur_page_nr = $o_global->get_page_by_screen($url_params, $o_global->site_full_array['pages']); array_pop($url_params); } while ($cur_page_nr === false && !empty($url_params)); if ($cur_page_nr === false) { //этой страницы нет вообще $o_global->curr_page = $o_global->get_page_by_screen('404'); if ($o_global->curr_page === false) { header("HTTP/1.0 404 Not Found"); echo '404'; exit; } } else { //эта страница есть, значит для просмтора не хватает прав //перебросим на страницу логина if (!$o_global->is_ajax) { global $o_session; $o_session->set_session('login_from', '', $_SERVER['REQUEST_URI']); redirect_to('/login'); } else { echo 'error'; exit; } } } //если задан редирект if (isset($o_global->curr_page['redirect'])) { redirect_to($o_global->curr_page['redirect']['.']); } if ($o_global->curr_page['@ajax'] == 1) { $o_global->is_ajax = true; } $out_result = false; /*Begin проверим кеш*/ if ($o_global->settings_array['enable_cache']['.'] == 1 && $o_global->curr_page['@cache_time'] > 0) { //кеш включён $o_cache = new c_cache($o_global->curr_page['@cache_time']); if (empty($_POST) && !$o_global->is_ajax) { $cache_key = make_cache_key(); //если установлен, то кеш сохраним $out_result = $o_cache->get($cache_key); } else { //какие-то действия, значит надо очистить кеш $o_cache->remove(make_cache_key()); } } /*End проверим кеш*/ /*Begin из кеша не взяли*/ if ($out_result === false) { $handlers = $o_global->curr_page['handlers']; if (is_array($handlers)) { if ($o_global->is_ajax) { $handler = $handlers['content']['.']; if (load_handler($handler)) { $handler_class = get_handler_class($handler); $o_handler = new $handler_class(); $o_handler->handler_info = $handlers['content']; $out_result = $o_handler->run(); } } else { $dta = array(); foreach ($handlers as $part => $handler_arr) { if (c_xml::is_system_key($part)) { continue; } if (!isset($o_global->curr_page['handlers'][$part])) { continue; } //в обработчик мог изменить количество обработчиков $handler = $handler_arr['.']; if (load_handler($handler)) { $handler_class = get_handler_class($handler); $o_handler = new $handler_class(); $o_handler->handler_info = $handler_arr; $dta['parts'][$part] = $o_handler->run(); } } /*устанавливаем параметры из раздела <params></params> страницы*/ if (is_array($o_global->curr_page['params'])) { foreach ($o_global->curr_page['params'] as $k => $itm) { if (c_xml::is_system_key($k)) { continue; } $params[$k] = $itm['.']; } } if (is_array($o_global->curr_page['title'])) { $params['title'] = $o_global->curr_page['title']['.']; } else { $params['title'] = $o_global->curr_page['title']; } if (is_array($o_global->curr_page['description'])) { $params['description'] = $o_global->curr_page['description']['.']; } else { $params['description'] = $o_global->curr_page['description']; } if (is_array($o_global->curr_page['keywords'])) { $params['keywords'] = $o_global->curr_page['keywords']['.']; } else { $params['keywords'] = $o_global->curr_page['keywords']; } if (is_array($o_global->curr_page['theme'])) { $out_result = xsl_out($o_global->curr_page['theme']['.'], 'page', $dta, false, $params, false, false); } else { $out_result = xsl_out($o_global->curr_page['theme'], 'page', $dta, false, $params, false, false); } } } else { //если обработчики не заданы, то просто выводим xsl $params['title'] = $o_global->curr_page['title']['.']; $params['description'] = $o_global->curr_page['description']['.']; $params['keywords'] = $o_global->curr_page['keywords']['.']; $out_result = xsl_out($o_global->curr_page['theme']['.'], 'page', array(), false, $params, false, false); } /*Begin сохраним кеш*/ if (isset($cache_key)) { $o_cache->set($cache_key, $out_result); } /*End сохраним кеш*/ } /*End из кеша не взяли*/ echo $out_result; }