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("


Output:
"); if ($GLOBALS["bswms_page_status"] == 200) { header($GLOBALS["bswms_config_server_status"][200]); } if ($GLOBALS["bswms_page_status"] == 404) { header($GLOBALS["bswms_config_server_status"][404]); } echo $GLOBALS["bswms_page_output"]; } function bswms_final() { } ?>