From 7ac86e49d13af8f3b3bd0670ab309a8ab66f442a Mon Sep 17 00:00:00 2001
From: Philipp <admin@philipp.info>
Date: Tue, 18 Oct 2022 21:10:37 +0200
Subject: [PATCH] Move Core\Session::get() to DI::session()->get()

---
 mod/redir.php                            |  2 +-
 src/App.php                              | 18 +++++++++++++-----
 src/Content/Conversation.php             |  8 +++++---
 src/Content/Nav.php                      |  4 ++--
 src/Core/Session.php                     |  5 -----
 src/Model/Profile.php                    |  2 +-
 src/Module/Conversation/Network.php      |  2 +-
 src/Module/Delegation.php                |  4 ++--
 src/Module/Profile/Status.php            |  2 +-
 src/Module/Settings/Delegation.php       |  4 ++--
 src/Module/Settings/Display.php          |  2 +-
 src/Module/Settings/TwoFactor/Verify.php |  2 +-
 src/Module/Update/Profile.php            |  2 +-
 src/Object/Post.php                      |  8 ++++----
 view/theme/frio/theme.php                |  2 +-
 15 files changed, 36 insertions(+), 31 deletions(-)

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 = '<div id="live-display"></div>' . "\r\n"
-					. "<script> var profile_uid = " . Session::get('uid', 0) . ";"
+					. "<script> var profile_uid = " . $this->session->get('uid', 0) . ";"
 					. "</script>";
 			}
 		} 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
-- 
2.39.5