You are here

protected function AcsfDuplicationScrubCommentStorage::invokeStorageLoadHook in Acquia Cloud Site Factory Connector 8

Same name and namespace in other branches
  1. 8.2 src/Event/AcsfDuplicationScrubCommentStorage.php \Drupal\acsf\Event\AcsfDuplicationScrubCommentStorage::invokeStorageLoadHook()

Invokes hook_entity_storage_load() while catching exceptions thrown.

Unlike SqlContentEntityStorage's implementation, this prevents a hook_comment_storage_load() implementation somewhere in contrib from throwing exceptions while loading orphaned comments, and causing Wip failures.

Issue https://www.drupal.org/node/2614720 was filed and this method was written assuming that Drupal Core itself was throwing exceptions which should be caught, while loading orphaned comments. Unfortunately that's not the case: RDF module throws a fatal error (not an exception). So now this method does not solve a known problem; it's just a semi random extra precaution in case a contrib module does funny things. This may be deleted if we value minimizing code over supporting random theoretical failures.

Parameters

\Drupal\Core\Entity\ContentEntityInterface[] $entities: List of entities, keyed on the entity ID.

Overrides ContentEntityStorageBase::invokeStorageLoadHook

File

src/Event/AcsfDuplicationScrubCommentStorage.php, line 35

Class

AcsfDuplicationScrubCommentStorage
Comment storage class (using a SQL backend) which ignores load failures.

Namespace

Drupal\acsf\Event

Code

protected function invokeStorageLoadHook(array &$entities) {
  if (!empty($entities)) {

    // Call hook_entity_storage_load().
    foreach ($this
      ->moduleHandler()
      ->getImplementations('entity_storage_load') as $module) {
      $function = $module . '_entity_storage_load';
      try {
        $function($entities, $this->entityTypeId);
      } catch (\Exception $e) {

        // Don't care.
      }
    }

    // Call hook_TYPE_storage_load().
    foreach ($this
      ->moduleHandler()
      ->getImplementations($this->entityTypeId . '_storage_load') as $module) {
      $function = $module . '_' . $this->entityTypeId . '_storage_load';
      try {
        $function($entities);
      } catch (\Exception $e) {

        // Don't care.
      }
    }
  }
}