function PrivateTempStore::set

Same name in other branches
  1. 9 core/lib/Drupal/Core/TempStore/PrivateTempStore.php \Drupal\Core\TempStore\PrivateTempStore::set()
  2. 8.9.x core/lib/Drupal/Core/TempStore/PrivateTempStore.php \Drupal\Core\TempStore\PrivateTempStore::set()
  3. 10 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\TempStore

Code

public function set($key, $value) {
    if ($this->currentUser
        ->isAnonymous()) {
        $session = $this->requestStack
            ->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);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.