public function MailchimpCampaignAccessControlHandler::access in Mailchimp 8
Same name and namespace in other branches
- 2.x modules/mailchimp_campaign/src/MailchimpCampaignAccessControlHandler.php \Drupal\mailchimp_campaign\MailchimpCampaignAccessControlHandler::access()
Checks access to an operation on a given entity or entity translation.
Use \Drupal\Core\Entity\EntityAccessControlHandlerInterface::createAccess() to check access to create an entity.
Parameters
\Drupal\Core\Entity\EntityInterface $entity: The entity for which to check access.
string $operation: The operation access should be checked for. Usually one of "view", "view label", "update" or "delete".
\Drupal\Core\Session\AccountInterface $account: (optional) The user session for which to check access, or NULL to check access for the current user. Defaults to NULL.
bool $return_as_object: (optional) Defaults to FALSE.
Return value
bool|\Drupal\Core\Access\AccessResultInterface The access result. Returns a boolean if $return_as_object is FALSE (this is the default) and otherwise an AccessResultInterface object. When a boolean is returned, the result of AccessInterface::isAllowed() is returned, i.e. TRUE means access is explicitly allowed, FALSE means access is either explicitly forbidden or "no opinion".
Overrides EntityAccessControlHandler::access
File
- modules/
mailchimp_campaign/ src/ MailchimpCampaignAccessControlHandler.php, line 18
Class
- MailchimpCampaignAccessControlHandler
- Access control handler for the MailchimpCampaign entity.
Namespace
Drupal\mailchimp_campaignCode
public function access(EntityInterface $entity, $operation, AccountInterface $account = NULL, $return_as_object = FALSE) {
/* @var $entity \Drupal\mailchimp_campaign\Entity\MailchimpCampaign */
// Ensure the associated list/audience still exists.
if (!$entity->mc_data) {
\Drupal::messenger()
->addError($this
->t('Data for this campaign is missing. Were the audiences deleted? Were settings changed?'), 'error');
return parent::access($entity, $operation, $account, $return_as_object);
}
$status = $entity->mc_data->status;
$return = NULL;
switch ($operation) {
case 'send':
case 'edit':
case 'delete':
$return = $status == MAILCHIMP_STATUS_SENT ? AccessResult::forbidden() : AccessResult::allowed();
break;
case 'stats':
$return = $status == MAILCHIMP_STATUS_SENT ? AccessResult::allowed() : AccessResult::forbidden();
break;
default:
$return = parent::access($entity, $operation, $account, $return_as_object);
}
return $return;
}