public function _action_tasks_fail(FW_Ext_Backups_Task_Collection $collection) { $error = __('Error', 'fw'); foreach ($collection->get_tasks() as $task) { if ($task->result_is_fail()) { if (is_wp_error($task->get_result())) { $error = $task->get_result()->get_error_message(); } break; } } $this->set_active_demo(array('result' => $error)); }
/** * @param FW_Ext_Backups_Task_Collection|null $collection * * @return FW_Ext_Backups_Task_Collection|null */ private function check_and_fix_tasks($collection) { if ($collection instanceof FW_Ext_Backups_Task_Collection) { } else { return null; } $finished = true; foreach ($collection->get_tasks() as $task) { if (!$task->get_last_execution_start_time()) { // check only started tasks $finished = false; break; } // Check for problems and maybe finish (set failed) if (!$task->result_is_finished()) { if (!$this->_get_task_type($task->get_type(), self::get_access_key())) { $task->set_result(new WP_Error('type_not_registered', __('Task type not registered', 'fw'))); } if ($task->get_last_execution_end_time()) { // step finished and should continue if ($task->get_last_execution_end_time() + self::backups()->get_timeout() + 5 < time()) { $task->set_result(new WP_Error('execution_stopped', __('Execution stopped (next step did not started)', 'fw'))); } } else { if (($task_type = $this->_get_task_type($task->get_type(), self::get_access_key())) && ($custom_timeout = $task_type->get_custom_timeout($task->get_args(), is_array($task->get_result()) ? $task->get_result() : array()))) { $timeout = abs($custom_timeout); } else { $timeout = self::backups()->get_timeout(); } if ($task->get_last_execution_start_time() + $timeout + 1 < time()) { $task->set_result(new WP_Error('timeout', __('Timed out', 'fw'))); } } if ($task->result_is_fail()) { $task->set_last_execution_end_time(microtime(true)); $this->set_active_task_collection($collection); $this->do_task_fail_action($task); } } if ($task->result_is_finished()) { if ($task->result_is_fail()) { do_action('fw:ext:backups:tasks:fail:id:' . $collection->get_id(), $collection); do_action('fw:ext:backups:tasks:fail', $collection); break; } } else { // Stop on first executing (not finished) task $finished = false; break; } } if ($finished) { $this->set_active_task_collection(null); if (isset($task) && $task->result_is_fail()) { // if last task is fail, then the collection was failed and foreach stopped } else { do_action('fw:ext:backups:tasks:success:id:' . $collection->get_id(), $collection); do_action('fw:ext:backups:tasks:success', $collection); } do_action('fw:ext:backups:tasks:finish:id:' . $collection->get_id(), $collection); do_action('fw:ext:backups:tasks:finish', $collection); return null; } return $collection; }