comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
1 <?php
2
3 namespace Drupal\user;
4
5 use Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface;
6 use Drupal\Core\Lock\LockBackendInterface;
7 use Symfony\Component\HttpFoundation\RequestStack;
8
9 /**
10 * Creates a shared temporary storage for a collection.
11 */
12 class SharedTempStoreFactory {
13
14 /**
15 * The storage factory creating the backend to store the data.
16 *
17 * @var \Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface
18 */
19 protected $storageFactory;
20
21 /**
22 * The lock object used for this data.
23 *
24 * @var \Drupal\Core\Lock\LockBackendInterface
25 */
26 protected $lockBackend;
27
28 /**
29 * The request stack.
30 *
31 * @var \Symfony\Component\HttpFoundation\RequestStack
32 */
33 protected $requestStack;
34
35 /**
36 * The time to live for items in seconds.
37 *
38 * @var int
39 */
40 protected $expire;
41
42 /**
43 * Constructs a Drupal\user\SharedTempStoreFactory object.
44 *
45 * @param \Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface $storage_factory
46 * The key/value store factory.
47 * @param \Drupal\Core\Lock\LockBackendInterface $lock_backend
48 * The lock object used for this data.
49 * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
50 * The request stack.
51 * @param int $expire
52 * The time to live for items, in seconds.
53 */
54 public function __construct(KeyValueExpirableFactoryInterface $storage_factory, LockBackendInterface $lock_backend, RequestStack $request_stack, $expire = 604800) {
55 $this->storageFactory = $storage_factory;
56 $this->lockBackend = $lock_backend;
57 $this->requestStack = $request_stack;
58 $this->expire = $expire;
59 }
60
61 /**
62 * Creates a SharedTempStore for the current user or anonymous session.
63 *
64 * @param string $collection
65 * The collection name to use for this key/value store. This is typically
66 * a shared namespace or module name, e.g. 'views', 'entity', etc.
67 * @param mixed $owner
68 * (optional) The owner of this SharedTempStore. By default, the
69 * SharedTempStore is owned by the currently authenticated user, or by the
70 * active anonymous session if no user is logged in.
71 *
72 * @return \Drupal\user\SharedTempStore
73 * An instance of the key/value store.
74 */
75 public function get($collection, $owner = NULL) {
76 // Use the currently authenticated user ID or the active user ID unless
77 // the owner is overridden.
78 if (!isset($owner)) {
79 $owner = \Drupal::currentUser()->id() ?: session_id();
80 }
81
82 // Store the data for this collection in the database.
83 $storage = $this->storageFactory->get("user.shared_tempstore.$collection");
84 return new SharedTempStore($storage, $this->lockBackend, $owner, $this->requestStack, $this->expire);
85 }
86
87 }