]> git.mxchange.org Git - friendica.git/commitdiff
Move Session "exists" and "expire" to new class
authorPhilipp <admin@philipp.info>
Thu, 20 Oct 2022 18:26:54 +0000 (20:26 +0200)
committerPhilipp <admin@philipp.info>
Thu, 20 Oct 2022 18:27:35 +0000 (20:27 +0200)
src/Core/Session.php
src/Core/Session/Handler/AbstractSessionHandler.php [new file with mode: 0644]
src/Core/Session/Handler/Cache.php
src/Core/Session/Handler/Database.php

index a944cf8f56c648e4ce250ff6aa4dad3fab06e87a..d39db486137f20b6df40f5244d368673a664723c 100644 (file)
@@ -31,9 +31,6 @@ use Friendica\Util\Strings;
  */
 class Session
 {
-       public static $exists = false;
-       public static $expire = 180000;
-
        /**
         * Returns the user id of locally logged in user or false.
         *
diff --git a/src/Core/Session/Handler/AbstractSessionHandler.php b/src/Core/Session/Handler/AbstractSessionHandler.php
new file mode 100644 (file)
index 0000000..a16242b
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Core\Session\Handler;
+
+abstract class AbstractSessionHandler implements \SessionHandlerInterface
+{
+       /** @var int Duration of the Session */
+       public const EXPIRE = 180000;
+}
index 519bad2228eef7c60798567385a2b2580ea02376..4fcc51c17124d5ebaccd861cf838f4357c30a329 100644 (file)
@@ -23,14 +23,12 @@ namespace Friendica\Core\Session\Handler;
 
 use Friendica\Core\Cache\Capability\ICanCache;
 use Friendica\Core\Cache\Exception\CachePersistenceException;
-use Friendica\Core\Session;
 use Psr\Log\LoggerInterface;
-use SessionHandlerInterface;
 
 /**
  * SessionHandler using Friendica Cache
  */
-class Cache implements SessionHandlerInterface
+class Cache extends AbstractSessionHandler
 {
        /** @var ICanCache */
        private $cache;
@@ -57,7 +55,6 @@ class Cache implements SessionHandlerInterface
                try {
                        $data = $this->cache->get('session:' . $id);
                        if (!empty($data)) {
-                               Session::$exists = true;
                                return $data;
                        }
                } catch (CachePersistenceException $exception) {
@@ -91,7 +88,7 @@ class Cache implements SessionHandlerInterface
                }
 
                try {
-                       return $this->cache->set('session:' . $id, $data, Session::$expire);
+                       return $this->cache->set('session:' . $id, $data, static::EXPIRE);
                } catch (CachePersistenceException $exception) {
                        $this->logger->warning('Cannot write session', ['id' => $id, 'exception' => $exception]);
                        return false;
index 714471f9fe7cd628158f804409a56831c641d959..41ccb6b33f834e4f315fef4b6b78a5f2813bebff 100644 (file)
 
 namespace Friendica\Core\Session\Handler;
 
-use Friendica\Core\Session;
 use Friendica\Database\Database as DBA;
 use Psr\Log\LoggerInterface;
-use SessionHandlerInterface;
 
 /**
  * SessionHandler using database
  */
-class Database implements SessionHandlerInterface
+class Database extends AbstractSessionHandler
 {
        /** @var DBA */
        private $dba;
@@ -37,6 +35,8 @@ class Database implements SessionHandlerInterface
        private $logger;
        /** @var array The $_SERVER variable */
        private $server;
+       /** @var bool global check, if the current Session exists */
+       private $sessionExists = false;
 
        /**
         * DatabaseSessionHandler constructor.
@@ -66,7 +66,7 @@ class Database implements SessionHandlerInterface
                try {
                        $session = $this->dba->selectFirst('session', ['data'], ['sid' => $id]);
                        if ($this->dba->isResult($session)) {
-                               Session::$exists = true;
+                               $this->sessionExists = true;
                                return $session['data'];
                        }
                } catch (\Exception $exception) {
@@ -101,11 +101,11 @@ class Database implements SessionHandlerInterface
                        return $this->destroy($id);
                }
 
-               $expire         = time() + Session::$expire;
+               $expire         = time() + static::EXPIRE;
                $default_expire = time() + 300;
 
                try {
-                       if (Session::$exists) {
+                       if ($this->sessionExists) {
                                $fields    = ['data' => $data, 'expire' => $expire];
                                $condition = ["`sid` = ? AND (`data` != ? OR `expire` != ?)", $id, $data, $expire];
                                $this->dba->update('session', $fields, $condition);