Add Install Mode
authorPhilipp Holzer <admin@philipp.info>
Sun, 29 Apr 2018 18:15:12 +0000 (20:15 +0200)
committerPhilipp Holzer <admin@philipp.info>
Sun, 29 Apr 2018 18:15:12 +0000 (20:15 +0200)
- merge `friendica/develop` to `nupplaphil/install_mode`

1  2 
include/text.php
index.php
src/App.php

Simple merge
diff --cc index.php
Simple merge
diff --cc src/App.php
@@@ -1081,18 -1068,84 +1081,99 @@@ class Ap
                return $sender_email;
        }
  
 +      /**
 +       * @note Checks, if the App is in the Maintenance-Mode
 +       *
 +       * @return boolean
 +       */
 +      public function checkMaintenanceMode()
 +      {
 +              if (Config::get('system', 'maintenance')) {
 +                      $this->mode = App::MODE_MAINTENANCE;
 +                      return true;
 +              }
 +
 +              return false;
 +      }
++
+       /**
+        * Returns the current theme name.
+        *
+        * @return string
+        */
+       public function getCurrentTheme()
+       {
+               if (!$this->current_theme) {
+                       $this->computeCurrentTheme();
+               }
+               return $this->current_theme;
+       }
+       /**
+        * Computes the current theme name based on the node settings, the user settings and the device type
+        *
+        * @throws Exception
+        */
+       private function computeCurrentTheme()
+       {
+               $system_theme = Config::get('system', 'theme');
+               if (!$system_theme) {
+                       throw new Exception(L10n::t('No system theme config value set.'));
+               }
+               // Sane default
+               $this->current_theme = $system_theme;
+               $allowed_themes = explode(',', Config::get('system', 'allowed_themes', $system_theme));
+               $page_theme = null;
+               // Find the theme that belongs to the user whose stuff we are looking at
+               if ($this->profile_uid && ($this->profile_uid != local_user())) {
+                       // Allow folks to override user themes and always use their own on their own site.
+                       // This works only if the user is on the same server
+                       $user = dba::selectFirst('user', ['theme'], ['uid' => $this->profile_uid]);
+                       if (DBM::is_result($user) && !PConfig::get(local_user(), 'system', 'always_my_theme')) {
+                               $page_theme = $user['theme'];
+                       }
+               }
+               $user_theme = defaults($_SESSION, 'theme', $system_theme);
+               // Specific mobile theme override
+               if (($this->is_mobile || $this->is_tablet) && defaults($_SESSION, 'show-mobile', true)) {
+                       $system_mobile_theme = Config::get('system', 'mobile-theme');
+                       $user_mobile_theme = defaults($_SESSION, 'mobile-theme', $system_mobile_theme);
+                       // --- means same mobile theme as desktop
+                       if (!empty($user_mobile_theme) && $user_mobile_theme !== '---') {
+                               $user_theme = $user_mobile_theme;
+                       }
+               }
+               if ($page_theme) {
+                       $theme_name = $page_theme;
+               } else {
+                       $theme_name = $user_theme;
+               }
+               if ($theme_name
+                       && in_array($theme_name, $allowed_themes)
+                       && (file_exists('view/theme/' . $theme_name . '/style.css')
+                       || file_exists('view/theme/' . $theme_name . '/style.php'))
+               ) {
+                       $this->current_theme = $theme_name;
+               }
+       }
+       /**
+        * @brief Return full URL to theme which is currently in effect.
+        *
+        * Provide a sane default if nothing is chosen or the specified theme does not exist.
+        *
+        * @return string
+        */
+       public function getCurrentThemeStylesheetPath()
+       {
+               return Core\Theme::getStylesheetPath($this->getCurrentTheme());
+       }
  }