not_found(); return; } elseif ($exception instanceof Exception_BadInstallation) { util::invalidInstallationMessage ($exception); } else { echo '
', $exception->getMessage (), '
'; exit; } } function errorHandler ($errno, $errstr, $errfile, $errline, array $errcontext) { $message = sprintf('%s in file %s in line %s', $errstr, $errfile, $errline); if ($errno & (E_NOTICE | E_WARNING)) { return; } Kohana::log('error', $message); echo 'Site is temporarily unavailable. Plese, come back later.
'; echo $errno; exit; } function not_found () { $this->currentLocationIs (); $view = new View_Frontend_Page('user_page'); $page404 = ORM::factory('page')->getSystemPage(Page_Model::SYSTEM_PAGE_NOT_FOUND)->find(); if ($page404->exists ()) { $this->view_name = 'error'; $page = new Theme_Page(); $page->setMacrophage (new Theme_Macrophage ()); $page->setRecord($page404); $view->page = $page; header (sprintf ('%s 404 Not Found' , $_SERVER ['SERVER_PROTOCOL'])); echo $view->render (); return; } throw new Exception_BadInstallation(Exception_BadInstallation::E_404_PAGE_DOESNOT_EXIST); } protected function defineExceptionHandler () { if (! isset (self::$__exception_handler)) { self::$__exception_handler = 1; set_exception_handler(array($this, 'exceptionHandler')); } } protected function defineErrorHandler () { if (! isset (self::$__error_handler)) { self::$__error_handler = 1; set_error_handler(array($this, 'errorHandler'), E_ALL); } } protected function defineSimpleConstants () { if (! isset (self::$__simple_constants)) { self::$__simple_constants = 1; define ('THEME_DIR', DOCROOT . 'themes/'); $database_conf_file = DATADIR . '/config/database.php'; if (file_exists ($database_conf_file)) { define ('FROWS', Setting_Model::get(Setting_Model::S_FEATURED_TYPE_ROWS)); define ('FCOLS', Setting_Model::get(Setting_Model::S_FEATURED_TYPE_COLS)); define ('COLS', Setting_Model::get(Setting_Model::S_TEMPLATE_COLS)); define ('ROWS', Setting_Model::get(Setting_Model::S_TEMPLATE_ROWS)); define ('SITE_DIR', rtrim (parse_url (Setting_Model::get (Setting_Model::S_SITE_URL), PHP_URL_PATH), '/')); $domain = parse_url (Setting_Model::get (Setting_Model::S_SITE_URL), PHP_URL_HOST); define ('DOMAIN', preg_replace ('/^www\./', '', $domain)); } else { define('SITE_DIR', substr(Kohana::config('core.site_domain'), strlen($_SERVER['HTTP_HOST']))); $host = $_SERVER['HTTP_HOST']; $prefix = 'www.'; if (strpos ($host, $prefix) === 0) { $host = substr ($host, strlen ($prefix)); } define('DOMAIN', $host); } } } protected function defineDatabasedConstants () { if (! isset (self::$__database_constants)) { self::$__database_constants = 1; { define('TYPE_URL_PATTERN_FIRST_PAGE', Setting_Model::get(Setting_Model::S_ROUTE_TYPE_FIRST)); define('TYPE_URL_PATTERN_OTHER_PAGE', Setting_Model::get(Setting_Model::S_ROUTE_TYPE_OTHER)); define('CATEGORY_URL_PATTERN_FIRST_PAGE', Setting_Model::get(Setting_Model::S_ROUTE_CATEGORY_FIRST)); } $settings = ORM::factory('setting')->find_all(); if (!$settings->count ()) { throw new Exception_BadInstallation(Exception_BadInstallation::E_NO_SETTINGS); } foreach ($settings as $setting) { define ($setting->id, $setting->value); } if (IS_INTERNAL_LINKS) { define('SITE_DOMAIN', rtrim(SITE_DIR, '/')); } else { define('SITE_DOMAIN', rtrim(url::base(), '/')); } $switcher = new Theme_Switcher (); if (SITE_DIR == '/') { define('FRONTEND_DIR', '/themes/' . $switcher->getSelectedTheme ()); } else { define('FRONTEND_DIR', SITE_DIR . '/themes/' . $switcher->getSelectedTheme ()); } $switcher->recognizeThemeSwitch (); define ('CURRENT_THEME_DIR', THEME_DIR . THEME . '/'); define ('FQ_THEME_URL', url::getSiteRootUrl () . '/themes/' .THEME); } } function databaseConfigExists () { return file_exists (DATADIR . '/config/database' . EXT); } }