123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- namespace Drupal\Core\TempStore;
- 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\Core\TempStore\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\Core\TempStore\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("tempstore.shared.$collection");
- return new SharedTempStore($storage, $this->lockBackend, $owner, $this->requestStack, $this->expire);
- }
- }
|