summaryrefslogtreecommitdiff
path: root/modules/gallery
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-09-24 20:06:14 -0700
committerTim Almdal <tnalmdal@shaw.ca>2009-09-24 20:06:14 -0700
commitcd240ebaada9ddff112a40a5f80201f23449337e (patch)
tree36fec0aeb290db26f0a401fa61947ad0783d7316 /modules/gallery
parent970158f4d9904d00319c3da421024c68777a855d (diff)
Refactored the rebuild_dirty_images handler to simplify the counting and end processing. It was getting all confused with trying to figure out the completed and remaining. Now on initiation it sets the total images that are dirty and then counts the completed until it equals the total, then exits. Fixes ticket #771
Diffstat (limited to 'modules/gallery')
-rw-r--r--modules/gallery/helpers/gallery_task.php21
1 files changed, 12 insertions, 9 deletions
diff --git a/modules/gallery/helpers/gallery_task.php b/modules/gallery/helpers/gallery_task.php
index 1b56ab97..3d0476a8 100644
--- a/modules/gallery/helpers/gallery_task.php
+++ b/modules/gallery/helpers/gallery_task.php
@@ -48,9 +48,13 @@ class gallery_task_Core {
$errors = array();
try {
$result = graphics::find_dirty_images_query();
+ $total_count = $task->get("total_count", -1);
+ if ($total_count < 0) {
+ $total_count = $result->count();
+ $task->set("total_count", $total_count);
+ }
$completed = $task->get("completed", 0);
$ignored = $task->get("ignored", array());
- $remaining = $result->count() - count($ignored);
$i = 0;
foreach ($result as $row) {
@@ -62,19 +66,18 @@ class gallery_task_Core {
if ($item->loaded) {
try {
graphics::generate($item);
- $ignored[$item->id] = 1;
+ $completed++;
+
$errors[] = t("Successfully rebuilt images for '%title'",
array("title" => html::purify($item->title)));
} catch (Exception $e) {
$errors[] = t("Unable to rebuild images for '%title'",
array("title" => html::purify($item->title)));
$errors[] = $e->__toString();
+ $ignored[$item->id] = 1;
}
}
- $completed++;
- $remaining--;
-
if (++$i == 2) {
break;
}
@@ -83,17 +86,17 @@ class gallery_task_Core {
$task->status = t2("Updated: 1 image. Total: %total_count.",
"Updated: %count images. Total: %total_count.",
$completed,
- array("total_count" => ($remaining + $completed)));
+ array("total_count" => $total_count));
- if ($completed + $remaining > 0) {
- $task->percent_complete = (int)(100 * $completed / ($completed + $remaining));
+ if ($completed < $total_count) {
+ $task->percent_complete = (int)(100 * ($completed + count($ignored)) / $total_count);
} else {
$task->percent_complete = 100;
}
$task->set("completed", $completed);
$task->set("ignored", $ignored);
- if ($remaining == 0) {
+ if ($task->percent_complete == 100) {
$task->done = true;
$task->state = "success";
site_status::clear("graphics_dirty");