Exemple #1
0
                        $start_id = $article->id;
                    }
                }
            }
            $i += $limit;
        }
        //while
        flush();
        echo "create cache over!\n";
    }
    public function createHtml($obj = null)
    {
        global $tpl;
        if (is_object($obj)) {
            //smarty
            $tpl->assign('post', $obj);
            $tpl->assign('recent_post', $this->recent_post);
            $tpl->assign('categories', $this->categories);
            $tpl->assign('tag_list', $this->tags_list);
            $filetpl = SYSTEM_ROOT . 'templates/' . DEFAULT_TEMPLATE . '/post.html';
            $path = SYSTEM_ROOT . 'post/';
            //$filename = !empty($obj->slug) ? str_replace(' ', '-', trim($obj->slug)) : $obj->id;
            $filename = $obj->id;
            $file = $path . $filename . '.html';
            file_put_contents($file, $tpl->fetch($filetpl));
            @chmod($file, 0777);
        }
    }
}
$c_cache = new c_cache();
$c_cache->create();
Exemple #2
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;
}