示例#1
0
 /**
  * {@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;
 }