Mercurial > hg > cmmr2012-drupal-site
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; + } + +}