static function start($task_callback, $context = array()) { $tasks = task::get_definitions(); $task = task::create($tasks[$task_callback], array()); $task->log(t("Task %task_name started (task id %task_id)", array("task_name" => $task->name, "task_id" => $task->id))); return $task; }
/** * Start a new task * @param string $task_callback */ public function start($task_callback) { access::verify_csrf(); $tasks = task::get_definitions(); $task = task::create($tasks[$task_callback], array()); $view = new View("admin_maintenance_task.html"); $view->task = $task; log::info("tasks", t("Task %task_name started (task id %task_id)", array("task_name" => $task->name, "task_id" => $task->id)), html::anchor(url::site("admin/maintenance"), t("maintenance"))); print $view; }
/** * Show a list of all available, running and finished tasks. */ public function index() { $query = db::build()->update("tasks")->set("state", "stalled")->where("done", "=", 0)->where("state", "<>", "stalled")->where(new Database_Expression("UNIX_TIMESTAMP(NOW()) - `updated` > 15"))->execute(); $stalled_count = $query->count(); if ($stalled_count) { log::warning("tasks", t2("One task is stalled", "%count tasks are stalled", $stalled_count), t('<a href="%url">view</a>', array("url" => html::mark_clean(url::site("admin/maintenance"))))); } $view = new Admin_View("admin.html"); $view->page_title = t("Maintenance tasks"); $view->content = new View("admin_maintenance.html"); $view->content->task_definitions = task::get_definitions(); $view->content->running_tasks = ORM::factory("task")->where("done", "=", 0)->order_by("updated", "DESC")->find_all(); $view->content->finished_tasks = ORM::factory("task")->where("done", "=", 1)->order_by("updated", "DESC")->find_all(); print $view; }