From 74d4e7d50585db230cfe07464a1a4b662c04b409 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 28 Dec 2008 10:12:41 +0000 Subject: First round of a task framework. Tasks are job definitions stored in the database. They're started with admin/maintenance/start/[task_name] which sends down some JS/HTML which regularly pings the task at admin/maintenance/start/[task_id] until its done. The UI is still very rough. It works, though! --- core/controllers/admin_maintenance.php | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 core/controllers/admin_maintenance.php (limited to 'core/controllers/admin_maintenance.php') diff --git a/core/controllers/admin_maintenance.php b/core/controllers/admin_maintenance.php new file mode 100644 index 00000000..b695cfcb --- /dev/null +++ b/core/controllers/admin_maintenance.php @@ -0,0 +1,66 @@ + "rebuild_images", + "description" => _("Rebuild out of date thumbnails and resizes")), + ArrayObject::ARRAY_AS_PROPS)); + + $view->content = new View("admin_maintenance.html"); + $view->content->available_tasks = $available_tasks; + $view->content->running_tasks = ORM::factory("task")->find_all(); + print $view; + } + + public function start($task_name) { + $task = ORM::factory("task"); + $task->name = $task_name; + $task->percent_complete = 0; + $task->status = ""; + $task->context = serialize(array()); + $task->save(); + + $view = new View("admin_maintenance_task.html"); + $view->task = $task; + print $view; + } + + public function run($task_id) { + $task = ORM::factory("task", $task_id); + if (!$task->loaded) { + throw new Exception("@todo MISSING_TASK"); + } + + switch($task->name) { + case "rebuild_images": + graphics::rebuild_dirty_images($task); + } + + $task->save(); + + print json_encode( + array("status" => "success", + "task" => $task->as_array())); + } +} -- cgit v1.2.3