public function isAvailable()
 {
     if (!$this->isStarted()) {
         return parent::isAvailable();
     }
     if ($this->order_type == Ezer_IntForeach::TYPE_PARALLEL) {
         foreach ($this->step_instances as $index => $step_instance) {
             if (!$step_instance->isDone()) {
                 return false;
             }
         }
         $this->done();
     }
     if ($this->order_type == Ezer_IntForeach::TYPE_SERIAL) {
         $step_instance = $this->step_instances[$this->current_index];
         if (!$step_instance->isDone()) {
             return false;
         }
         $this->current_index++;
         if ($this->current_index >= count($this->step_instances)) {
             $this->done();
         } else {
             $step_instance = $this->step_instances[$this->current_index];
             $step_instance->start();
         }
     }
     return false;
 }
 public function isAvailable()
 {
     if (!parent::isStarted()) {
         return parent::isAvailable();
     }
     if (!count($this->step_instances)) {
         $this->done();
         return false;
     }
     $step_instance = $this->step_instances[0];
     if ($step_instance->isDone()) {
         $this->done();
     }
     return false;
 }
 public function isAvailable()
 {
     if (!parent::isStarted()) {
         return parent::isAvailable();
     }
     $found_undone = false;
     foreach ($this->step_instances as $index => &$step_instance) {
         if (!$step_instance->isDone()) {
             $found_undone = true;
         } else {
             $this->handleDoneStep($step_instance);
         }
     }
     if (!$found_undone) {
         $this->done();
     }
     return false;
 }
 public function isAvailable()
 {
     if (!parent::isStarted()) {
         return parent::isAvailable();
     }
     foreach ($this->step_instances as $index => $step_instance) {
         if (!$step_instance->isDone()) {
             break;
         }
         //			echo get_class($step_instance) . "(" . $step_instance->getName() . ") is done\n";
         $index++;
         if (count($this->step_instances) <= $index) {
             $this->done();
         } else {
             $next_step =& $this->step_instances[$index];
             $next_step->flow($step_instance->getStepId());
         }
     }
     return false;
 }
 public function __construct($id, array $variables, Ezer_ScopeInstance &$scope_instance, Ezer_Scope $scope = null)
 {
     parent::__construct($id, $scope_instance, $scope);
     $this->variables = $variables;
     $this->scope = $scope;
 }
 public function isAvailable()
 {
     if (!parent::isStarted()) {
         return parent::isAvailable();
     }
     if ($this->condition_results) {
         $step_instance = $this->step_instances[0];
         if ($step_instance->isDone()) {
             $this->done();
         }
         return false;
     }
     if ($this->elseif_instance && $this->elseif_instance->condition_results) {
         if ($this->elseif_instance->isDone()) {
             $this->done();
         }
         return false;
     }
     if ($this->else_instance) {
         if ($this->else_instance->isDone()) {
             $this->done();
         }
     }
     return false;
 }
 private function tryClose()
 {
     if (parent::isDone()) {
         return;
     }
     if ($this->condition_results) {
         $step_instance = reset($this->step_instances);
         if (!$step_instance || $step_instance->isDone()) {
             $this->done();
         }
         return;
     }
     if ($this->elseif_instance && $this->elseif_instance->condition_results) {
         if (!$this->elseif_instance || $this->elseif_instance->isDone()) {
             $this->done();
         }
         return;
     }
     if ($this->else_instance) {
         if (!$this->else_instance || $this->else_instance->isDone()) {
             $this->done();
         }
         return;
     }
 }
 public function __construct(array $variables, Ezer_ScopeInstance &$scope_instance, Ezer_Scope $scope)
 {
     parent::__construct($this, $scope);
     $this->variables = $variables;
 }
 public function __construct($id, Ezer_StepContainerInstance &$scope_instance, Ezer_Step $step = null)
 {
     $this->id = $id;
     $this->attempts = 0;
     $this->scope_instance =& $scope_instance;
     if ($step) {
         $this->max_retries = $step->getMaxRetries();
         $this->step = $step;
     }
     if ($this !== $scope_instance) {
         //			echo "Adding $id [" . get_class($this) . "] to " . $scope_instance->getId() . "[" . get_class($scope_instance) . "]\n";
         $this->scope_instance->step_instances[] =& $this;
         $parent_scope_instance = $scope_instance->getScopeInstance();
         if ($parent_scope_instance) {
             //				echo "Adding $id [" . get_class($this) . "] to " . $parent_scope_instance->getId() . "[" . get_class($parent_scope_instance) . "]\n";
             $parent_scope_instance->step_instances[] =& $this;
         }
     }
     $this->setStatus(Ezer_StepInstanceStatus::LOADED);
 }