diff options
author | Bharat Mediratta <bharat@menalto.com> | 2009-06-04 23:20:54 -0700 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2009-06-04 23:20:54 -0700 |
commit | c7f49fd1ec3ed7d2261b46e35d21d59a3af11f49 (patch) | |
tree | df170d2954cd2e9ac5a74a658e7bd292056c6147 /modules | |
parent | 4f0a3fefa035ec351bc881093f49f9bc81941f3d (diff) |
Skip over busted images when rebuilding. Change graphics::generate()
to return true/false on whether or not it could rebuild the image
properly, then track the broke images in the task and ignore them.
Fixes ticket #344.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/gallery/helpers/gallery_task.php | 13 | ||||
-rw-r--r-- | modules/gallery/helpers/graphics.php | 11 |
2 files changed, 20 insertions, 4 deletions
diff --git a/modules/gallery/helpers/gallery_task.php b/modules/gallery/helpers/gallery_task.php index 6046bfc4..2493c49e 100644 --- a/modules/gallery/helpers/gallery_task.php +++ b/modules/gallery/helpers/gallery_task.php @@ -46,14 +46,22 @@ class gallery_task_Core { */ static function rebuild_dirty_images($task) { $result = graphics::find_dirty_images_query(); - $remaining = $result->count(); $completed = $task->get("completed", 0); + $ignored = $task->get("ignored", array()); + $remaining = $result->count() - count($ignored); $i = 0; foreach ($result as $row) { + if (array_key_exists($row->id, $ignored)) { + continue; + } + $item = ORM::factory("item", $row->id); if ($item->loaded) { - graphics::generate($item); + $success = graphics::generate($item); + if (!$success) { + $ignored[$item->id] = 1; + } } $completed++; @@ -76,6 +84,7 @@ class gallery_task_Core { } $task->set("completed", $completed); + $task->set("ignored", $ignored); if ($remaining == 0) { $task->done = true; $task->state = "success"; diff --git a/modules/gallery/helpers/graphics.php b/modules/gallery/helpers/graphics.php index 605b9ff8..175ba947 100644 --- a/modules/gallery/helpers/graphics.php +++ b/modules/gallery/helpers/graphics.php @@ -102,11 +102,12 @@ class graphics_Core { /** * Rebuild the thumb and resize for the given item. * @param Item_Model $item + * @return true on successful generation */ static function generate($item) { if ($item->is_album()) { if (!$cover = $item->album_cover()) { - return; + return false; } $input_file = $cover->file_path(); $input_item = $cover; @@ -123,7 +124,10 @@ class graphics_Core { } if (empty($ops)) { - return; + $item->thumb_dirty = 0; + $item->resize_dirty = 0; + $item->save(); + return true; } try { @@ -167,7 +171,10 @@ class graphics_Core { // @todo we should handle this better. Kohana::log("error", "Caught exception rebuilding image: {$item->title}\n" . $e->getTraceAsString()); + return false; } + + return true; } /** |