Example #1
0
 function testImpossibleCondition()
 {
     $transition = new Tiki_Transition('A', 'B');
     $transition->setStates(array('A', 'C', 'D', 'F'));
     $transition->addGuard('exactly', 4, array('C', 'D', 'E'));
     $this->assertEquals(array(array('class' => 'invalid', 'count' => 4, 'set' => array('C', 'D', 'E'))), $transition->explain());
 }
Example #2
0
 function testUnder()
 {
     $transition = new Tiki_Transition('A', 'B');
     $transition->setStates(array('A', 'C', 'D', 'F'));
     $transition->addGuard('atMost', 4, array('C', 'D', 'E', 'F', 'G'));
     $this->assertEquals(array(), $transition->explain());
 }
Example #3
0
 /**
  * @param $object
  * @param null $type
  * @return array
  */
 function getAvailableTransitions($object, $type = null)
 {
     $states = $this->getCurrentStates($object, $type);
     $transitions = $this->getTransitionsFromStates($states);
     $transitions = Perms::filter(array('type' => 'transition'), 'object', $transitions, array('object' => 'transitionId'), 'trigger_transition');
     foreach ($transitions as &$tr) {
         $object = new Tiki_Transition($tr['from'], $tr['to']);
         $object->setStates($states);
         foreach ($tr['guards'] as $guard) {
             call_user_func_array(array($object, 'addGuard'), $guard);
         }
         $tr['enabled'] = $object->isReady();
         $tr['explain'] = $object->explain();
     }
     return $transitions;
 }