Permalink
Browse files

#1982 - Add placeholder for albums with no album cover.

- Added missing_album_cover.jpg placeholder image.
- Modified the graphics helper to use it.  Calling graphics::generate will copy it.
- Modified item::remove_album_cover and gallery_event::item_created to run graphics::generate.
- Added unit test to Graphics_Helper_Test.
  • Loading branch information...
1 parent e17c393 commit f83ed5f8716663a45c9d8e8118bbcf0e2849c3fb @shadlaws shadlaws committed Jan 31, 2013
@@ -86,17 +86,17 @@ static function group_deleted($group) {
static function item_created($item) {
access::add_item($item);
- if ($item->is_photo() || $item->is_movie()) {
- // Build our thumbnail/resizes.
- try {
- graphics::generate($item);
- } catch (Exception $e) {
- log::error("graphics", t("Couldn't create a thumbnail or resize for %item_title",
- array("item_title" => $item->title)),
- html::anchor($item->abs_url(), t("details")));
- Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
- }
+ // Build our thumbnail/resizes.
+ try {
+ graphics::generate($item);
+ } catch (Exception $e) {
+ log::error("graphics", t("Couldn't create a thumbnail or resize for %item_title",
+ array("item_title" => $item->title)),
+ html::anchor($item->abs_url(), t("details")));
+ Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
+ }
+ if ($item->is_photo() || $item->is_movie()) {
// If the parent has no cover item, make this it.
$parent = $item->parent();
if (access::can("edit", $parent) && $parent->album_cover_item_id == null) {
@@ -152,6 +152,7 @@ static function generate($item) {
} catch (Exception $e) {
// Didn't work, likely because of MISSING_FFMPEG - use placeholder
graphics::_replace_image_with_placeholder($item, $target);
+ break;
}
}
$working_file = $output_file;
@@ -167,7 +168,7 @@ static function generate($item) {
case "album":
if (!$cover = $item->album_cover()) {
- // This album has no cover; there's nothing to generate. Because of an old bug, it's
+ // This album has no cover; copy its placeholder image. Because of an old bug, it's
// possible that there's an album cover item id that points to an invalid item. In that
// case, just null out the album cover item id. It's not optimal to do that at this low
// level, but it's not trivial to find these cases quickly in an upgrade script and if we
@@ -179,7 +180,8 @@ static function generate($item) {
$item->album_cover_item_id = null;
$item->save();
}
- return;
+ graphics::_replace_image_with_placeholder($item, $target);
+ break;
}
if ($cover->thumb_dirty) {
graphics::generate($cover);
@@ -238,7 +240,9 @@ private static function _update_item_dimensions($item) {
}
private static function _replace_image_with_placeholder($item, $target) {
- if ($item->is_movie() || ($item->is_album() && $item->album_cover()->is_movie())) {
+ if ($item->is_album() && !$item->album_cover_item_id) {
+ $input_path = MODPATH . "gallery/images/missing_album_cover.jpg";
+ } else if ($item->is_movie() || ($item->is_album() && $item->album_cover()->is_movie())) {
$input_path = MODPATH . "gallery/images/missing_movie.jpg";
} else {
$input_path = MODPATH . "gallery/images/missing_photo.jpg";
@@ -113,6 +113,7 @@ static function remove_album_cover($album) {
model_cache::clear();
$album->album_cover_item_id = null;
$album->save();
+ graphics::generate($album);
}
/**
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -77,6 +77,17 @@ public function generate_album_cover_from_png_test() {
$this->assert_equal(0, $album->thumb_dirty);
}
+ public function generate_album_cover_for_empty_album_test() {
+ $album = test::random_album();
+ // Check that the album cover is the missing image placeholder
+ $this->assert_same(file_get_contents(MODPATH . "gallery/images/missing_album_cover.jpg"),
+ file_get_contents($album->thumb_path()));
+ // Check that the items table got updated with new metadata
+ $this->assert_equal(array(200, 200), array($album->thumb_width, $album->thumb_height));
+ // Check that the image is *not* marked as dirty
+ $this->assert_equal(0, $album->thumb_dirty);
+ }
+
public function generate_bad_photo_test() {
$photo = test::random_photo();
// At this point, the photo is valid and has a valid resize and thumb. Make it garble.

0 comments on commit f83ed5f

Please sign in to comment.