Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 function xsl_out()
 {
     return xsl_out($this->xsl, $this->root_node, $this->h_data, $this->is_debug, $this->xsl_params);
 }
Ejemplo n.º 4
0
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;
}