X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFactory%2FSessionFactory.php;h=116afe18a75d095779edbfccd1c278709867d14a;hb=76ae210527487bea129411e8ed02ac4997d0d89b;hp=f2bfd10d4ede64be3ba66ff1e77ab83b2bddfb84;hpb=07d290992772184518e853b97668c8075246e524;p=friendica.git diff --git a/src/Factory/SessionFactory.php b/src/Factory/SessionFactory.php index f2bfd10d4e..116afe18a7 100644 --- a/src/Factory/SessionFactory.php +++ b/src/Factory/SessionFactory.php @@ -1,17 +1,33 @@ . + * + */ namespace Friendica\Factory; use Friendica\App; -use Friendica\Core\Cache\Cache; use Friendica\Core\Cache\ICache; -use Friendica\Core\Config\Configuration; -use Friendica\Core\Session\ISession; -use Friendica\Core\Session\Memory; -use Friendica\Core\Session\Native; +use Friendica\Core\Cache\Type; +use Friendica\Core\Config\IConfig; +use Friendica\Core\Session; use Friendica\Core\System; use Friendica\Database\Database; -use Friendica\Model\User\Cookie; use Friendica\Util\Profiler; use Psr\Log\LoggerInterface; @@ -21,58 +37,55 @@ use Psr\Log\LoggerInterface; class SessionFactory { /** @var string The plain, PHP internal session management */ - const INTERNAL = 'native'; + const HANDLER_NATIVE = 'native'; /** @var string Using the database for session management */ - const DATABASE = 'database'; + const HANDLER_DATABASE = 'database'; /** @var string Using the cache for session management */ - const CACHE = 'cache'; - /** @var string A temporary cached session */ - const MEMORY = 'memory'; - /** @var string The default type for Session management in case of no config */ - const DEFAULT = self::DATABASE; + const HANDLER_CACHE = 'cache'; + + const HANDLER_DEFAULT = self::HANDLER_DATABASE; /** * @param App\Mode $mode - * @param Configuration $config - * @param Cookie $cookie + * @param App\BaseURL $baseURL + * @param IConfig $config * @param Database $dba * @param ICache $cache * @param LoggerInterface $logger * @param array $server * - * @return ISession + * @return Session\ISession */ - public function createSession(App\Mode $mode, Configuration $config, Cookie $cookie, Database $dba, ICache $cache, LoggerInterface $logger, Profiler $profiler, array $server = []) + public function createSession(App\Mode $mode, App\BaseURL $baseURL, IConfig $config, Database $dba, ICache $cache, LoggerInterface $logger, Profiler $profiler, array $server = []) { $stamp1 = microtime(true); $session = null; try { if ($mode->isInstall() || $mode->isBackend()) { - $session = new Memory(); + $session = new Session\Memory(); } else { - $session_handler = $config->get('system', 'session_handler', self::DEFAULT); + $session_handler = $config->get('system', 'session_handler', self::HANDLER_DEFAULT); + $handler = null; switch ($session_handler) { - case self::INTERNAL: - $session = new Native($config, $cookie); + case self::HANDLER_DATABASE: + $handler = new Session\Handler\Database($dba, $logger, $server); break; - case self::DATABASE: - default: - $session = new Database($config, $cookie, $dba, $logger, $server); - break; - case self::CACHE: + case self::HANDLER_CACHE: // In case we're using the db as cache driver, use the native db session, not the cache - if ($config->get('system', 'cache_driver') === Cache::TYPE_DATABASE) { - $session = new Database($config, $cookie, $dba, $logger, $server); + if ($config->get('system', 'cache_driver') === Type::DATABASE) { + $handler = new Session\Handler\Database($dba, $logger, $server); } else { - $session = new Cache($config, $cookie, $cache, $logger, $server); + $handler = new Session\Handler\Cache($cache, $logger, $server); } break; } + + $session = new Session\Native($baseURL, $handler); } } finally { - $profiler->saveTimestamp($stamp1, 'parser', System::callstack()); + $profiler->saveTimestamp($stamp1, 'parser'); return $session; } }