From b2e37f20c73f7f29bafca9bcf95c1e59902a50ee Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Fri, 16 Jan 2009 04:35:35 +0000 Subject: Move graphics::rebuild_dirty_images to core_task::rebuild_dirty_images --- core/helpers/core_task.php | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'core/helpers/core_task.php') diff --git a/core/helpers/core_task.php b/core/helpers/core_task.php index 2f37557d..a56c432f 100644 --- a/core/helpers/core_task.php +++ b/core/helpers/core_task.php @@ -21,7 +21,7 @@ class core_task_Core { static function available() { $dirty_count = graphics::find_dirty_images_query()->count(); return array(Task::factory() - ->callback("graphics::rebuild_dirty_images") + ->callback("core_task::rebuild_dirty_images") ->name(t("Rebuild Images")) ->description($dirty_count ? t2("You have one image which is out of date", @@ -30,4 +30,47 @@ class core_task_Core { : t("All your images are up to date")) ->severity($dirty_count ? log::WARNING : log::SUCCESS)); } + + /** + * Task that rebuilds all dirty images. + * @param Task_Model the task + */ + static function rebuild_dirty_images($task) { + $result = graphics::find_dirty_images_query(); + $remaining = $result->count(); + $completed = $task->get("completed", 0); + + $i = 0; + foreach ($result as $row) { + $item = ORM::factory("item", $row->id); + if ($item->loaded) { + graphics::generate($item); + } + + $completed++; + $remaining--; + + if (++$i == 2) { + break; + } + } + + $task->status = t2("Updated: 1 image. Total: %total_count.", + "Updated: %count images. Total: %total_count.", + $completed, + array("total_count" => ($remaining + $completed))); + + if ($completed + $remaining > 0) { + $task->percent_complete = (int)(100 * $completed / ($completed + $remaining)); + } else { + $task->percent_complete = 100; + } + + $task->set("completed", $completed); + if ($remaining == 0) { + $task->done = true; + $task->state = "success"; + site_status::clear("graphics_dirty"); + } + } } \ No newline at end of file -- cgit v1.2.3