X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FApp.php;h=b84c3b629493a4efb9466beaf00bafb521348384;hb=259b99e6e94cd6714e65bb128af9cbe776fd3325;hp=0d4e8880dd9d8373db64f8b0a60df3cd7325da83;hpb=d26b0ed5a2b5cd66954816096ba87c05043826f0;p=friendica.git diff --git a/src/App.php b/src/App.php index 0d4e8880dd..b84c3b6294 100644 --- a/src/App.php +++ b/src/App.php @@ -27,7 +27,8 @@ use Friendica\App\BaseURL; use Friendica\Capabilities\ICanCreateResponses; use Friendica\Core\Config\Factory\Config; use Friendica\Core\Session\Capability\IHandleUserSessions; -use Friendica\Model\User; +use Friendica\Database\Definition\DbaDefinition; +use Friendica\Database\Definition\ViewDefinition; use Friendica\Module\Maintenance; use Friendica\Security\Authentication; use Friendica\Core\Config\ValueObject\Cache; @@ -62,7 +63,7 @@ class App { const PLATFORM = 'Friendica'; const CODENAME = 'Giant Rhubarb'; - const VERSION = '2022.12-rc'; + const VERSION = '2023.03-dev'; // Allow themes to control internal parameters // by changing App values in theme.php @@ -71,8 +72,6 @@ class App 'videoheight' => 350, ]; - private $user_id = 0; - private $nickname = ''; private $timezone = ''; private $profile_owner = 0; private $contact_id = 0; @@ -134,64 +133,39 @@ class App private $session; /** - * Set the user ID - * - * @param int $user_id - * @return void - */ - public function setLoggedInUserId(int $user_id) - { - $this->user_id = $user_id; - } - - /** - * Set the nickname - * - * @param int $user_id - * @return void + * @deprecated 2022.03 + * @see IHandleUserSessions::isAuthenticated() */ - public function setLoggedInUserNickname(string $nickname) - { - $this->nickname = $nickname; - } - public function isLoggedIn(): bool { - return $this->session->getLocalUserId() && $this->user_id && ($this->user_id == $this->session->getLocalUserId()); + return $this->session->isAuthenticated(); } /** - * Check if current user has admin role. - * - * @return bool true if user is an admin - * @throws Exception + * @deprecated 2022.03 + * @see IHandleUserSessions::isSiteAdmin() */ public function isSiteAdmin(): bool { - return - $this->session->getLocalUserId() - && $this->database->exists('user', [ - 'uid' => $this->getLoggedInUserId(), - 'email' => User::getAdminEmailList() - ]); + return $this->session->isSiteAdmin(); } /** - * Fetch the user id - * @return int User id + * @deprecated 2022.03 + * @see IHandleUserSessions::getLocalUserId() */ public function getLoggedInUserId(): int { - return $this->user_id; + return $this->session->getLocalUserId(); } /** - * Fetch the user nick name - * @return string User's nickname + * @deprecated 2022.03 + * @see IHandleUserSessions::getLocalUserNickname() */ public function getLoggedInUserNickname(): string { - return $this->nickname; + return $this->session->getLocalUserNickname(); } /** @@ -337,27 +311,29 @@ class App * @param App\Arguments $args The Friendica Arguments of the call * @param IManagePersonalConfigValues $pConfig Personal configuration * @param IHandleUserSessions $session The (User)Session handler + * @param DbaDefinition $dbaDefinition + * @param ViewDefinition $viewDefinition */ - public function __construct(Database $database, IManageConfigValues $config, App\Mode $mode, BaseURL $baseURL, LoggerInterface $logger, Profiler $profiler, L10n $l10n, Arguments $args, IManagePersonalConfigValues $pConfig, IHandleUserSessions $session) + public function __construct(Database $database, IManageConfigValues $config, App\Mode $mode, BaseURL $baseURL, LoggerInterface $logger, Profiler $profiler, L10n $l10n, Arguments $args, IManagePersonalConfigValues $pConfig, IHandleUserSessions $session, DbaDefinition $dbaDefinition, ViewDefinition $viewDefinition) { - $this->database = $database; - $this->config = $config; - $this->mode = $mode; - $this->baseURL = $baseURL; - $this->profiler = $profiler; - $this->logger = $logger; - $this->l10n = $l10n; - $this->args = $args; - $this->pConfig = $pConfig; - $this->session = $session; - - $this->load(); + $this->database = $database; + $this->config = $config; + $this->mode = $mode; + $this->baseURL = $baseURL; + $this->profiler = $profiler; + $this->logger = $logger; + $this->l10n = $l10n; + $this->args = $args; + $this->pConfig = $pConfig; + $this->session = $session; + + $this->load($dbaDefinition, $viewDefinition); } /** * Load the whole app instance */ - public function load() + protected function load(DbaDefinition $dbaDefinition, ViewDefinition $viewDefinition) { set_time_limit(0); @@ -386,6 +362,10 @@ class App Core\Hook::loadHooks(); $loader = (new Config())->createConfigFileLoader($this->getBasePath(), $_SERVER); Core\Hook::callAll('load_config', $loader); + + // Hooks are now working, reload the whole definitions with hook enabled + $dbaDefinition->load(true); + $viewDefinition->load(true); } $this->loadDefaultTimezone(); @@ -593,13 +573,14 @@ class App * @param IManagePersonalConfigValues $pconfig * @param Authentication $auth The Authentication backend of the node * @param App\Page $page The Friendica page printing container + * @param ModuleHTTPException $httpException The possible HTTP Exception container * @param HTTPInputData $httpInput A library for processing PHP input streams * @param float $start_time The start time of the overall script execution * * @throws HTTPException\InternalServerErrorException * @throws \ImagickException */ - public function runFrontend(App\Router $router, IManagePersonalConfigValues $pconfig, Authentication $auth, App\Page $page, HTTPInputData $httpInput, float $start_time) + public function runFrontend(App\Router $router, IManagePersonalConfigValues $pconfig, Authentication $auth, App\Page $page, ModuleHTTPException $httpException, HTTPInputData $httpInput, float $start_time) { $this->profiler->set($start_time, 'start'); $this->profiler->set(microtime(true), 'classinit'); @@ -733,9 +714,9 @@ class App $httpinput = $httpInput->process(); $input = array_merge($httpinput['variables'], $httpinput['files'], $request ?? $_REQUEST); - // Let the module run it's internal process (init, get, post, ...) + // Let the module run its internal process (init, get, post, ...) $timestamp = microtime(true); - $response = $module->run($input); + $response = $module->run($httpException, $input); $this->profiler->set(microtime(true) - $timestamp, 'content'); if ($response->getHeaderLine(ICanCreateResponses::X_HEADER) === ICanCreateResponses::TYPE_HTML) { $page->run($this, $this->baseURL, $this->args, $this->mode, $response, $this->l10n, $this->profiler, $this->config, $pconfig, $this->session->getLocalUserId()); @@ -743,7 +724,7 @@ class App $page->exit($response); } } catch (HTTPException $e) { - (new ModuleHTTPException())->rawContent($e); + $httpException->rawContent($e); } $page->logRuntime($this->config, 'runFrontend'); }