summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/controllers/admin_maintenance.php24
-rw-r--r--core/helpers/core_task.php33
-rw-r--r--core/libraries/Task.php51
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;
+ }
+
+}