Version 1
[yaffs-website] / web / modules / contrib / ctools / src / Context / EntityLazyLoadContext.php
diff --git a/web/modules/contrib/ctools/src/Context/EntityLazyLoadContext.php b/web/modules/contrib/ctools/src/Context/EntityLazyLoadContext.php
new file mode 100644 (file)
index 0000000..c4dacce
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+
+namespace Drupal\ctools\Context;
+
+use Drupal\Core\Entity\EntityRepositoryInterface;
+use Drupal\Core\Plugin\Context\Context;
+use Drupal\Core\Plugin\Context\ContextDefinitionInterface;
+
+/**
+ * @todo.
+ */
+class EntityLazyLoadContext extends Context {
+
+  /**
+   * The entity UUID.
+   *
+   * @var string
+   */
+  protected $uuid;
+
+  /**
+   * The entity repository.
+   *
+   * @var \Drupal\Core\Entity\EntityRepositoryInterface
+   */
+  protected $entityRepository;
+
+  /**
+   * Construct an EntityLazyLoadContext object.
+   *
+   * @param \Drupal\Core\Plugin\Context\ContextDefinitionInterface $context_definition
+   *   The context definition.
+   * @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository
+   *   The entity repository.
+   * @param string $uuid
+   *   The UUID of the entity.
+   */
+  public function __construct(ContextDefinitionInterface $context_definition, EntityRepositoryInterface $entity_repository, $uuid) {
+    parent::__construct($context_definition);
+    $this->entityRepository = $entity_repository;
+    $this->uuid = $uuid;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getContextValue() {
+    if (!$this->contextData) {
+      $entity_type_id = substr($this->contextDefinition->getDataType(), 7);
+      $this->setContextValue($this->entityRepository->loadEntityByUuid($entity_type_id, $this->uuid));
+    }
+    return parent::getContextValue();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasContextValue() {
+    // Ensure that the entity is loaded before checking if it exists.
+    if (!$this->contextData) {
+      $this->getContextValue();
+    }
+    return parent::hasContextValue();
+  }
+
+}