From: Bartek Przybylski Date: Sun, 8 Jan 2012 00:32:11 +0000 (+0100) Subject: rename and delete hooks X-Git-Tag: v3.0~60^2~12^2~10 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2de3b4bd1738cfce48d7c003316e13e988819898;p=nextcloud-server.git rename and delete hooks --- diff --git a/apps/gallery/lib/hooks_handlers.php b/apps/gallery/lib/hooks_handlers.php index 5d1e7502aa3..1bddaf363e3 100644 --- a/apps/gallery/lib/hooks_handlers.php +++ b/apps/gallery/lib/hooks_handlers.php @@ -1,6 +1,8 @@ numRows() == 0) { - $new_album_name = trim(str_replace('/', '.', $fullpath)); - if ($new_album_name == '.') $new_album_name = 'main'; - OC_Gallery_Album::create(OC_User::getUser(), $new_album_name, $path); - $album = OC_Gallery_Album::find(OC_User::getUser(), null, $path); + $album = self::createAlbum($path); } $album = $album->fetchRow(); $albumId = $album['album_id']; - OC_Gallery_Photo::create($albumId, $fullpath); + $photo = OC_Gallery_Photo::find($albumId, $fullpath); + if ($photo->numRows() == 0) { // don't duplicate photo entries + OC_Log::write(self::$APP_TAG, 'Adding new photo to album', OC_Log::DEBUG); + OC_Gallery_Photo::create($albumId, $fullpath); + } } + + public static function removePhoto($params) { + $path = $params['path']; + if (!self::isPhoto($path)) return; + OC_Gallery_Photo::removeByPath($path); + } + + public static function renamePhoto($params) { + $olddir = substr($params['oldpath'], 0, strrpos($params['oldpath'], '/')); + $newdir = substr($params['newpath'], 0, strrpos($params['newpath'], '/')); + if (!self::isPhoto($params['newpath'])) return; + $album; + $newAlbumId; + $oldAlbumId; + if ($olddir == $newdir) { + // album changing is not needed + $album = OC_Gallery_Album::find(OC_User::getUser(), null, $olddir); + if ($album->numRows() == 0) { + $album = self::createAlbum($newdir); + } + $album = $album->fetchRow(); + $newAlbumId = $oldAlbumId = $album['album_id']; + } else { + $newalbum = OC_Gallery_Album::find(OC_User::getUser(), null, $newdir); + $oldalbum = OC_Gallery_Album::find(OC_User::getUser(), null, $olddir); + + if ($newalbum->numRows() == 0) { + $newalbum = self::createAlbum($newdir); + } + $newalbum = $newalbum->fetchRow(); + if ($oldalbum->numRows() == 0) { + OC_Gallery_Photo::create($newalbum['album_id'], $params['newpath']); + return; + } + $oldalbum = $oldalbum->fetchRow(); + $newAlbumId = $newalbum['album_id']; + $oldAlbumId = $oldalbum['album_id']; + + } + OC_Gallery_Photo::changePath($oldAlbumId, $newAlbumId, $params['oldpath'], $params['newpath']); + } } ?> diff --git a/apps/gallery/lib/photo.php b/apps/gallery/lib/photo.php index a89a56981f5..f8a640819a1 100644 --- a/apps/gallery/lib/photo.php +++ b/apps/gallery/lib/photo.php @@ -8,7 +8,6 @@ class OC_Gallery_Photo{ public static function find($albumId, $img=null){ $sql = 'SELECT * FROM *PREFIX*gallery_photos WHERE album_id = ?'; $args = array($albumId); - $args = array($albumId); if (!is_null($img)){ $sql .= ' AND file_path = ?'; $args[] = $img; @@ -26,5 +25,19 @@ class OC_Gallery_Photo{ return $stmt->execute(array($owner, $album_name)); } + public static function removeByPath($path) { + $stmt = OC_DB::prepare('DELETE FROM *PREFIX*gallery_photos WHERE file_path = ?'); + $stmt->execute(array($path)); + } + + public static function removeById($id) { + $stmt = OC_DB::prepare('DELETE FROM *PREFIX*gallery_photos WHERE photo_id = ?'); + $stmt->execute(array($id)); + } + + 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)); + } }