vrana?php
// $bswms_debug = true; // ladeni
/*
JADRO SYSTEMU BSWMS 1.0
bswms_init() - inicializace systemu
bswms_getContent() - ziskani obsahu
bswms_processContent() - zpracovani obsahu
bswms_output() - vystup do prohlizece
bswms_final() - zaverecne akce po vystupu
GLOBALNI PROMENNE:
bswms_config_hostredir
bswms_config_hostredir_from
bswms_config_hostredir_to
bswms_http_host
*/
// includy
include("conf/bswms_conf.php"); //konfigurace BSWMS, nacitat jako prvni
include("local/bswms_local_conf.php"); //konfigurace BSWMS pro lokalni stroj - pripojeni k DB, serverove hlavicky apod.
include("lib/bswms_lib.php"); // odkazy na knihovny
include("modules/bswms_modules.php"); // odkazy na moduly
include("bswms_core_func.php"); //funkce jadra systemu
include("bswms_base.php"); //zakladni funkce BSWMS
include("bswms_page_functions.php"); //funkce pouzitelne pri nahrazovani
include("pgs/php/bswms_content_functions.php"); // funkce pro ziskavani obsahu
include("pgs/php/bswms_include.php"); // cokoliv co si chce kdokoliv do systemu pridat
// INICIALIZACE SYSTEMU BSWMS
function bswms_init()
{
debout("Initializing BSWMS ...");
bswms_init_variables(); // nacteni zakladnich promennych systemu
bswms_host_redirect(); // velmi jednoducha nahrazka mod rewrite
bswms_load_pages(); // nacteni struktury stranek - zaroven se inicializuji moduly
bswms_load_menus(); // nacteni uzivatelsky definovanych menu
if (!$GLOBALS["bswms_content_ok"])
{
bswms_get_page_call(); // nacteni promenne, ktera ridi zdroj obsahu - BSWMS_PAGE_CALL
bswms_internal_redirect(); //presmerovani v ramci stranek (pri zmene adresy nejake stranky)
bswms_getContent(); // ziskani obsahu
}
bswms_processContent();
bswms_output();
bswms_final();
}
function bswms_getContent()
{
debout("
Retreiving content ...");
$GLOBALS["bswms_page_status"] = 200;
// zjistit, zda se nejedna o adresu, kterou bude obsluhovat nejaky z modulu
if (is_array($GLOBALS["bswms_modules_list"]))
{
foreach($GLOBALS["bswms_modules_list"] as $modul)
{
$modul_call = $GLOBALS["bswms_modules"][$modul]["module"]; // nazev modulu ktery se ma volat
$porovnej = substr($GLOBALS["bswms_page_call"], 0, strlen($GLOBALS["bswms_modules"][$modul]["url"]));
if ($porovnej == $GLOBALS["bswms_modules"][$modul]["url"])
{
$url = (substr($GLOBALS["bswms_page_call"], strlen($porovnej)));
debout("Calling module " . $modul_call . " for internal module url: " . $url);
$volat = "bswms_mod_" . $modul_call . "_get_content";
$GLOBALS["bswms_module_base_uri"] = $GLOBALS["bswms_base_uri"] . $GLOBALS["bswms_modules"][$modul]["url"];
$GLOBALS["bswms_module_id"] = $modul;
$GLOBALS["bswms_page_content"] = $volat($url);
if ($GLOBALS["bswms_page_content"] == "!404")
{
$jump_not_found = true; // pokud modul vrati jako obsah stranky !404 tak rovnou skok na not found
}
}
}
}
if (!$GLOBALS["bswms_content_ok"] && !$jump_not_found) // pokud volanou adresu neobsluhuje zadny modul
{
debout("Searching page structure for content ...");
foreach($GLOBALS["bswms_pages_list"] as $stranka)
{
if ($GLOBALS["bswms_pages"][$stranka]["url"] == $GLOBALS["bswms_page_call"])
{
$GLOBALS["bswms_page_id"]= $stranka;
if ($GLOBALS["bswms_pages"][$stranka]["type"] == "VP") // jestlize je to virtualni stranka VP
{
$GLOBALS["bswms_page_content"] = bswms_get_page_content($GLOBALS["bswms_page_id"]);
}
elseif ($GLOBALS["bswms_pages"][$stranka]["type"] == "FN") // jestlize je to virtualni stranka obsluhovana funkci
{
$data = split("!", $stranka, 2);
$volat = "bswms_page_content_func_" . $data[0];
$GLOBALS["bswms_page_content"] = $volat($data[1]);
}
else // pokud typ stranky neni ani VP ani FN tak tady nema co delat a nekde byla chyba
{
bswms_system_error("Nelze načíst obsah - nesprávný typ stránky.", "Unable to load content.");
}
$GLOBALS["bswms_content_ok"] = true;
debout("Called page ID: " . $GLOBALS["bswms_page_id"]);
}
}
}
if (!$GLOBALS["bswms_content_ok"])
{ // jeste nebyl ziskan obsah
debout($GLOBALS["bswms_page_call"] . "|" . $GLOBALS["bswms_config_sitemap_uri"]);
if ($GLOBALS["bswms_page_call"] == $GLOBALS["bswms_config_sitemap_uri"])
{ // pokud se jedna o adresu mapy stranek
debout("Loading sitemap ...");
bswms_site_map();
}
else
{ // vubec se nepodarilo ziskat obsah
// OTESTOVAT ZDA-LI NEEXISTUJE OBSAH NA BLIZKE URL
if ($GLOBALS["bswms_get_content_test_similar_uri"]) return;
// pokud je tohle jen test ziskani obsahu na podobne URI pak dal nepokracovat
debout("Page not found! Loading not found handler.");
debout("Testing similar URIs for content ...");
$GLOBALS["bswms_get_content_test_similar_uri"] = true; // zamknout pro dalsi vstup, aby nemohlo dojit k cykleni
$puvodni_page_call = $GLOBALS["bswms_page_call"];
if (substr($GLOBALS["bswms_page_call"], -1, 1) == '/')
{ // pokud stavajici adresa konci lomitkem
// zatim nic - kdyztak nekdy treba dopsat ubirani lomitka
}
else
{ // pokud je stavajici adresa bez koncoveho lomitka
// zkusit jestli nebude fungovat adresa s pridanym lomitkem
debout(" - with end slash");
$GLOBALS["bswms_page_call"] = $GLOBALS["bswms_page_call"] . '/';
bswms_getContent(); // zkusit ziskat obsah
if ($GLOBALS["bswms_content_ok"])
{ // adresa s pridanym lomitkem funguje
$GLOBALS["bswms_page_call"] = $puvodni_page_call;
$GLOBALS["bswms_content_ok"] = false;
debout("FOUND CONTENT ON SIMILAR URI WITH END SLASH, redirecting ...");
bswms_redirect301($GLOBALS["bswms_request_uri"] . '/');
return;
}
}
$GLOBALS["bswms_page_status"] = 404;
bswms_not_found();
}
}
}
function bswms_processContent()
{
debout("
Processing content ...");
$GLOBALS["bswms_page_output"] = $GLOBALS["bswms_page_content"];
//nechat spustit funkci aby kdyz je system spusten ze skriptu mohl skript provest veci, ktere je nutne
//provest az napriklad po nacteni struktury a obsahu
if (function_exists("bswms_script_run_function")) bswms_script_run_function();
// vytvorit seznam nodu stromu, do kterych stranka patri - ty se budou napriklad automaticky rozbalovat v menu
$stranka = $GLOBALS["bswms_page_id"];
while ($stranka != "TOP")
{
if ($stranka == "") // v pripade ze nejaka stranka odkazuje polozkou parent na neexistujici
{ bswms_system_error("Nekonzistení struktura stránek! Chybný odkaz na nadřazenou úroveň u stránky " . $minula_stranka, "Error in pages structure!"); }
if (@in_array($stranka, $GLOBALS["bswms_page_active_nodes"]))
{ bswms_system_error("Zacyklení ve struktuře stránek!" . $minula_stranka, "Error in pages structure!"); }
$GLOBALS["bswms_page_active_nodes"][] = $stranka;
$minula_stranka = $stranka;
$stranka = $GLOBALS["bswms_pages"][$stranka]["parent"];
}
// pridavani sablon
debout("Adding templates ...");
if (!$GLOBALS["bswms_page_no_template"]) // pokud neni zakazano pridani sablony
{
$GLOBALS["bswms_page_template"] = $GLOBALS["bswms_pages"][$GLOBALS["bswms_page_id"]]["template"];
$GLOBALS["bswms_page_templateint"] = $GLOBALS["bswms_pages"][$GLOBALS["bswms_page_id"]]["templateint"];
// debout("TemplateInt: " . $GLOBALS["bswms_page_templateint"]);
if (!empty($GLOBALS["bswms_page_templateint"])) bswms_add_template($GLOBALS["bswms_page_templateint"]);
foreach($GLOBALS["bswms_page_active_nodes"] as $stranka)
{
unset($tadd);
$templateadd = $GLOBALS["bswms_pages"][$stranka]["templateadd"];
if ($templateadd)
{
if (strstr($templateadd, '@'))
{
$tadd = explode('@', $templateadd);
}
else
{
$tadd[] = $templateadd;
}
foreach ($tadd as $templadd)
{
$templadd = trim($templadd);
if (substr($templadd, 0, 1) == "!")
{
$templadd = substr($templadd, 1);
// zrusit pokud je to ta sama stranka
if ($stranka == $GLOBALS["bswms_page_id"])
{
debout("Nevkladam sablonu: " . $stranka . ' - ' . $GLOBALS["bswms_page_id"]);
$templadd = false;
}
}
if ($templadd)
{
bswms_add_template($templadd);
}
}
}
/*
$templateadd = $GLOBALS["bswms_pages"][$stranka]["templateadd"];
if (!empty($templateadd)) bswms_add_template($templateadd);
*/
}
if (!empty($GLOBALS["bswms_page_template"])) bswms_add_template($GLOBALS["bswms_page_template"]);
}
// NAHRAZOVANI
include ("conf/bswms_variables.php"); // nacteni promennych pouzivanych v ramci webu
include ("pgs/php/bswms_content_variables.php"); // nacteni promennych pouzivanych v ramci webu
for ($opak=1;$opak<10;$opak++)
{
bswms_nahrad_pevne();
bswms_nahrad_promenne();
bswms_nahrad_pevne();
bswms_nahrad_odkazy();
bswms_nahrad_funkce();
}
}
function bswms_output()
{
debout("