public function PrivateTempStore::set in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/TempStore/PrivateTempStore.php \Drupal\Core\TempStore\PrivateTempStore::set()
Stores a particular key/value pair in this PrivateTempStore.
Parameters
string $key: The key of the data to store.
mixed $value: The data to store.
Throws
\Drupal\Core\TempStore\TempStoreException Thrown when a lock for the backend storage could not be acquired.
File
- core/
lib/ Drupal/ Core/ TempStore/ PrivateTempStore.php, line 122
Class
- PrivateTempStore
- Stores and retrieves temporary data for a given owner.
Namespace
Drupal\Core\TempStoreCode
public function set($key, $value) {
if ($this->currentUser
->isAnonymous()) {
// Ensure that an anonymous user has a session created for them, as
// otherwise subsequent page loads will not be able to retrieve their
// tempstore data. Note this has to be done before the key is created as
// the owner is used in key creation.
$this
->startSession();
$session = $this->requestStack
->getCurrentRequest()
->getSession();
if (!$session
->has('core.tempstore.private.owner')) {
$session
->set('core.tempstore.private.owner', Crypt::randomBytesBase64());
}
}
$key = $this
->createkey($key);
if (!$this->lockBackend
->acquire($key)) {
$this->lockBackend
->wait($key);
if (!$this->lockBackend
->acquire($key)) {
throw new TempStoreException("Couldn't acquire lock to update item '{$key}' in '{$this->storage->getCollectionName()}' temporary storage.");
}
}
$value = (object) [
'owner' => $this
->getOwner(),
'data' => $value,
'updated' => (int) $this->requestStack
->getMainRequest()->server
->get('REQUEST_TIME'),
];
$this->storage
->setWithExpire($key, $value, $this->expire);
$this->lockBackend
->release($key);
}