ContentTranslationHandler::getTranslationAccess

public ContentTranslationHandler::getTranslationAccess(EntityInterface $entity, $op)

Checks if the user can perform the given operation on translations of the wrapped entity.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity whose translation has to be accessed.

$op: The operation to be performed on the translation. Possible values are:

  • "create"
  • "update"
  • "delete"

Return value

\Drupal\Core\Access\AccessResultInterface The access result.

Overrides ContentTranslationHandlerInterface::getTranslationAccess

File

core/modules/content_translation/src/ContentTranslationHandler.php, line 240

Class

ContentTranslationHandler
Base class for content translation handlers.

Namespace

Drupal\content_translation

Code

public function getTranslationAccess(EntityInterface $entity, $op) {
  // @todo Move this logic into a translation access control handler checking also
  //   the translation language and the given account.
  $entity_type = $entity->getEntityType();
  $translate_permission = TRUE;
  // If no permission granularity is defined this entity type does not need an
  // explicit translate permission.
  if (!$this->currentUser->hasPermission('translate any entity') && $permission_granularity = $entity_type->getPermissionGranularity()) {
    $translate_permission = $this->currentUser->hasPermission($permission_granularity == 'bundle' ? "translate {$entity->bundle()} {$entity->getEntityTypeId()}" : "translate {$entity->getEntityTypeId()}");
  }
  return AccessResult::allowedIf($translate_permission && $this->currentUser->hasPermission("$op content translations"))->cachePerPermissions();
}
doc_Drupal
2016-10-29 08:58:15
Comments
Leave a Comment

Please login to continue.