function hook_workflow_permitted_state_transitions_alter in Workflow 8
Same name and namespace in other branches
- 7.2 workflow.api.php \hook_workflow_permitted_state_transitions_alter()
Implements hook_workflow_permitted_state_transitions_alter().
This hook allows you to add custom filtering of allowed target states, add new custom states, change labels, etc. It is invoked in WorkflowState::getOptions().
Parameters
array $transitions: An array of allowed transitions from the current state (as provided in $context). They are already filtered by the settings in Admin UI.
array $context: An array of relevant objects. Currently:
$context = array(
'user' => $user,
'workflow' => $workflow,
'state' => $current_state,
'force' => $force,
);
1 call to hook_workflow_permitted_state_transitions_alter()
- workflow_devel_workflow_permitted_state_transitions_alter in modules/
workflow_devel/ workflow_devel.module - @inheritdoc
1 function implements hook_workflow_permitted_state_transitions_alter()
Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.
- workflow_devel_workflow_permitted_state_transitions_alter in modules/
workflow_devel/ workflow_devel.module - @inheritdoc
1 invocation of hook_workflow_permitted_state_transitions_alter()
- WorkflowState::getTransitions in src/
Entity/ WorkflowState.php - Returns the allowed transitions for the current state.
File
- ./
workflow.api.php, line 217 - Hooks provided by the workflow module.
Code
function hook_workflow_permitted_state_transitions_alter(array &$transitions, array $context) {
// workflow_debug(__FILE__, __FUNCTION__, __LINE__, '', '');
// User may have the custom role AUTHOR.
$user = $context['user'];
// The following could be fetched from each transition.
$workflow = $context['workflow'];
$current_state = $context['state'];
// The following could be fetched from the $user and $transition objects.
$force = $context['force'];
// Implement here own permission logic.
foreach ($transitions as $key => $transition) {
/** @var \Drupal\workflow\Entity\WorkflowTransitionInterface $transition*/
if (!$transition
->isAllowed($user, $force)) {
// unset($transitions[$key]);
}
}
// This example creates a new custom target state.
$values = [
// Fixed values for new transition.
'wid' => $context['workflow']
->id(),
'from_sid' => $context['state']
->id(),
// Custom values for new transition.
// The ID must be an integer, due to db-table constraints.
'to_sid' => '998',
'label' => 'go to my new fantasy state',
];
$new_transition = WorkflowConfigTransition::create($values);
// $transitions[] = $new_transition;
}