X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FApp.php;h=c41cfdc6c0d4bf0bf7a5eed15b1a4f3009ad7c8d;hb=8dbedeee5e2dc306e772233dd8207629391c6d9c;hp=45d743b0d61d55e5899f3a88b8f26b66f7bb776a;hpb=69a73678ebc18ad27b27f1bf92bc9433b7e7066f;p=friendica.git diff --git a/src/App.php b/src/App.php index 45d743b0d6..c41cfdc6c0 100644 --- a/src/App.php +++ b/src/App.php @@ -11,9 +11,6 @@ use Exception; use Friendica\Database\DBA; use Friendica\Network\HTTPException\InternalServerErrorException; -require_once 'boot.php'; -require_once 'include/text.php'; - /** * * class: App @@ -104,6 +101,11 @@ class App */ private $isAjax; + /** + * @var MobileDetect + */ + public $mobileDetect; + /** * Register a stylesheet file path to be included in the tag of every page. * Inclusion is done in App->initHead(). @@ -271,6 +273,9 @@ class App // Detect mobile devices $mobile_detect = new MobileDetect(); + + $this->mobileDetect = $mobile_detect; + $this->is_mobile = $mobile_detect->isMobile(); $this->is_tablet = $mobile_detect->isTablet(); @@ -523,7 +528,7 @@ class App if (!empty($relative_script_path)) { // Module if (!empty($_SERVER['QUERY_STRING'])) { - $path = trim(dirname($relative_script_path, substr_count(trim($_SERVER['QUERY_STRING'], '/'), '/') + 1), '/'); + $path = trim(rdirname($relative_script_path, substr_count(trim($_SERVER['QUERY_STRING'], '/'), '/') + 1), '/'); } else { // Root page $path = trim($relative_script_path, '/'); @@ -1363,14 +1368,18 @@ class App return ''; } - //// @TODO Compute the current theme only once (this behavior has - /// already been implemented, but it didn't work well - - /// https://github.com/friendica/friendica/issues/5092) - $this->computeCurrentTheme(); + if (!$this->currentTheme) { + $this->computeCurrentTheme(); + } return $this->currentTheme; } + public function setCurrentTheme($theme) + { + $this->currentTheme = $theme; + } + /** * Computes the current theme name based on the node settings, the user settings and the device type * @@ -1709,18 +1718,9 @@ class App } } - // Load current theme info - $theme_info_file = 'view/theme/' . $this->getCurrentTheme() . '/theme.php'; - if (file_exists($theme_info_file)) { - require_once $theme_info_file; - } - - // initialise content region - if ($this->getMode()->isNormal()) { - Core\Addon::callHooks('page_content_top', $this->page['content']); - } + $content = ''; - // Call module functions + // Initialize module that can set the current theme in the init() method, either directly or via App->profile_uid if ($this->module_loaded) { $this->page['page_title'] = $this->module; $placeholder = ''; @@ -1734,12 +1734,20 @@ class App if (!$this->error) { call_user_func([$this->module_class, 'rawContent']); } + } - if (function_exists(str_replace('-', '_', $this->getCurrentTheme()) . '_init')) { - $func = str_replace('-', '_', $this->getCurrentTheme()) . '_init'; - $func($this); - } + // Load current theme info after module has been initialized as theme could have been set in module + $theme_info_file = 'view/theme/' . $this->getCurrentTheme() . '/theme.php'; + if (file_exists($theme_info_file)) { + require_once $theme_info_file; + } + if (function_exists(str_replace('-', '_', $this->getCurrentTheme()) . '_init')) { + $func = str_replace('-', '_', $this->getCurrentTheme()) . '_init'; + $func($this); + } + + if ($this->module_loaded) { if (! $this->error && $_SERVER['REQUEST_METHOD'] === 'POST') { Core\Addon::callHooks($this->module . '_mod_post', $_POST); call_user_func([$this->module_class, 'post']); @@ -1751,20 +1759,22 @@ class App } if (! $this->error) { - $arr = ['content' => $this->page['content']]; + $arr = ['content' => $content]; Core\Addon::callHooks($this->module . '_mod_content', $arr); - $this->page['content'] = $arr['content']; + $content = $arr['content']; $arr = ['content' => call_user_func([$this->module_class, 'content'])]; Core\Addon::callHooks($this->module . '_mod_aftercontent', $arr); - $this->page['content'] .= $arr['content']; + $content .= $arr['content']; } + } - if (function_exists(str_replace('-', '_', $this->getCurrentTheme()) . '_content_loaded')) { - $func = str_replace('-', '_', $this->getCurrentTheme()) . '_content_loaded'; - $func($this); - } + // initialise content region + if ($this->getMode()->isNormal()) { + Core\Addon::callHooks('page_content_top', $this->page['content']); } + $this->page['content'] .= $content; + /* Create the page head after setting the language * and getting any auth credentials. *