From e0dc8b8ab2c1803357e6bd4fbb477effe5d4c599 Mon Sep 17 00:00:00 2001 From: Bartek Przybylski Date: Sat, 14 Jan 2012 14:59:18 +0100 Subject: [PATCH] handle gallery remove when removing dir via webinterface --- apps/gallery/lib/album.php | 7 +++++++ apps/gallery/lib/hooks_handlers.php | 7 +++++-- apps/gallery/lib/photo.php | 5 +++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/apps/gallery/lib/album.php b/apps/gallery/lib/album.php index a708ba83ea..6adff19607 100644 --- a/apps/gallery/lib/album.php +++ b/apps/gallery/lib/album.php @@ -42,6 +42,13 @@ class OC_Gallery_Album { $stmt = OC_DB::prepare($sql); return $stmt->execute($args); } + + public static function removeByPath($path, $owner) { + $album = self::find($owner, null, $path); + $album = $album->fetchRow(); + self::remove($owner, $album['album_name']); + OC_Gallery_Photo::removeByAlbumId($album['album_id']); + } public static function find($owner, $name=null, $path=null){ $sql = 'SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ?'; diff --git a/apps/gallery/lib/hooks_handlers.php b/apps/gallery/lib/hooks_handlers.php index ee17c0df7d..534f76896d 100644 --- a/apps/gallery/lib/hooks_handlers.php +++ b/apps/gallery/lib/hooks_handlers.php @@ -83,8 +83,11 @@ class OC_Gallery_Hooks_Handlers { public static function removePhoto($params) { $path = $params['path']; - if (!self::isPhoto($path)) return; - OC_Gallery_Photo::removeByPath($path); + if (OC_Filesystem::is_dir($path) && self::directoryContainsPhotos($path)) { + OC_Gallery_Album::removeByPath($path, OC_User::getUser()); + } elseif (self::isPhoto($path)) { + OC_Gallery_Photo::removeByPath($path); + } } public static function renamePhoto($params) { diff --git a/apps/gallery/lib/photo.php b/apps/gallery/lib/photo.php index 23887098e0..14b0c4b2a0 100644 --- a/apps/gallery/lib/photo.php +++ b/apps/gallery/lib/photo.php @@ -56,6 +56,11 @@ class OC_Gallery_Photo{ $stmt->execute(array($id)); } + public static function removeByAlbumId($albumid) { + $stmt = OC_DB::prepare('DELETE FROM *PREFIX*gallery_photos WHERE album_id = ?'); + $stmt->execute(array($albumid)); + } + public static function changePath($oldAlbumId, $newAlbumId, $oldpath, $newpath) { $stmt = OC_DB::prepare("UPDATE *PREFIX*gallery_photos SET file_path = ?, album_id = ? WHERE album_id = ? and file_path = ?"); $stmt->execute(array($newpath, $newAlbumId, $oldAlbumId, $oldpath));