admin) { Session::instance()->set("continue_url", url::abs_site("admin/maintenance")); Router::$controller = "login"; Router::$controller_path = MODPATH . "gallery/controllers/login.php"; Router::$method = "html"; } } /** * If the gallery is only available to registered users and the user is not logged in, present * the login page. */ static function private_gallery() { if (Router::$controller != "login" && Router::$controller != "combined" && identity::active_user()->guest && !access::user_can(identity::guest(), "view", item::root())) { if (Router::$controller == "admin") { // At this point we're in the admin theme and it doesn't have a themed login page, so // we can't just swap in the login controller and have it work. So redirect back to the // root item where we'll run this code again with the site theme. url::redirect(item::root()->abs_url()); } else { Session::instance()->set("continue_url", url::abs_current()); Router::$controller = "login"; Router::$controller_path = MODPATH . "gallery/controllers/login.php"; Router::$method = "html"; } } } /** * This function is called when the Gallery is fully initialized. We relay it to modules as the * "gallery_ready" event. Any module that wants to perform an action at the start of every * request should implement the _event::gallery_ready() handler. */ static function ready() { module::event("gallery_ready"); } /** * This function is called right before the Kohana framework shuts down. We relay it to modules * as the "gallery_shutdown" event. Any module that wants to perform an action at the start of * every request should implement the _event::gallery_shutdown() handler. */ static function shutdown() { module::event("gallery_shutdown"); } /** * Return a unix timestamp in a user specified format including date and time. * @param $timestamp unix timestamp * @return string */ static function date_time($timestamp) { return date(module::get_var("gallery", "date_time_format"), $timestamp); } /** * Return a unix timestamp in a user specified format that's just the date. * @param $timestamp unix timestamp * @return string */ static function date($timestamp) { return date(module::get_var("gallery", "date_format"), $timestamp); } /** * Return a unix timestamp in a user specified format that's just the time. * @param $timestamp unix timestamp * @return string */ static function time($timestamp) { return date(module::get_var("gallery", "time_format", "H:i:s"), $timestamp); } /** * Provide a wrapper function for Kohana::find_file that first strips the extension and * then calls the Kohana::find_file and supplies the extension as the type. * @param string directory to search in * @param string filename to look for * @param boolean file required (optional: default false) * @return array if the extension is config, i18n or l10n * @return string if the file is found (relative to the DOCROOT) * @return false if the file is not found */ static function find_file($directory, $file, $required=false) { $file_name = substr($file, 0, -strlen($ext = strrchr($file, '.'))); $file_name = Kohana::find_file($directory, $file_name, $required, substr($ext, 1)); if (!$file_name) { if (file_exists(DOCROOT . "lib/$directory/$file")) { return "lib/$directory/$file"; } else if (file_exists(DOCROOT . "lib/$file")) { return "lib/$file"; } } if (is_string($file_name)) { // make relative to DOCROOT $parts = explode("/", $file_name); foreach ($parts as $idx => $part) { if (in_array($part, array("application", "modules", "themes", "lib"))) { break; } unset($parts[$idx]); } $file_name = implode("/", $parts); } return $file_name; } }