diff --git a/mod/redir.php b/mod/redir.php index ba1b7e13b6..426abfd49b 100644 --- a/mod/redir.php +++ b/mod/redir.php @@ -91,7 +91,7 @@ function redir_init(App $a) { // with the local contact. Otherwise the local user would ask the local contact // for authentification everytime he/she is visiting a profile page of the local // contact. - if (($host == $remotehost) && (Session::getRemoteContactID(Session::get('visitor_visiting')) == Session::get('visitor_id'))) { + if (($host == $remotehost) && (Session::getRemoteContactID(DI::session()->get('visitor_visiting')) == DI::session()->get('visitor_id'))) { // Remote user is already authenticated. redir_check_url($contact_url, $url); $target_url = $url ?: $contact_url; diff --git a/src/App.php b/src/App.php index 55b3e72e0e..003ff56589 100644 --- a/src/App.php +++ b/src/App.php @@ -26,6 +26,7 @@ use Friendica\App\Arguments; use Friendica\App\BaseURL; use Friendica\Capabilities\ICanCreateResponses; use Friendica\Core\Config\Factory\Config; +use Friendica\Core\Session\Capability\IHandleSessions; use Friendica\Module\Maintenance; use Friendica\Security\Authentication; use Friendica\Core\Config\ValueObject\Cache; @@ -127,6 +128,11 @@ class App */ private $pConfig; + /** + * @var IHandleSessions + */ + private $session; + /** * Set the user ID * @@ -328,8 +334,9 @@ class App * @param L10n $l10n The translator instance * @param App\Arguments $args The Friendica Arguments of the call * @param IManagePersonalConfigValues $pConfig Personal configuration + * @param IHandleSessions $session The Session handler */ - public function __construct(Database $database, IManageConfigValues $config, App\Mode $mode, BaseURL $baseURL, LoggerInterface $logger, Profiler $profiler, L10n $l10n, Arguments $args, IManagePersonalConfigValues $pConfig) + public function __construct(Database $database, IManageConfigValues $config, App\Mode $mode, BaseURL $baseURL, LoggerInterface $logger, Profiler $profiler, L10n $l10n, Arguments $args, IManagePersonalConfigValues $pConfig, IHandleSessions $session) { $this->database = $database; $this->config = $config; @@ -340,6 +347,7 @@ class App $this->l10n = $l10n; $this->args = $args; $this->pConfig = $pConfig; + $this->session = $session; $this->load(); } @@ -415,7 +423,7 @@ class App } // Specific mobile theme override - if (($this->mode->isMobile() || $this->mode->isTablet()) && Core\Session::get('show-mobile', true)) { + if (($this->mode->isMobile() || $this->mode->isTablet()) && $this->session->get('show-mobile', true)) { $user_mobile_theme = $this->getCurrentMobileTheme(); // --- means same mobile theme as desktop @@ -496,7 +504,7 @@ class App } } - $theme_name = $page_theme ?: Core\Session::get('theme', $system_theme); + $theme_name = $page_theme ?: $this->session->get('theme', $system_theme); $theme_name = Strings::sanitizeFilePathItem($theme_name); if ($theme_name @@ -528,7 +536,7 @@ class App } } - $mobile_theme_name = $page_mobile_theme ?: Core\Session::get('mobile-theme', $system_mobile_theme); + $mobile_theme_name = $page_mobile_theme ?: $this->session->get('mobile-theme', $system_mobile_theme); $mobile_theme_name = Strings::sanitizeFilePathItem($mobile_theme_name); if ($mobile_theme_name == '---' @@ -625,7 +633,7 @@ class App // Valid profile links contain a path with "/profile/" and no query parameters if ((parse_url($_GET['zrl'], PHP_URL_QUERY) == '') && strstr(parse_url($_GET['zrl'], PHP_URL_PATH), '/profile/')) { - if (Core\Session::get('visitor_home') != $_GET['zrl']) { + if ($this->session->get('visitor_home') != $_GET['zrl']) { Core\Session::set('my_url', $_GET['zrl']); Core\Session::set('authenticated', 0); diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index 817bc402a8..ede7a56b69 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -32,7 +32,6 @@ use Friendica\Core\L10n; use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues; use Friendica\Core\Protocol; use Friendica\Core\Renderer; -use Friendica\Core\Session; use Friendica\Core\Theme; use Friendica\Database\DBA; use Friendica\Model\Contact; @@ -77,8 +76,10 @@ class Conversation private $page; /** @var App\Mode */ private $mode; + /** @var Session\Capability\IHandleSessions */ + private $session; - public function __construct(LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, App\Page $page, App\Mode $mode, App $app) + public function __construct(LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, App\Page $page, App\Mode $mode, App $app, Session\Capability\IHandleSessions $session) { $this->activity = $activity; $this->item = $item; @@ -92,6 +93,7 @@ class Conversation $this->pConfig = $pConfig; $this->page = $page; $this->app = $app; + $this->session = $session; } /** @@ -497,7 +499,7 @@ class Conversation if (!$update) { $live_update_div = '
' . "\r\n" - . ""; } } elseif ($mode === 'community') { diff --git a/src/Content/Nav.php b/src/Content/Nav.php index 6861d69e80..b43e926e8c 100644 --- a/src/Content/Nav.php +++ b/src/Content/Nav.php @@ -208,7 +208,7 @@ class Nav // "Home" should also take you home from an authenticated remote profile connection $homelink = Profile::getMyURL(); if (! $homelink) { - $homelink = Session::get('visitor_home', ''); + $homelink = DI::session()->get('visitor_home', ''); } if ((DI::args()->getModuleName() != 'home') && (! (local_user()))) { @@ -276,7 +276,7 @@ class Nav $nav['home'] = ['profile/' . $a->getLoggedInUserNickname(), DI::l10n()->t('Home'), '', DI::l10n()->t('Your posts and conversations')]; // Don't show notifications for public communities - if (Session::get('page_flags', '') != User::PAGE_FLAGS_COMMUNITY) { + if (DI::session()->get('page_flags', '') != User::PAGE_FLAGS_COMMUNITY) { $nav['introductions'] = ['notifications/intros', DI::l10n()->t('Introductions'), '', DI::l10n()->t('Friend Requests')]; $nav['notifications'] = ['notifications', DI::l10n()->t('Notifications'), '', DI::l10n()->t('Notifications')]; $nav['notifications']['all'] = ['notifications/system', DI::l10n()->t('See all notifications'), '', '']; diff --git a/src/Core/Session.php b/src/Core/Session.php index 859dd8aa2e..7c4d2974d3 100644 --- a/src/Core/Session.php +++ b/src/Core/Session.php @@ -39,11 +39,6 @@ class Session return DI::session()->exists($name); } - public static function get($name, $defaults = null) - { - return DI::session()->get($name, $defaults); - } - public static function pop($name, $defaults = null) { return DI::session()->pop($name, $defaults); diff --git a/src/Model/Profile.php b/src/Model/Profile.php index b58de4efb1..d9467471f7 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -683,7 +683,7 @@ class Profile */ public static function getMyURL(): string { - return Session::get('my_url') ?? ''; + return DI::session()->get('my_url') ?? ''; } /** diff --git a/src/Module/Conversation/Network.php b/src/Module/Conversation/Network.php index bfdeb7e578..d5f4f6d2fc 100644 --- a/src/Module/Conversation/Network.php +++ b/src/Module/Conversation/Network.php @@ -307,7 +307,7 @@ class Network extends BaseModule self::$forumContactId = $this->parameters['contact_id'] ?? 0; - self::$selectedTab = Session::get('network-tab', DI::pConfig()->get(local_user(), 'network.view', 'selected_tab', '')); + self::$selectedTab = DI::session()->get('network-tab', DI::pConfig()->get(local_user(), 'network.view', 'selected_tab', '')); if (!empty($get['star'])) { self::$selectedTab = 'star'; diff --git a/src/Module/Delegation.php b/src/Module/Delegation.php index 146e9382b8..f8aeb4c762 100644 --- a/src/Module/Delegation.php +++ b/src/Module/Delegation.php @@ -46,8 +46,8 @@ class Delegation extends BaseModule $uid = local_user(); $orig_record = User::getById(DI::app()->getLoggedInUserId()); - if (Session::get('submanage')) { - $user = User::getById(Session::get('submanage')); + if (DI::session()->get('submanage')) { + $user = User::getById(DI::session()->get('submanage')); if (DBA::isResult($user)) { $uid = intval($user['uid']); $orig_record = $user; diff --git a/src/Module/Profile/Status.php b/src/Module/Profile/Status.php index 1a313cbfae..2bf9b429be 100644 --- a/src/Module/Profile/Status.php +++ b/src/Module/Profile/Status.php @@ -139,7 +139,7 @@ class Status extends BaseProfile // Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups $condition = Item::getPermissionsConditionArrayByUserId($profile['uid']); - $last_updated_array = Session::get('last_updated', []); + $last_updated_array = DI::session()->get('last_updated', []); if (!empty($category)) { $condition = DBA::mergeConditions($condition, ["`uri-id` IN (SELECT `uri-id` FROM `category-view` WHERE `name` = ? AND `type` = ? AND `uid` = ?)", diff --git a/src/Module/Settings/Delegation.php b/src/Module/Settings/Delegation.php index aeada0871e..a711c674a3 100644 --- a/src/Module/Settings/Delegation.php +++ b/src/Module/Settings/Delegation.php @@ -77,7 +77,7 @@ class Delegation extends BaseSettings $user_id = $args->get(3); if ($action === 'add' && $user_id) { - if (Session::get('submanage')) { + if (DI::session()->get('submanage')) { DI::sysmsg()->addNotice(DI::l10n()->t('Delegated administrators can view but not change delegation permissions.')); DI::baseUrl()->redirect('settings/delegation'); } @@ -99,7 +99,7 @@ class Delegation extends BaseSettings } if ($action === 'remove' && $user_id) { - if (Session::get('submanage')) { + if (DI::session()->get('submanage')) { DI::sysmsg()->addNotice(DI::l10n()->t('Delegated administrators can view but not change delegation permissions.')); DI::baseUrl()->redirect('settings/delegation'); } diff --git a/src/Module/Settings/Display.php b/src/Module/Settings/Display.php index fe42b8718d..81f496eea8 100644 --- a/src/Module/Settings/Display.php +++ b/src/Module/Settings/Display.php @@ -157,7 +157,7 @@ class Display extends BaseSettings } $theme_selected = $user['theme'] ?: $default_theme; - $mobile_theme_selected = Session::get('mobile-theme', $default_mobile_theme); + $mobile_theme_selected = DI::session()->get('mobile-theme', $default_mobile_theme); $itemspage_network = intval(DI::pConfig()->get(local_user(), 'system', 'itemspage_network')); $itemspage_network = (($itemspage_network > 0 && $itemspage_network < 101) ? $itemspage_network : DI::config()->get('system', 'itemspage_network')); diff --git a/src/Module/Settings/TwoFactor/Verify.php b/src/Module/Settings/TwoFactor/Verify.php index 3d7db01180..820f7e255a 100644 --- a/src/Module/Settings/TwoFactor/Verify.php +++ b/src/Module/Settings/TwoFactor/Verify.php @@ -106,7 +106,7 @@ class Verify extends BaseSettings parent::content(); $company = 'Friendica'; - $holder = Session::get('my_address'); + $holder = DI::session()->get('my_address'); $secret = $this->pConfig->get(local_user(), '2fa', 'secret'); $otpauthUrl = (new Google2FA())->getQRCodeUrl($company, $holder, $secret); diff --git a/src/Module/Update/Profile.php b/src/Module/Update/Profile.php index b7dae9ec11..4d6793605e 100644 --- a/src/Module/Update/Profile.php +++ b/src/Module/Update/Profile.php @@ -66,7 +66,7 @@ class Profile extends BaseModule // Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups $sql_extra = Item::getPermissionsSQLByUserId($a->getProfileOwner()); - $last_updated_array = Session::get('last_updated', []); + $last_updated_array = DI::session()->get('last_updated', []); $last_updated = $last_updated_array[$last_updated_key] ?? 0; diff --git a/src/Object/Post.php b/src/Object/Post.php index 7300fd09b4..bbce296727 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -217,7 +217,7 @@ class Post $edpost = false; if (local_user()) { - if (Strings::compareLink(Session::get('my_url'), $item['author-link'])) { + if (Strings::compareLink(DI::session()->get('my_url'), $item['author-link'])) { if ($item['event-id'] != 0) { $edpost = ['events/event/' . $item['event-id'], DI::l10n()->t('Edit')]; } else { @@ -434,9 +434,9 @@ class Post } // Fetching of Diaspora posts doesn't always work. There are issues with reshares and possibly comments - if (!local_user() && ($item['network'] != Protocol::DIASPORA) && !empty(Session::get('remote_comment'))) { + if (!local_user() && ($item['network'] != Protocol::DIASPORA) && !empty(DI::session()->get('remote_comment'))) { $remote_comment = [DI::l10n()->t('Comment this item on your system'), DI::l10n()->t('Remote comment'), - str_replace('{uri}', urlencode($item['uri']), Session::get('remote_comment'))]; + str_replace('{uri}', urlencode($item['uri']), DI::session()->get('remote_comment'))]; // Ensure to either display the remote comment or the local activities $buttons = []; @@ -507,7 +507,7 @@ class Post 'location_html' => $location_html, 'indent' => $indent, 'shiny' => $shiny, - 'owner_self' => $item['author-link'] == Session::get('my_url'), + 'owner_self' => $item['author-link'] == DI::session()->get('my_url'), 'owner_url' => $this->getOwnerUrl(), 'owner_photo' => DI::baseUrl()->remove(DI::contentItem()->getOwnerAvatar($item)), 'owner_name' => $this->getOwnerName(), diff --git a/view/theme/frio/theme.php b/view/theme/frio/theme.php index 863992c40d..2913a15533 100644 --- a/view/theme/frio/theme.php +++ b/view/theme/frio/theme.php @@ -207,7 +207,7 @@ function frio_remote_nav(App $a, array &$nav_info) // get the homelink from $_SESSION $homelink = Profile::getMyURL(); if (!$homelink) { - $homelink = Session::get('visitor_home', ''); + $homelink = DI::session()->get('visitor_home', ''); } // since $userinfo isn't available for the hook we write it to the nav array