Mercurial > hg > cmmr2012-drupal-site
annotate core/modules/content_moderation/src/StateTransitionValidation.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Drupal\content_moderation; |
Chris@0 | 4 |
Chris@0 | 5 use Drupal\Core\Entity\ContentEntityInterface; |
Chris@0 | 6 use Drupal\Core\Session\AccountInterface; |
Chris@0 | 7 use Drupal\workflows\Transition; |
Chris@0 | 8 |
Chris@0 | 9 /** |
Chris@0 | 10 * Validates whether a certain state transition is allowed. |
Chris@0 | 11 */ |
Chris@0 | 12 class StateTransitionValidation implements StateTransitionValidationInterface { |
Chris@0 | 13 |
Chris@0 | 14 /** |
Chris@0 | 15 * The moderation information service. |
Chris@0 | 16 * |
Chris@0 | 17 * @var \Drupal\content_moderation\ModerationInformationInterface |
Chris@0 | 18 */ |
Chris@0 | 19 protected $moderationInfo; |
Chris@0 | 20 |
Chris@0 | 21 /** |
Chris@0 | 22 * Stores the possible state transitions. |
Chris@0 | 23 * |
Chris@0 | 24 * @var array |
Chris@0 | 25 */ |
Chris@0 | 26 protected $possibleTransitions = []; |
Chris@0 | 27 |
Chris@0 | 28 /** |
Chris@0 | 29 * Constructs a new StateTransitionValidation. |
Chris@0 | 30 * |
Chris@0 | 31 * @param \Drupal\content_moderation\ModerationInformationInterface $moderation_info |
Chris@0 | 32 * The moderation information service. |
Chris@0 | 33 */ |
Chris@0 | 34 public function __construct(ModerationInformationInterface $moderation_info) { |
Chris@0 | 35 $this->moderationInfo = $moderation_info; |
Chris@0 | 36 } |
Chris@0 | 37 |
Chris@0 | 38 /** |
Chris@0 | 39 * {@inheritdoc} |
Chris@0 | 40 */ |
Chris@0 | 41 public function getValidTransitions(ContentEntityInterface $entity, AccountInterface $user) { |
Chris@0 | 42 $workflow = $this->moderationInfo->getWorkflowForEntity($entity); |
Chris@0 | 43 $current_state = $entity->moderation_state->value ? $workflow->getTypePlugin()->getState($entity->moderation_state->value) : $workflow->getTypePlugin()->getInitialState($entity); |
Chris@0 | 44 |
Chris@0 | 45 return array_filter($current_state->getTransitions(), function (Transition $transition) use ($workflow, $user) { |
Chris@0 | 46 return $user->hasPermission('use ' . $workflow->id() . ' transition ' . $transition->id()); |
Chris@0 | 47 }); |
Chris@0 | 48 } |
Chris@0 | 49 |
Chris@0 | 50 } |