summaryrefslogtreecommitdiff
path: root/modules/gallery/models
diff options
context:
space:
mode:
authorshadlaws <shad@shadlaws.com>2013-01-30 01:07:36 +0100
committershadlaws <shad@shadlaws.com>2013-01-30 01:07:36 +0100
commitcf077425953a6a492dea97eaf1517e7d08c9648f (patch)
tree6754b984ff8ffad777050bfd8d1e3475189e4bbe /modules/gallery/models
parent861e8628f5d847cbf5bc3cc9f94254514e8296a8 (diff)
#1968 - Improve album cover generation/removal/etc.
- Added stanza to Item_Model::save that handles when cover id is null. - Added logic to graphics::generate to copy/convert album cover thumbs from their item thumbs to ensure they're always jpg, and eliminate the possibility that we copy/convert a dirty thumb. - Redirected other places in code where we want to do one of the above two things to use these two functions instead (gallery_event::item_updated_data_file, item::make_album_cover, item::remove_album_cover). - Improved validation in Item_Model so only albums can have covers and all covers must be non-albums. - Added unit tests to Graphics_Helper_Test.
Diffstat (limited to 'modules/gallery/models')
-rw-r--r--modules/gallery/models/item.php15
1 files changed, 13 insertions, 2 deletions
diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php
index 60318c26..f9edd3c6 100644
--- a/modules/gallery/models/item.php
+++ b/modules/gallery/models/item.php
@@ -420,6 +420,15 @@ class Item_Model_Core extends ORM_MPTT {
}
}
+ // If an album's cover has changed (or been removed), delete any existing album cover,
+ // reset the thumb metadata, and mark the thumb as dirty.
+ if (array_key_exists("album_cover_item_id", $this->changed) && $this->is_album()) {
+ @unlink($original->thumb_path());
+ $this->thumb_dirty = 1;
+ $this->thumb_height = 0;
+ $this->thumb_width = 0;
+ }
+
if (array_intersect($this->changed, array("parent_id", "name", "slug"))) {
$original->_build_relative_caches();
$this->relative_path_cache = null;
@@ -966,10 +975,12 @@ class Item_Model_Core extends ORM_MPTT {
return;
}
- if ($this->album_cover_item_id && db::build()
+ if ($this->album_cover_item_id && ($this->is_photo() || $this->is_movie() ||
+ db::build()
->from("items")
->where("id", "=", $this->album_cover_item_id)
- ->count_records() != 1) {
+ ->where("type", "<>", "album")
+ ->count_records() != 1)) {
$v->add_error("album_cover_item_id", "invalid_item");
}
}