From: Bartek Przybylski Date: Sat, 14 Jan 2012 13:59:18 +0000 (+0100) Subject: handle gallery remove when removing dir via webinterface X-Git-Tag: v3.0~59^2~1 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e0dc8b8ab2c1803357e6bd4fbb477effe5d4c599;p=nextcloud-server.git handle gallery remove when removing dir via webinterface --- diff --git a/apps/gallery/lib/album.php b/apps/gallery/lib/album.php index a708ba83ea4..6adff196071 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 ee17c0df7df..534f76896d7 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 23887098e0f..14b0c4b2a07 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));