annotate 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
rev   line source
Chris@4 1 <?php
Chris@4 2
Chris@4 3 namespace Drupal\block_content\Access;
Chris@4 4
Chris@4 5 use Drupal\Core\Access\AccessibleInterface;
Chris@4 6 use Drupal\Core\Access\AccessResult;
Chris@4 7 use Drupal\Core\Session\AccountInterface;
Chris@4 8
Chris@4 9 /**
Chris@4 10 * An access group where all the dependencies must be allowed.
Chris@4 11 *
Chris@4 12 * @internal
Chris@4 13 */
Chris@4 14 class AccessGroupAnd implements AccessibleInterface {
Chris@4 15
Chris@4 16 /**
Chris@4 17 * The access dependencies.
Chris@4 18 *
Chris@4 19 * @var \Drupal\Core\Access\AccessibleInterface[]
Chris@4 20 */
Chris@4 21 protected $dependencies = [];
Chris@4 22
Chris@4 23 /**
Chris@4 24 * {@inheritdoc}
Chris@4 25 */
Chris@4 26 public function addDependency(AccessibleInterface $dependency) {
Chris@4 27 $this->dependencies[] = $dependency;
Chris@4 28 return $this;
Chris@4 29 }
Chris@4 30
Chris@4 31 /**
Chris@4 32 * {@inheritdoc}
Chris@4 33 */
Chris@4 34 public function access($operation, AccountInterface $account = NULL, $return_as_object = FALSE) {
Chris@4 35 $access_result = AccessResult::neutral();
Chris@4 36 foreach (array_slice($this->dependencies, 1) as $dependency) {
Chris@4 37 $access_result = $access_result->andIf($dependency->access($operation, $account, TRUE));
Chris@4 38 }
Chris@4 39 return $return_as_object ? $access_result : $access_result->isAllowed();
Chris@4 40 }
Chris@4 41
Chris@4 42 /**
Chris@4 43 * {@inheritdoc}
Chris@4 44 */
Chris@4 45 public function getDependencies() {
Chris@4 46 return $this->dependencies;
Chris@4 47 }
Chris@4 48
Chris@4 49 }