public function Workflow::getTransitions in Workflow 7.2
@inheritdoc
Overrides WorkflowInterface::getTransitions
5 calls to Workflow::getTransitions()
- Workflow::getTransitionsBySid in includes/
Entity/ Workflow.php - Workflow::getTransitionsBySidTargetSid in includes/
Entity/ Workflow.php - Get a specific transition. Therefore, use $roles = 'ALL'.
- Workflow::getTransitionsByTargetSid in includes/
Entity/ Workflow.php - Workflow::getTransitionsByTid in includes/
Entity/ Workflow.php - Workflow::rebuildInternals in includes/
Entity/ Workflow.php - Rebuild internals that get saved separately.
File
- includes/
Entity/ Workflow.php, line 556 - Contains workflow\includes\Entity\Workflow. Contains workflow\includes\Entity\WorkflowController.
Class
Code
public function getTransitions($tids = FALSE, array $conditions = array(), $reset = FALSE) {
$config_transitions = array();
// Get valid + creation states.
$states = $this
->getStates('CREATION');
// Get filters on 'from' states, 'to' states, roles.
$sid = isset($conditions['sid']) ? $conditions['sid'] : FALSE;
$target_sid = isset($conditions['target_sid']) ? $conditions['target_sid'] : FALSE;
$roles = isset($conditions['roles']) ? $conditions['roles'] : 'ALL';
// Cache all transitions in the workflow.
// We may have 0 transitions....
if ($this->transitions === NULL) {
$this->transitions = array();
// Get all transitions. (Even from other workflows. :-( )
$config_transitions = entity_load('WorkflowConfigTransition', $tids, array(), $reset);
foreach ($config_transitions as &$config_transition) {
if (isset($states[$config_transition->sid])) {
$config_transition
->setWorkflow($this);
$this->transitions[$config_transition->tid] = $config_transition;
}
}
$this
->sortTransitions();
}
$config_transitions = array();
foreach ($this->transitions as &$config_transition) {
if (!isset($states[$config_transition->sid])) {
// Not a valid transition for this workflow.
}
elseif ($sid && $sid != $config_transition->sid) {
// Not the requested 'from' state.
}
elseif ($target_sid && $target_sid != $config_transition->target_sid) {
// Not the requested 'to' state.
}
elseif ($roles == 'ALL' || $config_transition
->isAllowed($roles)) {
// Transition is allowed, permitted. Add to list.
$config_transition
->setWorkflow($this);
$config_transitions[$config_transition->tid] = $config_transition;
}
else {
// Transition is otherwise not allowed.
}
}
return $config_transitions;
}