commit 05c55ead5cb22abdff88b78c2f580880263e1865 Author: Andrei Mateescu Date: Mon Jul 11 18:56:07 2016 +0300 Fixed Wim Leers' review from #64 and a lot of coding standards and various stuff. diff --git a/content_moderation.install b/content_moderation.install index 73e5725..c40927d 100644 --- a/content_moderation.install +++ b/content_moderation.install @@ -2,7 +2,7 @@ /** * @file - * Contains install/update hooks for moderation_state. + * Install, update and uninstall functions for the content_moderation module. */ use Drupal\Core\Entity\ContentEntityTypeInterface; diff --git a/content_moderation.libraries.yml b/content_moderation.libraries.yml index 31dd1c4..6caaaf3 100644 --- a/content_moderation.libraries.yml +++ b/content_moderation.libraries.yml @@ -1,5 +1,5 @@ entity-moderation-form: - version: 1.x + version: VERSION css: layout: css/entity-moderation-form.css: {} diff --git a/content_moderation.module b/content_moderation.module index ffd14e4..368b597 100644 --- a/content_moderation.module +++ b/content_moderation.module @@ -65,9 +65,10 @@ function content_moderation_entity_base_field_info(EntityTypeInterface $entity_t */ function content_moderation_module_implements_alter(&$implementations, $hook) { if ($hook === 'entity_view_alter') { - // Find the quickedit implementation and move content after it. + // Move the content_moderation implementation to the end of the list. + $group = $implementations['content_moderation']; unset($implementations['content_moderation']); - $implementations['content_moderation'] = FALSE; + $implementations['content_moderation'] = $group; } } @@ -195,23 +196,33 @@ function content_moderation_entity_view(array &$build, EntityInterface $entity, * the appropriate permission. This permission is therefore effectively * mandatory for any user that wants to moderate things. */ -function content_moderation_node_access(NodeInterface $entity, $operation, AccountInterface $account) { +function content_moderation_node_access(NodeInterface $node, $operation, AccountInterface $account) { /** @var \Drupal\content_moderation\ModerationInformationInterface $modinfo */ $moderation_info = Drupal::service('content_moderation.moderation_information'); - if ($operation == 'view') { - return (!$entity->isPublished()) + $access_result = NULL; + if ($operation === 'view') { + $access_result = (!$node->isPublished()) ? AccessResult::allowedIfHasPermission($account, 'view any unpublished content') : AccessResult::neutral(); + + $access_result->addCacheableDependency($node); } - elseif ($operation == 'update' && $moderation_info->isModeratableEntity($entity) && $entity->moderation_information && $entity->moderation_information->target_id) { + elseif ($operation === 'update' && $moderation_info->isModeratableEntity($node) && $node->moderation_state && $node->moderation_state->target_id) { /** @var \Drupal\content_moderation\StateTransitionValidation $transition_validation */ $transition_validation = \Drupal::service('content_moderation.state_transition_validation'); - return $transition_validation->getValidTransitionTargets($entity, $account) - ? AccessResult::neutral() - : AccessResult::forbidden(); + $valid_transition_targets = $transition_validation->getValidTransitionTargets($node, $account); + $access_result = $valid_transition_targets ? AccessResult::neutral() : AccessResult::forbidden(); + + $access_result->addCacheableDependency($node); + $access_result->addCacheableDependency($account); + foreach ($valid_transition_targets as $valid_transition_target) { + $access_result->addCacheableDependency($valid_transition_target); + } } + + return $access_result; } /** diff --git a/content_moderation.routing.yml b/content_moderation.routing.yml index ea71032..cc7a5ff 100644 --- a/content_moderation.routing.yml +++ b/content_moderation.routing.yml @@ -14,8 +14,6 @@ entity.moderation_state.collection: _title: 'Moderation states' requirements: _permission: 'administer moderation states' - options: - _admin_route: TRUE entity.moderation_state.add_form: path: '/admin/config/workflow/moderation/states/add' @@ -24,8 +22,6 @@ entity.moderation_state.add_form: _title: 'Add Moderation state' requirements: _permission: 'administer moderation states' - options: - _admin_route: TRUE entity.moderation_state.edit_form: path: '/admin/config/workflow/moderation/states/{moderation_state}' @@ -34,8 +30,6 @@ entity.moderation_state.edit_form: _title: 'Edit Moderation state' requirements: _permission: 'administer moderation states' - options: - _admin_route: TRUE entity.moderation_state.delete_form: path: '/admin/config/workflow/moderation/states/{moderation_state}/delete' @@ -44,8 +38,6 @@ entity.moderation_state.delete_form: _title: 'Delete Moderation state' requirements: _permission: 'administer moderation states' - options: - _admin_route: TRUE # ModerationStateTransition routing definition entity.moderation_state_transition.collection: @@ -55,8 +47,6 @@ entity.moderation_state_transition.collection: _title: 'Moderation state transitions' requirements: _permission: 'administer moderation state transitions' - options: - _admin_route: TRUE entity.moderation_state_transition.add_form: path: '/admin/config/workflow/moderation/transitions/add' @@ -65,8 +55,6 @@ entity.moderation_state_transition.add_form: _title: 'Add Moderation state transition' requirements: _permission: 'administer moderation state transitions' - options: - _admin_route: TRUE entity.moderation_state_transition.edit_form: path: '/admin/config/workflow/moderation/transitions/{moderation_state_transition}' @@ -75,8 +63,6 @@ entity.moderation_state_transition.edit_form: _title: 'Edit Moderation state transition' requirements: _permission: 'administer moderation state transitions' - options: - _admin_route: TRUE entity.moderation_state_transition.delete_form: path: '/admin/config/workflow/moderation/transitions/{moderation_state_transition}/delete' @@ -85,5 +71,3 @@ entity.moderation_state_transition.delete_form: _title: 'Delete Moderation state transition' requirements: _permission: 'administer moderation state transitions' - options: - _admin_route: TRUE diff --git a/src/Access/LatestRevisionCheck.php b/src/Access/LatestRevisionCheck.php index c5747f3..1bde3f2 100644 --- a/src/Access/LatestRevisionCheck.php +++ b/src/Access/LatestRevisionCheck.php @@ -9,9 +9,14 @@ use Drupal\Core\Routing\RouteMatchInterface; use Drupal\content_moderation\ModerationInformationInterface; use Symfony\Component\Routing\Route; +/** + * Access check for the entity moderation tab. + */ class LatestRevisionCheck implements AccessInterface { /** + * The moderation information service. + * * @var \Drupal\content_moderation\ModerationInformationInterface */ protected $moderationInfo; @@ -32,8 +37,6 @@ class LatestRevisionCheck implements AccessInterface { * This checker assumes the presence of an '_entity_access' requirement key * in the same form as used by EntityAccessCheck. * - * @see \Drupal\Core\Entity\EntityAccessCheck - * * @param \Symfony\Component\Routing\Route $route * The route to check against. * @param \Drupal\Core\Routing\RouteMatchInterface $route_match @@ -41,11 +44,11 @@ class LatestRevisionCheck implements AccessInterface { * * @return \Drupal\Core\Access\AccessResultInterface * The access result. + * + * @see \Drupal\Core\Entity\EntityAccessCheck */ public function access(Route $route, RouteMatchInterface $route_match) { - - // This tab should not show up period unless there's a reason to show it. - // @todo Do we need any extra cache tags here? + // This tab should not show up unless there's a reason to show it. $entity = $this->loadEntity($route, $route_match); return $this->moderationInfo->hasForwardRevision($entity) ? AccessResult::allowed()->addCacheableDependency($entity) diff --git a/src/ContentModerationStateInterface.php b/src/ContentModerationStateInterface.php index 8993a36..c971686 100644 --- a/src/ContentModerationStateInterface.php +++ b/src/ContentModerationStateInterface.php @@ -7,4 +7,4 @@ use Drupal\user\EntityOwnerInterface; interface ContentModerationStateInterface extends ContentEntityInterface, EntityOwnerInterface { -} \ No newline at end of file +} diff --git a/src/Entity/ContentModerationState.php b/src/Entity/ContentModerationState.php index abffde9..d506121 100644 --- a/src/Entity/ContentModerationState.php +++ b/src/Entity/ContentModerationState.php @@ -4,7 +4,6 @@ namespace Drupal\content_moderation\Entity; use Drupal\content_moderation\ContentModerationStateInterface; use Drupal\Core\Entity\ContentEntityBase; -use Drupal\Core\Entity\ContentEntityInterface; use Drupal\Core\Entity\EntityChangedTrait; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityTypeInterface; @@ -12,11 +11,11 @@ use Drupal\Core\Field\BaseFieldDefinition; use Drupal\user\UserInterface; /** - * Defines the content_moderation_state entity class. + * Defines the Content moderation state entity. * * @ContentEntityType( * id = "content_moderation_state", - * label = @Translation("Content Moderation State"), + * label = @Translation("Content moderation state"), * label_singular = @Translation("content moderation state"), * label_plural = @Translation("content moderation states"), * label_count = @PluralTranslation( @@ -37,11 +36,12 @@ use Drupal\user\UserInterface; * } * ) */ -class ContentModerationState extends ContentEntityBase implements ContentModerationStateInterface{ +class ContentModerationState extends ContentEntityBase implements ContentModerationStateInterface { + use EntityChangedTrait; /** - * @inheritDoc + * {@inheritDoc} */ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { $fields = parent::baseFieldDefinitions($entity_type); @@ -118,15 +118,15 @@ class ContentModerationState extends ContentEntityBase implements ContentModerat } /** - * Creates an entity or updates. + * Creates or updates the moderation state of an entity. * * @param \Drupal\Core\Entity\EntityInterface $entity * The content entity to moderate. - * @param string $moderation_state->target_id + * @param string $moderation_state_id * (optional) The ID of the state to give the entity. */ - public static function updateOrCreateFromEntity(EntityInterface $entity, $moderation_state = NULL) { - $moderation_state = $moderation_state ?: $entity->moderation_state->target_id; + public static function updateOrCreateFromEntity(EntityInterface $entity, $moderation_state_id= NULL) { + $moderation_state = $moderation_state_id ?: $entity->moderation_state->target_id; /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */ if (!$moderation_state) { $moderation_state = \Drupal::service('content_moderation.moderation_information') @@ -134,7 +134,7 @@ class ContentModerationState extends ContentEntityBase implements ContentModerat ->getThirdPartySetting('content_moderation', 'default_moderation_state'); } - // @todo what if $moderation_state->target_id is null at this point? + // @todo what if $entity->moderation_state->target_id is null at this point? $entity_type_id = $entity->getEntityTypeId(); $entity_id = $entity->id(); @@ -177,9 +177,9 @@ class ContentModerationState extends ContentEntityBase implements ContentModerat } /** - * Default value callback for 'uid' base field definition. + * Default value callback for the 'uid' base field definition. * - * @see ::baseFieldDefinitions() + * @see \Drupal\content_moderation\Entity\ContentModerationState::baseFieldDefinitions() * * @return array * An array of default values. diff --git a/src/Entity/Handler/BlockContentModerationHandler.php b/src/Entity/Handler/BlockContentModerationHandler.php index 152a8a3..b88b415 100644 --- a/src/Entity/Handler/BlockContentModerationHandler.php +++ b/src/Entity/Handler/BlockContentModerationHandler.php @@ -4,7 +4,6 @@ namespace Drupal\content_moderation\Entity\Handler; use Drupal\Core\Form\FormStateInterface; - /** * Customizations for block content entities. */ diff --git a/src/Entity/Handler/ModerationHandler.php b/src/Entity/Handler/ModerationHandler.php index 7bce45d..20cbedd 100644 --- a/src/Entity/Handler/ModerationHandler.php +++ b/src/Entity/Handler/ModerationHandler.php @@ -2,7 +2,6 @@ namespace Drupal\content_moderation\Entity\Handler; - use Drupal\Core\Config\Entity\ConfigEntityInterface; use Drupal\Core\Entity\ContentEntityInterface; use Drupal\Core\Entity\EntityHandlerInterface; @@ -21,7 +20,7 @@ class ModerationHandler implements ModerationHandlerInterface, EntityHandlerInte use StringTranslationTrait; /** - * @inheritDoc + * {@inheritDoc} */ public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) { return new static(); diff --git a/src/Entity/Handler/ModerationHandlerInterface.php b/src/Entity/Handler/ModerationHandlerInterface.php index 0946e6c..b4a8626 100644 --- a/src/Entity/Handler/ModerationHandlerInterface.php +++ b/src/Entity/Handler/ModerationHandlerInterface.php @@ -2,7 +2,6 @@ namespace Drupal\content_moderation\Entity\Handler; - use Drupal\Core\Config\Entity\ConfigEntityInterface; use Drupal\Core\Entity\ContentEntityInterface; use Drupal\Core\Form\FormStateInterface; @@ -36,8 +35,9 @@ interface ModerationHandlerInterface { * The most common use case is to force revisions on for this bundle if * moderation is enabled. That, sadly, does not have a common API in core. * - * @param \Drupal\Core\Config\Entity\ConfigEntityTypeInterface $bundle + * @param \Drupal\Core\Config\Entity\ConfigEntityInterface $bundle * The bundle definition that is being saved. + * * @return mixed */ public function onBundleModerationConfigurationFormSubmit(ConfigEntityInterface $bundle); diff --git a/src/Entity/ModerationState.php b/src/Entity/ModerationState.php index e6268ad..291a74a 100644 --- a/src/Entity/ModerationState.php +++ b/src/Entity/ModerationState.php @@ -34,6 +34,7 @@ use Drupal\content_moderation\ModerationStateInterface; * ) */ class ModerationState extends ConfigEntityBase implements ModerationStateInterface { + /** * The Moderation state ID. * diff --git a/src/Entity/ModerationStateTransition.php b/src/Entity/ModerationStateTransition.php index 41863f0..99dbf93 100644 --- a/src/Entity/ModerationStateTransition.php +++ b/src/Entity/ModerationStateTransition.php @@ -35,6 +35,7 @@ use Drupal\content_moderation\ModerationStateTransitionInterface; * ) */ class ModerationStateTransition extends ConfigEntityBase implements ModerationStateTransitionInterface { + /** * The Moderation state transition ID. * diff --git a/src/EntityOperations.php b/src/EntityOperations.php index 68c399b..9d680be 100644 --- a/src/EntityOperations.php +++ b/src/EntityOperations.php @@ -202,7 +202,6 @@ class EntityOperations { * @see EntityFieldManagerInterface::getExtraFields() */ public function entityView(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) { - if (!$this->moderationInfo->isModeratableEntity($entity)) { return; } diff --git a/src/EntityTypeInfo.php b/src/EntityTypeInfo.php index 2bcab7f..34b2a0e 100644 --- a/src/EntityTypeInfo.php +++ b/src/EntityTypeInfo.php @@ -200,9 +200,9 @@ class EntityTypeInfo { * - edit: (optional) String containing markup (normally a link) used as the * element's 'edit' operation in the administration interface. Only for * 'form' context. - * - delete: (optional) String containing markup (normally a link) used as the - * element's 'delete' operation in the administration interface. Only for - * 'form' context. + * - delete: (optional) String containing markup (normally a link) used as + * the element's 'delete' operation in the administration interface. Only + * for 'form' context. */ public function entityExtraFieldInfo() { $return = []; @@ -226,7 +226,8 @@ class EntityTypeInfo { * * @return \Generator * A generator, yielding a 2 element associative array: - * - entity: The machine name of an entity, such as "node" or "block_content". + * - entity: The machine name of an entity type, such as "node" or + * "block_content". * - bundle: The machine name of a bundle, such as "page" or "article". */ protected function getModeratedBundles() { @@ -255,7 +256,6 @@ class EntityTypeInfo { * New fields added by moderation state. */ public function entityBaseFieldInfo(EntityTypeInterface $entity_type) { - if (!$this->moderationInfo->isModeratableEntityType($entity_type)) { return []; } diff --git a/src/Event/ContentModerationEvents.php b/src/Event/ContentModerationEvents.php index 31484bc..b722643 100644 --- a/src/Event/ContentModerationEvents.php +++ b/src/Event/ContentModerationEvents.php @@ -2,6 +2,11 @@ namespace Drupal\content_moderation\Event; +/** + * Defines events for content moderation. + * + * @see \Drupal\content_moderation\Event\ContentModerationTransitionEvent + */ final class ContentModerationEvents { /** diff --git a/src/Event/ContentModerationTransitionEvent.php b/src/Event/ContentModerationTransitionEvent.php index ed00955..e65b6e1 100644 --- a/src/Event/ContentModerationTransitionEvent.php +++ b/src/Event/ContentModerationTransitionEvent.php @@ -6,9 +6,9 @@ use Drupal\Core\Entity\ContentEntityInterface; use Symfony\Component\EventDispatcher\Event; /** - * Content Moderation Transition Event + * Defines the content moderation transition event. * - * @see \Drupal\content_moderation\ModerationStateEvents + * @see \Drupal\content_moderation\Event\ContentModerationEvents */ class ContentModerationTransitionEvent extends Event { diff --git a/src/Form/BundleModerationConfigurationForm.php b/src/Form/BundleModerationConfigurationForm.php index f024942..58d206a 100644 --- a/src/Form/BundleModerationConfigurationForm.php +++ b/src/Form/BundleModerationConfigurationForm.php @@ -172,7 +172,6 @@ class BundleModerationConfigurationForm extends EntityForm { * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { - // If moderation is enabled, revisions MUST be enabled as well. // Otherwise we can't have forward revisions. if ($form_state->getValue('enable_moderation_state')) { diff --git a/src/Form/EntityModerationForm.php b/src/Form/EntityModerationForm.php index 347503c..ee227f9 100644 --- a/src/Form/EntityModerationForm.php +++ b/src/Form/EntityModerationForm.php @@ -35,7 +35,7 @@ class EntityModerationForm extends FormBase { } /** - * @inheritDoc + * {@inheritDoc} */ public static function create(ContainerInterface $container) { return new static( @@ -46,14 +46,14 @@ class EntityModerationForm extends FormBase { } /** - * @inheritDoc + * {@inheritDoc} */ public function getFormId() { return 'content_moderation_entity_moderation_form'; } /** - * @inheritDoc + * {@inheritDoc} */ public function buildForm(array $form, FormStateInterface $form_state, ContentEntityInterface $entity = NULL) { /** @var \Drupal\content_moderation\Entity\ModerationState $current_state */ @@ -110,7 +110,7 @@ class EntityModerationForm extends FormBase { } /** - * @inheritDoc + * {@inheritDoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { /** @var ContentEntityInterface $entity */ diff --git a/src/ModerationInformationInterface.php b/src/ModerationInformationInterface.php index afecbc3..2d54ebb 100644 --- a/src/ModerationInformationInterface.php +++ b/src/ModerationInformationInterface.php @@ -21,6 +21,7 @@ interface ModerationInformationInterface { * The bundle ID. * * @return \Drupal\Core\Config\Entity\ConfigEntityInterface|null + * The bundle entity. */ public function loadBundleEntity($bundle_entity_type_id, $bundle_id); @@ -173,8 +174,8 @@ interface ModerationInformationInterface { /** * Determines if an entity is a latest revision. * - * @param \Drupal\Core\Entity\EntityInterface $entity - * A revisionable Content entity. + * @param \Drupal\Core\Entity\ContentEntityInterface $entity + * A revisionable content entity. * * @return bool * TRUE if the specified object is the latest revision of its entity, diff --git a/src/ModerationStateTransitionListBuilder.php b/src/ModerationStateTransitionListBuilder.php index 8cade6f..72f6b38 100644 --- a/src/ModerationStateTransitionListBuilder.php +++ b/src/ModerationStateTransitionListBuilder.php @@ -21,7 +21,7 @@ class ModerationStateTransitionListBuilder extends DraggableListBuilder { protected $stateStorage; /** - * @inheritDoc + * {@inheritDoc} */ public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) { return new static( diff --git a/src/Permissions.php b/src/Permissions.php index 90f509c..f23ccc7 100644 --- a/src/Permissions.php +++ b/src/Permissions.php @@ -2,7 +2,6 @@ namespace Drupal\content_moderation; -use Drupal\Core\Routing\UrlGeneratorTrait; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\content_moderation\Entity\ModerationState; use Drupal\content_moderation\Entity\ModerationStateTransition; @@ -13,7 +12,6 @@ use Drupal\content_moderation\Entity\ModerationStateTransition; class Permissions { use StringTranslationTrait; - use UrlGeneratorTrait; /** * Returns an array of transition permissions. diff --git a/src/Plugin/Validation/Constraint/ModerationState.php b/src/Plugin/Validation/Constraint/ModerationStateConstraint.php similarity index 78% rename from src/Plugin/Validation/Constraint/ModerationState.php rename to src/Plugin/Validation/Constraint/ModerationStateConstraint.php index 62c0454..c2c373f 100644 --- a/src/Plugin/Validation/Constraint/ModerationState.php +++ b/src/Plugin/Validation/Constraint/ModerationStateConstraint.php @@ -5,8 +5,6 @@ namespace Drupal\content_moderation\Plugin\Validation\Constraint; use Symfony\Component\Validator\Constraint; /** - * Dynamic Entity Reference valid reference constraint. - * * Verifies that nodes have a valid moderation state. * * @Constraint( @@ -14,7 +12,7 @@ use Symfony\Component\Validator\Constraint; * label = @Translation("Valid moderation state", context = "Validation") * ) */ -class ModerationState extends Constraint { +class ModerationStateConstraint extends Constraint { public $message = 'Invalid state transition from %from to %to'; diff --git a/src/Plugin/Validation/Constraint/ModerationStateValidator.php b/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php similarity index 94% rename from src/Plugin/Validation/Constraint/ModerationStateValidator.php rename to src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php index 0d1b29e..044546b 100644 --- a/src/Plugin/Validation/Constraint/ModerationStateValidator.php +++ b/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php @@ -12,7 +12,10 @@ use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; -class ModerationStateValidator extends ConstraintValidator implements ContainerInjectionInterface { +/** + * Checks if a moderation state transition is valid. + */ +class ModerationStateConstraintValidator extends ConstraintValidator implements ContainerInjectionInterface { /** * The state transition validation. @@ -22,6 +25,8 @@ class ModerationStateValidator extends ConstraintValidator implements ContainerI protected $validation; /** + * The entity type manager. + * * @var \Drupal\Core\Entity\EntityTypeManagerInterface */ private $entityTypeManager; @@ -34,7 +39,7 @@ class ModerationStateValidator extends ConstraintValidator implements ContainerI protected $moderationInformation; /** - * Creates a new ModerationStateValidator instance. + * Creates a new ModerationStateConstraintValidator instance. * * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager * The entity type manager. diff --git a/src/RevisionTracker.php b/src/RevisionTracker.php index 010128c..e77c135 100644 --- a/src/RevisionTracker.php +++ b/src/RevisionTracker.php @@ -1,9 +1,7 @@ getThirdPartySetting('content_moderation', 'allowed_moderation_states', []); - /** @var \Drupal\content_moderation\Entity\ModerationState $state */ - $state = $entity->moderation_state->entity; - $current_state_id = $state->id(); + /** @var \Drupal\content_moderation\Entity\ModerationState $current_state */ + $current_state = $entity->moderation_state->entity; $all_transitions = $this->getPossibleTransitions(); - $destinations = $all_transitions[$current_state_id]; + $destination_ids = $all_transitions[$current_state->id()]; - $destinations = array_intersect($states_for_bundle, $destinations); + $destination_ids = array_intersect($states_for_bundle, $destination_ids); + $destinations = $this->entityTypeManager->getStorage('moderation_state')->loadMultiple($destination_ids); - $permitted_destinations = array_filter($destinations, function($state_name) use ($current_state_id, $user) { - return $this->userMayTransition($current_state_id, $state_name, $user); + $permitted_destination_ids = array_filter($destinations, function($destination_state) use ($current_state, $user) { + return $this->userMayTransition($current_state, $destination_state, $user); }); - return $this->entityTypeManager->getStorage('moderation_state')->loadMultiple($permitted_destinations); + return $this->entityTypeManager->getStorage('moderation_state')->loadMultiple($permitted_destination_ids); } /** diff --git a/tests/src/Kernel/EntityStateChangeValidationTest.php b/tests/src/Kernel/EntityStateChangeValidationTest.php index f0cd6b5..8dca3b5 100644 --- a/tests/src/Kernel/EntityStateChangeValidationTest.php +++ b/tests/src/Kernel/EntityStateChangeValidationTest.php @@ -8,7 +8,7 @@ use Drupal\node\Entity\Node; use Drupal\node\Entity\NodeType; /** - * @coversDefaultClass \Drupal\content_moderation\Plugin\Validation\Constraint\ModerationStateValidator + * @coversDefaultClass \Drupal\content_moderation\Plugin\Validation\Constraint\ModerationStateConstraintValidator * @group content_moderation */ class EntityStateChangeValidationTest extends KernelTestBase { diff --git a/tests/src/Unit/StateTransitionValidationTest.php b/tests/src/Unit/StateTransitionValidationTest.php index 25095ef..d641ed8 100644 --- a/tests/src/Unit/StateTransitionValidationTest.php +++ b/tests/src/Unit/StateTransitionValidationTest.php @@ -276,7 +276,7 @@ class StateTransitionValidationTest extends \PHPUnit_Framework_TestCase { */ class Validator extends StateTransitionValidation { /** - * @inheritDoc + * {@inheritDoc} */ protected function getTransitionFromStates(ModerationStateInterface $from, ModerationStateInterface $to) { if ($from->id() === 'draft' && $to->id() === 'draft') {