1<?php 2 3namespace Drupal\content_moderation; 4 5use Drupal\Core\StringTranslation\StringTranslationTrait; 6use Drupal\workflows\Entity\Workflow; 7 8/** 9 * Defines a class for dynamic permissions based on transitions. 10 * 11 * @internal 12 */ 13class Permissions { 14 15 use StringTranslationTrait; 16 17 /** 18 * Returns an array of transition permissions. 19 * 20 * @return array 21 * The transition permissions. 22 */ 23 public function transitionPermissions() { 24 $permissions = []; 25 /** @var \Drupal\workflows\WorkflowInterface $workflow */ 26 foreach (Workflow::loadMultipleByType('content_moderation') as $id => $workflow) { 27 foreach ($workflow->getTypePlugin()->getTransitions() as $transition) { 28 $permissions['use ' . $workflow->id() . ' transition ' . $transition->id()] = [ 29 'title' => $this->t('%workflow workflow: Use %transition transition.', [ 30 '%workflow' => $workflow->label(), 31 '%transition' => $transition->label(), 32 ]), 33 ]; 34 } 35 } 36 37 return $permissions; 38 } 39 40} 41