/** * {@inheritdoc} */ public function getTransitions(array $ids = NULL, array $conditions = array()) { $config_transitions = array(); // Get filters on 'from' states, 'to' states, roles. $from_sid = isset($conditions['from_sid']) ? $conditions['from_sid'] : FALSE; $to_sid = isset($conditions['to_sid']) ? $conditions['to_sid'] : FALSE; // Get valid states + creation state. $states = $this->getStates('CREATION'); // Cache all transitions in the workflow. if (!$this->transitions) { $this->transitions = WorkflowConfigTransition::loadMultiple($ids); $this->sortTransitions(); } /* @var $config_transition WorkflowConfigTransition */ foreach ($this->transitions as &$config_transition) { if (!isset($states[$config_transition->getFromSid()])) { // Not a valid transition for this workflow. @todo: delete them. } elseif ($from_sid && $from_sid != $config_transition->getFromSid()) { // Not the requested 'from' state. } elseif ($to_sid && $to_sid != $config_transition->getToSid()) { // Not the requested 'to' state. } else { // Transition is allowed, permitted. Add to list. $config_transitions[$config_transition->id()] = $config_transition; } } return $config_transitions; }