Mercurial > hg > isophonics-drupal-site
diff core/modules/system/src/DateFormatAccessControlHandler.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/system/src/DateFormatAccessControlHandler.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,43 @@ +<?php + +namespace Drupal\system; + +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Entity\EntityAccessControlHandler; +use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Session\AccountInterface; + +/** + * Defines the access control handler for the date format entity type. + * + * @see \Drupal\system\Entity\DateFormat + */ +class DateFormatAccessControlHandler extends EntityAccessControlHandler { + + /** + * {@inheritdoc} + */ + protected $viewLabelOperation = TRUE; + + /** + * {@inheritdoc} + */ + protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { + // There are no restrictions on viewing the label of a date format. + if ($operation === 'view label') { + return AccessResult::allowed(); + } + // Locked date formats cannot be updated or deleted. + elseif (in_array($operation, ['update', 'delete'])) { + if ($entity->isLocked()) { + return AccessResult::forbidden('The DateFormat config entity is locked.')->addCacheableDependency($entity); + } + else { + return parent::checkAccess($entity, $operation, $account)->addCacheableDependency($entity); + } + } + + return parent::checkAccess($entity, $operation, $account); + } + +}