]> source.dussan.org Git - nextcloud-server.git/commitdiff
Check for upgrade/maintance mode before trying to load an app
authorRobin Appelman <icewind@owncloud.com>
Wed, 30 Jan 2013 21:55:33 +0000 (22:55 +0100)
committerRobin Appelman <icewind@owncloud.com>
Wed, 30 Jan 2013 21:55:33 +0000 (22:55 +0100)
lib/base.php

index ea5c939cd8057d0fe6bbd355f1e8001b7da7cb77..24002d19c1f158aef74ce8f8bb6ef32dc970a256 100644 (file)
@@ -27,8 +27,7 @@ require_once 'public/constants.php';
  * No, we can not put this class in its own file because it is used by
  * OC_autoload!
  */
-class OC
-{
+class OC {
        /**
         * Associative array for autoloading. classname => filename
         */
@@ -78,13 +77,12 @@ class OC
        /**
         * SPL autoload
         */
-       public static function autoload($className)
-       {
+       public static function autoload($className) {
                if (array_key_exists($className, OC::$CLASSPATH)) {
                        $path = OC::$CLASSPATH[$className];
                        /** @TODO: Remove this when necessary
-                         Remove "apps/" from inclusion path for smooth migration to mutli app dir
-                         */
+                       Remove "apps/" from inclusion path for smooth migration to mutli app dir
+                        */
                        if (strpos($path, 'apps/') === 0) {
                                OC_Log::write('core', 'include path for class "' . $className . '" starts with "apps/"', OC_Log::DEBUG);
                                $path = str_replace('apps/', '', $path);
@@ -96,7 +94,7 @@ class OC
                } elseif (strpos($className, 'OCP\\') === 0) {
                        $path = 'public/' . strtolower(str_replace('\\', '/', substr($className, 3)) . '.php');
                } elseif (strpos($className, 'OCA\\') === 0) {
-                       foreach(self::$APPSROOTS as $appDir) {
+                       foreach (self::$APPSROOTS as $appDir) {
                                $path = $appDir['path'] . '/' . strtolower(str_replace('\\', '/', substr($className, 3)) . '.php');
                                $fullPath = stream_resolve_include_path($path);
                                if (file_exists($fullPath)) {
@@ -124,8 +122,7 @@ class OC
                return false;
        }
 
-       public static function initPaths()
-       {
+       public static function initPaths() {
                // calculate the root directories
                OC::$SERVERROOT = str_replace("\\", '/', substr(__DIR__, 0, -4));
                OC::$SUBURI = str_replace("\\", "/", substr(realpath($_SERVER["SCRIPT_FILENAME"]), strlen(OC::$SERVERROOT)));
@@ -150,7 +147,7 @@ class OC
                // ensure we can find OC_Config
                set_include_path(
                        OC::$SERVERROOT . '/lib' . PATH_SEPARATOR .
-                       get_include_path()
+                               get_include_path()
                );
 
                // search the 3rdparty folder
@@ -188,17 +185,18 @@ class OC
                        exit;
                }
                $paths = array();
-               foreach (OC::$APPSROOTS as $path)
+               foreach (OC::$APPSROOTS as $path) {
                        $paths[] = $path['path'];
+               }
 
                // set the right include path
                set_include_path(
                        OC::$SERVERROOT . '/lib' . PATH_SEPARATOR .
-                       OC::$SERVERROOT . '/config' . PATH_SEPARATOR .
-                       OC::$THIRDPARTYROOT . '/3rdparty' . PATH_SEPARATOR .
-                       implode($paths, PATH_SEPARATOR) . PATH_SEPARATOR .
-                       get_include_path() . PATH_SEPARATOR .
-                       OC::$SERVERROOT
+                               OC::$SERVERROOT . '/config' . PATH_SEPARATOR .
+                               OC::$THIRDPARTYROOT . '/3rdparty' . PATH_SEPARATOR .
+                               implode($paths, PATH_SEPARATOR) . PATH_SEPARATOR .
+                               get_include_path() . PATH_SEPARATOR .
+                               OC::$SERVERROOT
                );
        }
 
@@ -211,8 +209,7 @@ class OC
                }
        }
 
-       public static function checkInstalled()
-       {
+       public static function checkInstalled() {
                // Redirect to installer if not installed
                if (!OC_Config::getValue('installed', false) && OC::$SUBURI != '/index.php') {
                        if (!OC::$CLI) {
@@ -223,8 +220,7 @@ class OC
                }
        }
 
-       public static function checkSSL()
-       {
+       public static function checkSSL() {
                // redirect to https site if configured
                if (OC_Config::getValue("forcessl", false)) {
                        header('Strict-Transport-Security: max-age=31536000');
@@ -274,8 +270,7 @@ class OC
                }
        }
 
-       public static function initTemplateEngine()
-       {
+       public static function initTemplateEngine() {
                // Add the stuff we need always
                OC_Util::addScript("jquery-1.7.2.min");
                OC_Util::addScript("jquery-ui-1.10.0.custom");
@@ -297,8 +292,7 @@ class OC
                OC_Util::addScript("oc-requesttoken");
        }
 
-       public static function initSession()
-       {
+       public static function initSession() {
                // prevents javascript from accessing php session cookies
                ini_set('session.cookie_httponly', '1;');
 
@@ -328,8 +322,7 @@ class OC
                $_SESSION['LAST_ACTIVITY'] = time();
        }
 
-       public static function getRouter()
-       {
+       public static function getRouter() {
                if (!isset(OC::$router)) {
                        OC::$router = new OC_Router();
                        OC::$router->loadRoutes();
@@ -339,19 +332,17 @@ class OC
        }
 
 
-       public static function loadAppClassPaths()
-       {       
-               foreach(OC_APP::getEnabledApps() as $app) {
-                       $file = OC_App::getAppPath($app).'/appinfo/classpath.php';
-                       if(file_exists($file)) {
+       public static function loadAppClassPaths() {
+               foreach (OC_APP::getEnabledApps() as $app) {
+                       $file = OC_App::getAppPath($app) . '/appinfo/classpath.php';
+                       if (file_exists($file)) {
                                require_once $file;
                        }
                }
        }
 
 
-       public static function init()
-       {
+       public static function init() {
                // register autoloader
                spl_autoload_register(array('OC', 'autoload'));
                setlocale(LC_ALL, 'en_US.UTF-8');
@@ -516,8 +507,7 @@ class OC
        /**
         * register hooks for the cache
         */
-       public static function registerCacheHooks()
-       {
+       public static function registerCacheHooks() {
                // register cache cleanup jobs
                OC_BackgroundJob_RegularTask::register('OC_Cache_FileGlobal', 'gc');
                OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener');
@@ -526,8 +516,7 @@ class OC
        /**
         * register hooks for the filesystem
         */
-       public static function registerFilesystemHooks()
-       {
+       public static function registerFilesystemHooks() {
                // Check for blacklisted files
                OC_Hook::connect('OC_Filesystem', 'write', 'OC_Filesystem', 'isBlacklisted');
                OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted');
@@ -536,8 +525,7 @@ class OC
        /**
         * register hooks for sharing
         */
-       public static function registerShareHooks()
-       {
+       public static function registerShareHooks() {
                OC_Hook::connect('OC_User', 'post_deleteUser', 'OCP\Share', 'post_deleteUser');
                OC_Hook::connect('OC_User', 'post_addToGroup', 'OCP\Share', 'post_addToGroup');
                OC_Hook::connect('OC_User', 'post_removeFromGroup', 'OCP\Share', 'post_removeFromGroup');
@@ -547,12 +535,19 @@ class OC
        /**
         * @brief Handle the request
         */
-       public static function handleRequest()
-       {
+       public static function handleRequest() {
                // load all the classpaths from the enabled apps so they are available
                // in the routing files of each app
                OC::loadAppClassPaths();
 
+               // Check if ownCloud is installed or in maintenance (update) mode
+               if (!OC_Config::getValue('installed', false)) {
+                       require_once 'core/setup.php';
+                       exit();
+               }
+               self::checkMaintenanceMode();
+               self::checkUpgrade();
+
                try {
                        OC::getRouter()->match(OC_Request::getPathInfo());
                        return;
@@ -571,14 +566,6 @@ class OC
                        return;
                }
 
-               // Check if ownCloud is installed or in maintenance (update) mode
-               if (!OC_Config::getValue('installed', false)) {
-                       require_once 'core/setup.php';
-                       exit();
-               }
-               self::checkMaintenanceMode();
-               self::checkUpgrade();
-               
                // Handle redirect URL for logged in users
                if (isset($_REQUEST['redirect_url']) && OC_User::isLoggedIn()) {
                        $location = OC_Helper::makeURLAbsolute(urldecode($_REQUEST['redirect_url']));
@@ -608,7 +595,7 @@ class OC
                                $file_ext = substr($param['file'], -3);
                                if ($file_ext != 'php'
                                        || !self::loadAppScriptFile($param)
-                                  ) {
+                               ) {
                                        header('HTTP/1.0 404 Not Found');
                                }
                        }
@@ -618,8 +605,7 @@ class OC
                self::handleLogin();
        }
 
-       public static function loadAppScriptFile($param)
-       {
+       public static function loadAppScriptFile($param) {
                OC_App::loadApps();
                $app = $param['app'];
                $file = $param['file'];
@@ -633,8 +619,7 @@ class OC
                return false;
        }
 
-       public static function loadCSSFile($param)
-       {
+       public static function loadCSSFile($param) {
                $app = $param['app'];
                $file = $param['file'];
                $app_path = OC_App::getAppPath($app);
@@ -647,27 +632,25 @@ class OC
                }
        }
 
-       protected static function handleLogin()
-       {
+       protected static function handleLogin() {
                OC_App::loadApps(array('prelogin'));
                $error = array();
                // remember was checked after last login
                if (OC::tryRememberLogin()) {
                        $error[] = 'invalidcookie';
 
-               // Someone wants to log in :
+                       // Someone wants to log in :
                } elseif (OC::tryFormLogin()) {
                        $error[] = 'invalidpassword';
 
-               // The user is already authenticated using Apaches AuthType Basic... very usable in combination with LDAP
+                       // The user is already authenticated using Apaches AuthType Basic... very usable in combination with LDAP
                } elseif (OC::tryBasicAuthLogin()) {
                        $error[] = 'invalidpassword';
                }
                OC_Util::displayLoginPage(array_unique($error));
        }
 
-       protected static function cleanupLoginTokens($user)
-       {
+       protected static function cleanupLoginTokens($user) {
                $cutoff = time() - OC_Config::getValue('remember_login_cookie_lifetime', 60 * 60 * 24 * 15);
                $tokens = OC_Preferences::getKeys($user, 'login_token');
                foreach ($tokens as $token) {
@@ -678,13 +661,12 @@ class OC
                }
        }
 
-       protected static function tryRememberLogin()
-       {
+       protected static function tryRememberLogin() {
                if (!isset($_COOKIE["oc_remember_login"])
                        || !isset($_COOKIE["oc_token"])
                        || !isset($_COOKIE["oc_username"])
                        || !$_COOKIE["oc_remember_login"]
-                  ) {
+               ) {
                        return false;
                }
                OC_App::loadApps(array('authentication'));
@@ -719,8 +701,7 @@ class OC
                return true;
        }
 
-       protected static function tryFormLogin()
-       {
+       protected static function tryFormLogin() {
                if (!isset($_POST["user"]) || !isset($_POST['password'])) {
                        return false;
                }
@@ -753,11 +734,10 @@ class OC
                return true;
        }
 
-       protected static function tryBasicAuthLogin()
-       {
+       protected static function tryBasicAuthLogin() {
                if (!isset($_SERVER["PHP_AUTH_USER"])
                        || !isset($_SERVER["PHP_AUTH_PW"])
-                  ) {
+               ) {
                        return false;
                }
                OC_App::loadApps(array('authentication'));
@@ -778,8 +758,7 @@ if (!isset($RUNTIME_NOAPPS)) {
 }
 
 if (!function_exists('get_temp_dir')) {
-       function get_temp_dir()
-       {
+       function get_temp_dir() {
                if ($temp = ini_get('upload_tmp_dir')) return $temp;
                if ($temp = getenv('TMP')) return $temp;
                if ($temp = getenv('TEMP')) return $temp;