summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/gallery/helpers/gallery_event.php9
-rw-r--r--modules/gallery/tests/Item_Helper_Test.php7
2 files changed, 14 insertions, 2 deletions
diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php
index 82f42d98..40ea50fa 100644
--- a/modules/gallery/helpers/gallery_event.php
+++ b/modules/gallery/helpers/gallery_event.php
@@ -98,6 +98,15 @@ class gallery_event_Core {
static function item_deleted($item) {
access::delete_item($item);
+ // Find any other albums that had the deleted item as the album cover and null it out.
+ // In some cases this may leave us with a missing album cover up in this item's parent
+ // hierarchy, but in most cases it'll work out fine.
+ foreach (ORM::factory("item")
+ ->where("album_cover_item_id", "=", $item->id)
+ ->find_all() as $parent) {
+ item::remove_album_cover($parent);
+ }
+
$parent = $item->parent();
if (!$parent->album_cover_item_id) {
// Assume we deleted the album cover and pick a new one. Choosing the first photo in the
diff --git a/modules/gallery/tests/Item_Helper_Test.php b/modules/gallery/tests/Item_Helper_Test.php
index 00229973..eb2458cb 100644
--- a/modules/gallery/tests/Item_Helper_Test.php
+++ b/modules/gallery/tests/Item_Helper_Test.php
@@ -111,15 +111,18 @@ class Item_Helper_Test extends Gallery_Unit_Test_Case {
$this->assert_not_same($rand, $photo2->slug);
}
- public function delete_cover_photo_picks_new_album_cover() {
- $album = test::random_album();
+ public function delete_cover_photo_picks_new_album_cover_test() {
+ $parent = test::random_album();
+ $album = test::random_album($parent);
$photo1 = test::random_photo($album);
// At this point, $photo1 is the album cover. We verify this in
// Item_Model_Test::first_photo_becomes_album_cover
$photo2 = test::random_photo($album);
$photo1->delete();
$album->reload();
+ $parent->reload();
$this->assert_same($photo2->id, $album->album_cover_item_id);
+ $this->assert_same($photo2->id, $parent->album_cover_item_id);
}
}