diff core/modules/block_content/src/Access/AccessGroupAnd.php @ 4:a9cd425dd02b

Update, including to Drupal core 8.6.10
author Chris Cannam
date Thu, 28 Feb 2019 13:11:55 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/block_content/src/Access/AccessGroupAnd.php	Thu Feb 28 13:11:55 2019 +0000
@@ -0,0 +1,49 @@
+<?php
+
+namespace Drupal\block_content\Access;
+
+use Drupal\Core\Access\AccessibleInterface;
+use Drupal\Core\Access\AccessResult;
+use Drupal\Core\Session\AccountInterface;
+
+/**
+ * An access group where all the dependencies must be allowed.
+ *
+ * @internal
+ */
+class AccessGroupAnd implements AccessibleInterface {
+
+  /**
+   * The access dependencies.
+   *
+   * @var \Drupal\Core\Access\AccessibleInterface[]
+   */
+  protected $dependencies = [];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function addDependency(AccessibleInterface $dependency) {
+    $this->dependencies[] = $dependency;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function access($operation, AccountInterface $account = NULL, $return_as_object = FALSE) {
+    $access_result = AccessResult::neutral();
+    foreach (array_slice($this->dependencies, 1) as $dependency) {
+      $access_result = $access_result->andIf($dependency->access($operation, $account, TRUE));
+    }
+    return $return_as_object ? $access_result : $access_result->isAllowed();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDependencies() {
+    return $this->dependencies;
+  }
+
+}