Skip to content
Snippets Groups Projects
Verified Commit d9111a47 authored by Dave Long's avatar Dave Long
Browse files

Issue #3445909 by seanB, smustgrave, alexpott, catch: Add static caching to...

Issue #3445909 by seanB, smustgrave, alexpott, catch: Add static caching to LayoutTempstoreRepository

(cherry picked from commit 27c9bcca)
parent 3fd288da
No related branches found
No related tags found
16 merge requests!12212Issue #3445525 by alexpott, japerry, catch, mglaman, longwave: Add BC layer...,!10602Issue #3438769 by vinmayiswamy, antonnavi, michelle, amateescu: Sub workspace does not clear,!10301Issue #3469309 by mstrelan, smustgrave, moshe weitzman: Use one-time login...,!10187Issue #3487488 by dakwamine: ExtensionMimeTypeGuesser::guessMimeType must support file names with "0" (zero) like foo.0.zip,!9929Issue #3445469 by pooja_sharma, smustgrave: Add additional test coverage for...,!9787Resolve issue 3479427 - bootstrap barrio issue under Windows,!9742Issue #3463908 by catch, quietone: Split OptionsFieldUiTest into two,!9526Issue #3458177 by mondrake, catch, quietone, godotislate, longwave, larowlan,...,!8949Backport .gitlabci.yml changes.,!8738Issue #3424162 by camilledavis, dineshkumarbollu, smustgrave: Claro...,!8704Make greek characters available in ckeditor5,!8533Issue #3446962 by kim.pepper: Remove incorrectly added...,!8517Issue #3443748 by NexusNovaz, smustgrave: Testcase creates false positive,!6502Draft: Resolve #2938524 "Plach testing issue",!38582585169-10.1.x,!3226Issue #2987537: Custom menu link entity type should not declare "bundle" entity key
Pipeline #194003 passed with warnings
Pipeline: drupal

#194015

    Pipeline: drupal

    #194010

      ......@@ -16,6 +16,13 @@ class LayoutTempstoreRepository implements LayoutTempstoreRepositoryInterface {
      */
      protected $tempStoreFactory;
      /**
      * The static cache of loaded values.
      *
      * @var \Drupal\layout_builder\SectionStorageInterface[]
      */
      protected array $cache = [];
      /**
      * LayoutTempstoreRepository constructor.
      *
      ......@@ -31,6 +38,12 @@ public function __construct(SharedTempStoreFactory $temp_store_factory) {
      */
      public function get(SectionStorageInterface $section_storage) {
      $key = $this->getKey($section_storage);
      // Check if the storage is present in the static cache.
      if (isset($this->cache[$key])) {
      return $this->cache[$key];
      }
      $tempstore = $this->getTempstore($section_storage)->get($key);
      if (!empty($tempstore['section_storage'])) {
      $storage_type = $section_storage->getStorageType();
      ......@@ -39,6 +52,9 @@ public function get(SectionStorageInterface $section_storage) {
      if (!($section_storage instanceof SectionStorageInterface)) {
      throw new \UnexpectedValueException(sprintf('The entry with storage type "%s" and ID "%s" is invalid', $storage_type, $key));
      }
      // Set the storage in the static cache.
      $this->cache[$key] = $section_storage;
      }
      return $section_storage;
      }
      ......@@ -48,6 +64,12 @@ public function get(SectionStorageInterface $section_storage) {
      */
      public function has(SectionStorageInterface $section_storage) {
      $key = $this->getKey($section_storage);
      // Check if the storage is present in the static cache.
      if (isset($this->cache[$key])) {
      return TRUE;
      }
      $tempstore = $this->getTempstore($section_storage)->get($key);
      return !empty($tempstore['section_storage']);
      }
      ......@@ -58,6 +80,8 @@ public function has(SectionStorageInterface $section_storage) {
      public function set(SectionStorageInterface $section_storage) {
      $key = $this->getKey($section_storage);
      $this->getTempstore($section_storage)->set($key, ['section_storage' => $section_storage]);
      // Update the storage in the static cache.
      $this->cache[$key] = $section_storage;
      }
      /**
      ......@@ -66,6 +90,8 @@ public function set(SectionStorageInterface $section_storage) {
      public function delete(SectionStorageInterface $section_storage) {
      $key = $this->getKey($section_storage);
      $this->getTempstore($section_storage)->delete($key);
      // Remove the storage from the static cache.
      unset($this->cache[$key]);
      }
      /**
      ......
      0% Loading or .
      You are about to add 0 people to the discussion. Proceed with caution.
      Please register or to comment