function App($rootdir, $args) { Profiler::StartTimer("WebApp", 1); Profiler::StartTimer("WebApp::Init", 1); Profiler::StartTimer("WebApp::TimeToDisplay", 1); $GLOBALS["webapp"] = $this; register_shutdown_function(array('Logger', 'processShutdown')); ob_start(); $this->rootdir = $rootdir; $this->debug = !empty($args["debug"]); $this->getAppVersion(); Logger::Info("WebApp Initializing (" . $this->appversion . ")"); Logger::Info("Path: " . get_include_path()); $this->initAutoLoaders(); Logger::Info("Turning Pandora flag on"); if (class_exists("PandoraLog")) { $pandora = PandoraLog::singleton(); $pandora->setFlag(true); } $this->locations = array("scripts" => "htdocs/scripts", "css" => "htdocs/css", "tmp" => "tmp", "config" => "config"); $this->request = $this->ParseRequest(NULL, $args); $this->locations["basedir"] = $this->request["basedir"]; $this->locations["scriptswww"] = $this->request["basedir"] . "/scripts"; $this->locations["csswww"] = $this->request["basedir"] . "/css"; $this->locations["imageswww"] = $this->request["basedir"] . "/images"; $this->InitProfiler(); $this->cfg = ConfigManager::singleton($rootdir); $this->InitProfiler(); // reinitialize after loading the config $this->locations = array_merge($this->locations, $this->cfg->locations); $this->data = DataManager::singleton($this->cfg); set_error_handler(array($this, "HandleError"), error_reporting()); DependencyManager::init($this->locations); if ($this->initialized()) { try { $this->session = SessionManager::singleton(); // Set sticky debug flag if (isset($this->request["args"]["debug"])) { $this->debug = $_SESSION["debug"] = $this->request["args"]["debug"] == 1; } else { if (!empty($_SESSION["debug"])) { $this->debug = $_SESSION["debug"]; } } $this->cobrand = $this->GetRequestedConfigName($this->request); $this->cfg->GetConfig($this->cobrand, true, $this->cfg->role); $this->ApplyConfigOverrides(); $this->locations = DependencyManager::$locations = $this->cfg->locations; // And the google analytics flag if (isset($this->request["args"]["GAalerts"])) { $this->GAalerts = $this->session->temporary["GAalerts"] = $this->request["args"]["GAalerts"] == 1 ? 1 : 0; } else { if (!empty($this->session->temporary["GAalerts"])) { $this->GAalerts = $this->session->temporary["GAalerts"]; } else { $this->GAalerts = 0; } } $this->apiversion = any($this->request["args"]["apiversion"], ConfigManager::get("api.version.default"), 0); $this->tplmgr = TemplateManager::singleton($this->rootdir); $this->tplmgr->assign_by_ref("webapp", $this); $this->components = ComponentManager::singleton($this); $this->orm = OrmManager::singleton(); //$this->tplmgr->SetComponents($this->components); } catch (Exception $e) { print $this->HandleException($e); } } else { $fname = "./templates/uninitialized.tpl"; if (($path = file_exists_in_path($fname, true)) !== false) { print file_get_contents($path . "/" . $fname); } } $this->user = User::singleton(); $this->user->InitActiveUser($this->request); // Merge permanent user settings from the URL if (!empty($this->request["args"]["settings"])) { foreach ($this->request["args"]["settings"] as $k => $v) { $this->user->SetPreference($k, $v, "user"); } } // ...and then do the same for session settings if (!empty($this->request["args"]["sess"])) { foreach ($this->request["args"]["sess"] as $k => $v) { $this->user->SetPreference($k, $v, "temporary"); } } // And finally, initialize abtests if (class_exists(ABTestManager)) { Profiler::StartTimer("WebApp::Init - abtests", 2); $this->abtests = ABTestmanager::singleton(array("cobrand" => $this->cobrand, "v" => $this->request["args"]["v"])); Profiler::StopTimer("WebApp::Init - abtests"); } Profiler::StopTimer("WebApp::Init"); }
function App($rootdir, $args) { Profiler::StartTimer("WebApp", 1); Profiler::StartTimer("WebApp::Init", 1); Profiler::StartTimer("WebApp::TimeToDisplay", 1); // disable notices by default. This should probably be a config option... error_reporting(error_reporting() ^ E_NOTICE); // FIXME - xdebug recursion limit causes problems in some components... ini_set('xdebug.max_nesting_level', 250); $GLOBALS["webapp"] = $this; register_shutdown_function(array($this, 'shutdown')); ob_start(); $this->rootdir = $rootdir; $this->debug = !empty($args["debug"]); $this->getAppVersion(); Logger::Info("WebApp Initializing (" . $this->appversion . ")"); Logger::Info("Path: " . get_include_path()); $this->initAutoLoaders(); if (class_exists("PandoraLog")) { Logger::Info("Turning Pandora flag on"); $pandora = PandoraLog::singleton(); $pandora->setFlag(true); } $this->InitProfiler(); $this->request = $this->ParseRequest(NULL, $args); $this->cfg = ConfigManager::singleton(array("rootdir" => $rootdir, "basedir" => $this->request["basedir"])); $this->locations = ConfigManager::getLocations(); $this->InitProfiler(); // reinitialize after loading the config Profiler::StartTimer("WebApp::Init - handleredirects", 1); $this->request = $this->ApplyRedirects($this->request); Profiler::StopTimer("WebApp::Init - handleredirects"); $this->data = DataManager::singleton($this->cfg); set_error_handler(array($this, "HandleError"), error_reporting()); DependencyManager::init($this->locations); if ($this->initialized()) { try { $this->session = SessionManager::singleton(); // Set sticky debug flag if (isset($this->request["args"]["debug"])) { $this->debug = $_SESSION["debug"] = $this->request["args"]["debug"] == 1; } else { if (!empty($_SESSION["debug"])) { $this->debug = $_SESSION["debug"]; } } $this->cobrand = $this->GetRequestedConfigName($this->request); if (isset($this->request["args"]["_role"])) { $this->role = $this->request["args"]["_role"]; } else { if (isset($this->cfg->servers["role"])) { $this->role = $this->cfg->servers["role"]; } else { $this->role = "dev"; } } $this->cfg->GetConfig($this->cobrand, true, $this->role); $this->ApplyConfigOverrides(); $this->locations = DependencyManager::$locations = $this->cfg->locations; // And the google analytics flag if (isset($this->request["args"]["GAalerts"])) { $this->GAalerts = $this->session->temporary["GAalerts"] = $this->request["args"]["GAalerts"] == 1 ? 1 : 0; } else { if (!empty($this->session->temporary["GAalerts"])) { $this->GAalerts = $this->session->temporary["GAalerts"]; } else { $this->GAalerts = 0; } } $this->apiversion = isset($this->request["args"]["apiversion"]) ? $this->request["args"]["apiversion"] : ConfigManager::get("api.version.default", 0); $this->tplmgr = TemplateManager::singleton($this->locations); $this->tplmgr->assign_by_ref("webapp", $this); $this->components = ComponentManager::singleton($this); if (class_exists("OrmManager")) { $this->orm = OrmManager::singleton($this->locations); } //$this->tplmgr->SetComponents($this->components); } catch (Exception $e) { print $this->HandleException($e); } } else { $fname = "components/elation/templates/uninitialized.html"; if (($path = file_exists_in_path($fname, true)) !== false) { print file_get_contents($path . "/" . $fname); } } $this->user = User::singleton(); $this->user->InitActiveUser($this->request); // Merge permanent user settings from the URL if (!empty($this->request["args"]["settings"])) { foreach ($this->request["args"]["settings"] as $k => $v) { $this->user->SetPreference($k, $v, "user"); } } // ...and then do the same for session settings if (!empty($this->request["args"]["sess"])) { foreach ($this->request["args"]["sess"] as $k => $v) { $this->user->SetPreference($k, $v, "temporary"); } } // And finally, initialize abtests if (class_exists("ABTestManager")) { Profiler::StartTimer("WebApp::Init - abtests", 2); $this->abtests = ABTestmanager::singleton(array("cobrand" => $this->cobrand, "v" => $this->request["args"]["v"])); Profiler::StopTimer("WebApp::Init - abtests"); } Profiler::StopTimer("WebApp::Init"); }