From 2352dd162aacb6222aff7523aef4169223fe37a0 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Fri, 16 Jan 2009 04:31:41 +0000 Subject: Break task definitions out into the _task helper and create a Task library class as a data structure to hold task definitions. --- core/controllers/admin_maintenance.php | 24 ++++++++-------- core/helpers/core_task.php | 33 ++++++++++++++++++++++ core/libraries/Task.php | 51 ++++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+), 13 deletions(-) create mode 100644 core/helpers/core_task.php create mode 100644 core/libraries/Task.php (limited to 'core') diff --git a/core/controllers/admin_maintenance.php b/core/controllers/admin_maintenance.php index 6b344243..18eb644c 100644 --- a/core/controllers/admin_maintenance.php +++ b/core/controllers/admin_maintenance.php @@ -23,19 +23,17 @@ class Admin_Maintenance_Controller extends Admin_Controller { * @todo move task definition out into the modules */ private function _get_task_definitions() { - $dirty_count = graphics::find_dirty_images_query()->count(); - return array( - "graphics::rebuild_dirty_images" => new ArrayObject( - array("name" => t("Rebuild Images"), - "callback" => "graphics::rebuild_dirty_images", - "description" => ( - $dirty_count ? - t2("You have one image which is out of date", - "You have %count out-of-date images", - $dirty_count) - : t("All your images are up to date")), - "severity" => $dirty_count ? log::WARNING : log::SUCCESS), - ArrayObject::ARRAY_AS_PROPS)); + $tasks = array(); + foreach (module::installed() as $module_name => $module_info) { + $class_name = "{$module_name}_task"; + if (method_exists($class_name, "available")) { + foreach (call_user_func(array($class_name, "available")) as $task) { + $tasks[$task->callback] = $task; + } + } + } + + return $tasks; } /** diff --git a/core/helpers/core_task.php b/core/helpers/core_task.php new file mode 100644 index 00000000..2f37557d --- /dev/null +++ b/core/helpers/core_task.php @@ -0,0 +1,33 @@ +count(); + return array(Task::factory() + ->callback("graphics::rebuild_dirty_images") + ->name(t("Rebuild Images")) + ->description($dirty_count ? + t2("You have one image which is out of date", + "You have %count out-of-date images", + $dirty_count) + : t("All your images are up to date")) + ->severity($dirty_count ? log::WARNING : log::SUCCESS)); + } +} \ No newline at end of file diff --git a/core/libraries/Task.php b/core/libraries/Task.php new file mode 100644 index 00000000..8145c512 --- /dev/null +++ b/core/libraries/Task.php @@ -0,0 +1,51 @@ +callback = $callback; + return $this; + } + + function description($description) { + $this->description = $description; + return $this; + } + + function name($name) { + $this->name = $name; + return $this; + } + + function severity($severity) { + $this->severity = $severity; + return $this; + } + +} -- cgit v1.2.3