From eddb666b5a06ece05af6c460b11033321208f557 Mon Sep 17 00:00:00 2001 From: Nils Asmussen Date: Fri, 29 Jul 2016 21:56:48 +0200 Subject: [PATCH] Delete albums including subalbums. --- php/Modules/Album.php | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/php/Modules/Album.php b/php/Modules/Album.php index 197f07a..ceb56d9 100644 --- a/php/Modules/Album.php +++ b/php/Modules/Album.php @@ -475,6 +475,31 @@ final class Album { } + private function getSubAlbums($albumID) { + + $query = Database::prepare(Database::get(), "SELECT id FROM ? WHERE parent = '?'", array(LYCHEE_TABLE_ALBUMS, $albumID)); + $albums = Database::execute(Database::get(), $query, __METHOD__, __LINE__); + + $ids = array(); + while($album = $albums->fetch_assoc()) { + $ids = array_merge($ids, array($album['id']), $this->getSubAlbums($album['id'])); + } + + return $ids; + + } + + private function addSubAlbumIDs($ids) { + + $res = array(); + + foreach(explode(',', $ids) as $id) + $res = array_merge($res, array($id), $this->getSubAlbums($id)); + + return implode(',', $res); + + } + /** * @return boolean Returns true when successful. */ @@ -640,11 +665,14 @@ final class Album { // Call plugins Plugins::get()->activate(__METHOD__, 0, func_get_args()); + // Get all album ids, including subalbums + $ids = $this->addSubAlbumIDs($this->albumIDs); + // Init vars $photoIDs = array(); // Execute query - $query = Database::prepare(Database::get(), "SELECT id FROM ? WHERE album IN (?)", array(LYCHEE_TABLE_PHOTOS, $this->albumIDs)); + $query = Database::prepare(Database::get(), "SELECT id FROM ? WHERE album IN (?)", array(LYCHEE_TABLE_PHOTOS, $ids)); $photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__); if ($photos===false) return false; @@ -665,7 +693,7 @@ final class Album { } // Delete albums - $query = Database::prepare(Database::get(), "DELETE FROM ? WHERE id IN (?)", array(LYCHEE_TABLE_ALBUMS, $this->albumIDs)); + $query = Database::prepare(Database::get(), "DELETE FROM ? WHERE id IN (?)", array(LYCHEE_TABLE_ALBUMS, $ids)); $result = Database::execute(Database::get(), $query, __METHOD__, __LINE__); // Call plugins