private function _run_steps($task_id, $task_settings)
 {
     $task_id = (int) $task_id;
     if (!$task_id) {
         return false;
     }
     $this->_update_task_state($task_id, array('status' => 2));
     //change status of task to "active" while it run
     //get steps
     $steps = $this->getScheduledTaskSteps($task_id);
     $task_result = 0;
     $steps_count = sizeof($steps);
     // total count of steps to calculate percentage (for future)
     $k = 0;
     foreach ($steps as $step) {
         $this->toLog('Tried to run step #' . $step['step_id'] . ' of task #' . $task_id);
         //change status to active
         $this->_update_step_state($step['step_id'], array('result' => 1, 'last_time_run' => date('Y-m-d H:i:s'), 'status' => 2));
         //change status of step to active while it run
         try {
             $dd = new ADispatcher($step['controller'], $step_settings['params']);
             $response = $dd->dispatchGetOutput($step['controller']);
         } catch (AException $e) {
         }
         $result = $response['result'] == true ? 0 : 1;
         $this->_update_step_state($step['step_id'], array('result' => $result, 'last_time_run' => date('Y-m-d H:i:s'), 'status' => 1));
         if (!$result) {
             $this->log->write('Sheduled step #' . $step['step_id'] . ' of task #' . $task_id . ' failed during process');
             //interrupt task if need
             if ($task_settings['interrupt_on_step_fault'] === true) {
                 $this->_update_task_state($task_id, array('result' => 1, 'last_time_run' => date('Y-m-d H:i:s'), 'status' => 1));
                 return false;
             }
             $task_result = 1;
             $this->toLog('Step #' . $step['step_id'] . ' of task #' . $task_id . ' failed.');
         }
         $this->toLog('Step #' . $step['step_id'] . ' of task #' . $task_id . ' finished.');
         $this->_update_task_state($task_id, array('progress' => ceil($k * 100 / $steps_count)));
     }
     $this->_update_task_state($task_id, array('result' => $task_result, 'last_time_run' => date('Y-m-d H:i:s'), 'status' => 1));
     return true;
 }