diff options
-rw-r--r-- | core/controllers/admin_maintenance.php | 24 | ||||
-rw-r--r-- | core/helpers/core_task.php | 33 | ||||
-rw-r--r-- | core/libraries/Task.php | 51 |
3 files changed, 95 insertions, 13 deletions
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 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class core_task_Core { + static function available() { + $dirty_count = graphics::find_dirty_images_query()->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 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ + +class Task_Core { + public $callback; + public $description; + public $name; + public $severity; + + static function factory($id) { + return new Task(); + } + + function callback($callback) { + $this->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; + } + +} |