X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFactory%2FSessionFactory.php;h=116afe18a75d095779edbfccd1c278709867d14a;hb=76ae210527487bea129411e8ed02ac4997d0d89b;hp=47baa74708664f4f6e0a19bddecd56596964eae3;hpb=ce2610000b8602fadec8fa1f71a94a815f2cba20;p=friendica.git diff --git a/src/Factory/SessionFactory.php b/src/Factory/SessionFactory.php index 47baa74708..116afe18a7 100644 --- a/src/Factory/SessionFactory.php +++ b/src/Factory/SessionFactory.php @@ -1,20 +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\Cache; -use Friendica\Core\Session\Database; -use Friendica\Core\Session\ISession; -use Friendica\Core\Session\Memory; -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; @@ -24,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; } }