multiversion-8.x-1.0-beta34/src/Entity/Storage/Sql/BlockStorage.php

src/Entity/Storage/Sql/BlockStorage.php
<?php

namespace Drupal\multiversion\Entity\Storage\Sql;

use Drupal\Core\Config\Entity\ConfigEntityStorage;
use Drupal\Core\Entity\ContentEntityInterface;

/**
 * A base entity storage class.
 */
class BlockStorage extends ConfigEntityStorage {

  /**
   * {@inheritdoc}
   */
  protected function doLoadMultiple(array $ids = NULL) {
    $entities = parent::doLoadMultiple($ids);
    $entity_type_manager = \Drupal::entityTypeManager();
    /** @var \Drupal\block\Entity\Block $entity */
    foreach ($entities as $id => $entity) {
      $plugin_id = $entity->getPluginId();
      if (strpos($plugin_id, ':') === FALSE) {
        continue;
      }
      list($provider, $uuid) = explode(':', $plugin_id);
      if ($provider && $provider === 'block_content' && $uuid) {
        $storage = $entity_type_manager->getStorage('block_content');
        $active_workspace = \Drupal::service('workspace.manager')->getActiveWorkspace();
        $loaded_entity = $storage->loadByProperties(['uuid' => $uuid, 'workspace' => $active_workspace->id()]);
        $loaded_entity = reset($loaded_entity);
        if ($loaded_entity instanceof ContentEntityInterface) {
          $entities[$id]->addCacheableDependency($loaded_entity);
          $entities[$id]->addCacheableDependency($active_workspace);
        }
        else {
          unset($entities[$id]);
        }
      }
    }

    return $entities;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc