Mercurial > hg > isophonics-drupal-site
view core/modules/user/src/SharedTempStoreFactory.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 1fec387a4317 |
line wrap: on
line source
<?php namespace Drupal\user; use Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface; use Drupal\Core\Lock\LockBackendInterface; use Symfony\Component\HttpFoundation\RequestStack; /** * Creates a shared temporary storage for a collection. */ class SharedTempStoreFactory { /** * The storage factory creating the backend to store the data. * * @var \Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface */ protected $storageFactory; /** * The lock object used for this data. * * @var \Drupal\Core\Lock\LockBackendInterface */ protected $lockBackend; /** * The request stack. * * @var \Symfony\Component\HttpFoundation\RequestStack */ protected $requestStack; /** * The time to live for items in seconds. * * @var int */ protected $expire; /** * Constructs a Drupal\user\SharedTempStoreFactory object. * * @param \Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface $storage_factory * The key/value store factory. * @param \Drupal\Core\Lock\LockBackendInterface $lock_backend * The lock object used for this data. * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack * The request stack. * @param int $expire * The time to live for items, in seconds. */ public function __construct(KeyValueExpirableFactoryInterface $storage_factory, LockBackendInterface $lock_backend, RequestStack $request_stack, $expire = 604800) { $this->storageFactory = $storage_factory; $this->lockBackend = $lock_backend; $this->requestStack = $request_stack; $this->expire = $expire; } /** * Creates a SharedTempStore for the current user or anonymous session. * * @param string $collection * The collection name to use for this key/value store. This is typically * a shared namespace or module name, e.g. 'views', 'entity', etc. * @param mixed $owner * (optional) The owner of this SharedTempStore. By default, the * SharedTempStore is owned by the currently authenticated user, or by the * active anonymous session if no user is logged in. * * @return \Drupal\user\SharedTempStore * An instance of the key/value store. */ public function get($collection, $owner = NULL) { // Use the currently authenticated user ID or the active user ID unless // the owner is overridden. if (!isset($owner)) { $owner = \Drupal::currentUser()->id() ?: session_id(); } // Store the data for this collection in the database. $storage = $this->storageFactory->get("user.shared_tempstore.$collection"); return new SharedTempStore($storage, $this->lockBackend, $owner, $this->requestStack, $this->expire); } }