]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Session/Native.php
Merge pull request #9039 from MrPetovan/task/frio-accent-scheme
[friendica.git] / src / Core / Session / Native.php
index b7f992b2745a0987fe7366b50ee6dda6c4921b37..49550a27c0f6e71ffa77e6e60413e92a04bf91a3 100644 (file)
@@ -1,30 +1,48 @@
 <?php
+/**
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @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;
 
-use Friendica\Core\Config\Configuration;
 use Friendica\App;
 use Friendica\Model\User\Cookie;
+use SessionHandlerInterface;
 
 /**
- * The native Session class which uses the PHP internal Session function
+ * The native Session class which uses the PHP internal Session functions
  */
-class Native implements ISession
+class Native extends AbstractSession implements ISession
 {
-       /** @var Cookie */
-       protected $cookie;
-
-       public function __construct(Configuration $config, Cookie $cookie)
+       public function __construct(App\BaseURL $baseURL, SessionHandlerInterface $handler = null)
        {
                ini_set('session.gc_probability', 50);
                ini_set('session.use_only_cookies', 1);
-               ini_set('session.cookie_httponly', 1);
+               ini_set('session.cookie_httponly', (int)Cookie::HTTPONLY);
 
-               if ($config->get('system', 'ssl_policy') == App\BaseURL::SSL_POLICY_FULL) {
+               if ($baseURL->getSSLPolicy() == App\BaseURL::SSL_POLICY_FULL) {
                        ini_set('session.cookie_secure', 1);
                }
 
-               $this->cookie = $cookie;
+               if (isset($handler)) {
+                       session_set_save_handler($handler);
+               }
        }
 
        /**
@@ -35,61 +53,4 @@ class Native implements ISession
                session_start();
                return $this;
        }
-
-       /**
-        * {@inheritDoc}}
-        */
-       public function exists(string $name)
-       {
-               return isset($_SESSION[$name]);
-       }
-
-       /**
-        * {@inheritDoc}
-        */
-       public function get(string $name, $defaults = null)
-       {
-               return $_SESSION[$name] ?? $defaults;
-       }
-
-       /**
-        * {@inheritDoc}
-        */
-       public function set(string $name, $value)
-       {
-               $_SESSION[$name] = $value;
-       }
-
-       /**
-        * {@inheritDoc}
-        */
-       public function setMultiple(array $values)
-       {
-               $_SESSION = $values + $_SESSION;
-       }
-
-       /**
-        * {@inheritDoc}
-        */
-       public function remove(string $name)
-       {
-               unset($_SESSION[$name]);
-       }
-
-       /**
-        * {@inheritDoc}
-        */
-       public function clear()
-       {
-               $_SESSION = [];
-       }
-
-       /**
-        * @brief Kills the "Friendica" cookie and all session data
-        */
-       public function delete()
-       {
-               $this->cookie->clear();
-               $_SESSION = [];
-       }
 }