+++ /dev/null
-var actual_cover;
-var paths = [];
-var crumbCount = 0;
-$(document).ready(returnToElement(0));
-
-function returnToElement(num) {
- while (crumbCount != num) {
- $('#g-album-navigation .last').remove();
- $('#g-album-navigation .crumb :last').parent().addClass('last');
- crumbCount--;
- paths.pop();
- }
- var p='';
- for (var i in paths) p += paths[i]+'/';
- $('#g-album-loading').show();
- $.getJSON(OC.filePath('gallery','ajax','galleryOp.php'), {operation: 'get_gallery', path: p }, albumClickHandler);
-}
-
-function albumClick(title) {
- paths.push(title);
- crumbCount++;
- var p = '';
- for (var i in paths) p += paths[i]+'/';
- $('#g-album-loading').show();
- $.getJSON(OC.filePath('gallery','ajax','galleryOp.php'), {operation: 'get_gallery', path: p }, function(r) {
- albumClickHandler(r);
- if ($('#g-album-navigation :last-child'))
- $('#g-album-navigation :last-child').removeClass('last');
- $('#g-album-navigation').append('<div class="crumb last real" style="background-image:url(\''+OC.imagePath('core','breadcrumb')+'\')"><a href=\"javascript:returnToElement('+crumbCount+');\">'+decodeURIComponent(escape(title))+'</a></div>');
- });
-}
-
-function constructSharingPath() {
- return document.location.protocol + '//' + document.location.host + OC.linkTo('', 'public.php') + '?service=gallery&token=' + Albums.token;
-}
-
-function shareGallery() {
- var existing_token = '';
- if (Albums.token)
- existing_token = constructSharingPath();
- var form_fields = [{text: 'Share', name: 'share', type: 'checkbox', value: Albums.shared},
- {text: 'Share recursive', name: 'recursive', type: 'checkbox', value: Albums.recursive},
- {text: 'Shared gallery address', name: 'address', type: 'text', value: existing_token}];
- OC.dialogs.form(form_fields, t('gallery', 'Share gallery'), function(values){
- var p = '';
- for (var i in paths) p += paths[i]+'/';
- if (p == '') p = '/';
- alert(p);
- $.getJSON(OC.filePath('gallery', 'ajax', 'galleryOp.php'), {operation: 'share', path: p, share: values[0].value, recursive: values[1].value}, function(r) {
- if (r.status == 'success') {
- Albums.shared = r.sharing;
- if (Albums.shared) {
- Albums.token = r.token;
- Albums.recursive = r.recursive;
- } else {
- Albums.token = '';
- Albums.recursive = false;
- }
- var actual_addr = '';
- if (Albums.token)
- actual_addr = constructSharingPath();
- $('input[name="address"]').val(actual_addr);
- } else {
- OC.dialogs.alert(t('gallery', 'Error: ') + r.cause, t('gallery', 'Internal error'));
- }
- });
- });
-}
-
-function albumClickHandler(r) {
- Albums.photos = [];
- Albums.albums = [];
- if (r.status == 'success') {
- for (var i in r.albums) {
- var a = r.albums[i];
- Albums.add(a.name, a.numOfItems, a.path, a.shared, a.recursive, a.token);
- }
- for (var i in r.photos) {
- Albums.photos.push(r.photos[i]);
- }
- Albums.shared = r.shared;
- if (Albums.shared) {
- Albums.recursive = r.recursive;
- Albums.token = r.token;
- } else {
- Albums.recursive = false;
- Albums.token = '';
- }
- $(document).ready(function(){
- var targetDiv = $('#gallery_list');
- targetDiv.html('');
- Albums.display(targetDiv);
- //$('#gallery_list').sortable({revert:true});
- $('.album').each(function(i, el) {
- $(el).click(albumClick.bind(null,$(el).attr('title')));
- //$(el).draggable({connectToSortable: '#gallery_list', handle: '.dummy'});
- });
- });
- } else {
- OC.dialogs.alert(t('gallery', 'Error: ') + r.cause, t('gallery', 'Internal error'));
- }
- $('#g-album-loading').hide();
-}
-
-var albumCounter = 0;
-var totalAlbums = 0;
-
-function scanForAlbums(cleanup) {
- Scanner.scanAlbums();
- return;
-}
-
-function settings() {
- OC.dialogs.form([{text: t('gallery', 'Scanning root'), name: 'root', type:'text', value:gallery_scanning_root},
- {text: t('gallery', 'Default order'), name: 'order', type:'select', value:gallery_default_order, options:[
- {text:t('gallery', 'Ascending'), value:'ASC'}, {text: t('gallery', 'Descending'), value:'DESC'} ]}],
- t('gallery', 'Settings'),
- function(values) {
- var scanning_root = values[0].value;
- var disp_order = values[1].value;
- if (scanning_root == '') {
- OC.dialogs.alert(t('gallery', 'Scanning root cannot be empty'), t('gallery', 'Error'));
- return;
- }
- $.getJSON(OC.filePath('gallery','ajax','galleryOp.php'), {operation: 'store_settings', root: scanning_root, order: disp_order}, function(r) {
- if (r.status == 'success') {
- if (r.rescan == 'yes') {
- Albums.clear(document.getElementById('gallery_list'));
- scanForAlbums(true);
- }
- gallery_scanning_root = scanning_root;
- } else {
- OC.dialogs.alert(t('gallery', 'Error: ') + r.cause, t('gallery', 'Error'));
- return;
- }
- });
- });
-}
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*
+*
* You should have received a copy of the GNU Lesser General Public
-* License along with this library. If not, see <http://www.gnu.org/licenses/>.
+* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
-OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_post_write, "OC_Gallery_Hooks_Handlers", "addPhotoFromPath");
OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_delete, "OC_Gallery_Hooks_Handlers", "removePhoto");
//OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_post_rename, "OC_Gallery_Hooks_Handlers", "renamePhoto");
-require_once(OC::$CLASSPATH['OC_Gallery_Album']);
-require_once(OC::$CLASSPATH['OC_Gallery_Photo']);
+require_once(OC::$CLASSPATH['Pictures_Managers']);
class OC_Gallery_Hooks_Handlers {
- private static $APP_TAG = "Gallery";
-
- private static function isPhoto($filename) {
- $ext = strtolower(substr($filename, strrpos($filename, '.')+1));
- return $ext=='png' || $ext=='jpeg' || $ext=='jpg' || $ext=='gif';
- }
-
- private static function directoryContainsPhotos($dirpath) {
- $dirhandle = OC_Filesystem::opendir($dirpath.'/');
- if ($dirhandle != FALSE) {
- while (($filename = readdir($dirhandle)) != FALSE) {
- if ($filename[0] == '.') continue;
- if (self::isPhoto($dirpath.'/'.$filename)) return true;
- }
- }
- return false;
- }
-
- private static function createAlbum($path) {
- $new_album_name = trim(str_replace('/', '.', $path), '.');
- if ($new_album_name == '')
- $new_album_name = 'main';
-
- OCP\Util::writeLog(self::$APP_TAG, 'Creating new album '.$new_album_name, OCP\Util::DEBUG);
- OC_Gallery_Album::create(OCP\USER::getUser(), $new_album_name, $path);
-
- return OC_Gallery_Album::find(OCP\USER::getUser(), null, $path);
- }
-
- public static function pathInRoot($path) {
- $root = OCP\Config::getUserValue(OCP\USER::getUser(), 'gallery', 'root', '/');
- return substr($path, 0, strlen($path)>strlen($root)?strlen($root):strlen($path)) == $root;
- }
-
- public static function addPhotoFromPath($params) {
- $fullpath = $params[OC_Filesystem::signal_param_path];
- $fullpath = rtrim(dirname($fullpath),'/').'/'.basename($fullpath);
-
- if (!self::isPhoto($fullpath)) return;
-
- $a = OC_Gallery_Album::find(OCP\USER::getUser(), null, dirname($fullpath));
- if (!($r = $a->fetchRow())) {
- OC_Gallery_Album::create(OCP\USER::getUser(), basename(dirname($fullpath)), dirname($fullpath));
- $a = OC_Gallery_Album::find(OCP\USER::getUser(), null, dirname($fullpath));
- $r = $a->fetchRow();
- }
- $albumId = $r['album_id'];
- $p = OC_Gallery_Album::find($albumId, $fullpath);
- if (!($p->fetchRow()))
- OC_Gallery_Photo::create($albumId, $fullpath);
- }
-
- public static function removePhoto($params) {
- $fullpath = $params[OC_Filesystem::signal_param_path];
- $fullpath = rtrim(dirname($fullpath),'/').'/'.basename($fullpath);
-
- if (OC_Filesystem::is_dir($fullpath)) {
- OC_Gallery_Album::remove(OCP\USER::getUser(), null, $fullpath);
- } elseif (self::isPhoto($fullpath)) {
- $a = OC_Gallery_Album::find(OCP\USER::getUser(), null, rtrim(dirname($fullpath),'/'));
- if (($r = $a->fetchRow())) {
- OC_Gallery_Photo::removeByPath($fullpath, $r['album_id']);
- $p = OC_Gallery_Photo::findForAlbum(OCP\USER::getUser(), $r['album_name']);
- if (!($p->fetchRow())) {
- OC_Gallery_Album::remove(OCP\USER::getUser(), null, dirname($fullpath));
- }
- }
- }
- }
-
- public static function renamePhoto($params) {
- $oldpath = $params[OC_Filesystem::signal_param_oldpath];
- $newpath = $params[OC_Filesystem::signal_param_newpath];
- if (OC_Filesystem::is_dir($newpath.'/') && self::directoryContainsPhotos($newpath)) {
- OC_Gallery_Album::changePath($oldpath, $newpath, OCP\USER::getUser());
- } elseif (self::isPhoto($newpath)) {
- $olddir = dirname($oldpath);
- $newdir = dirname($newpath);
- if ($olddir == '') $olddir = '/';
- if ($newdir == '') $newdir = '/';
- if (!self::isPhoto($newpath)) return;
- OCP\Util::writeLog(self::$APP_TAG, 'Moving photo from '.$oldpath.' to '.$newpath, OCP\Util::DEBUG);
- $album;
- $newAlbumId;
- $oldAlbumId;
- if ($olddir == $newdir) {
- // album changing is not needed
- $albums = OC_Gallery_Album::find(OCP\USER::getUser(), null, $olddir);
- $album = $albums->fetchRow();
- if (!$album) {
- $albums = self::createAlbum($newdir);
- $album = $albums->fetchRow();
- }
- $newAlbumId = $oldAlbumId = $album['album_id'];
- } else {
- $newalbum = OC_Gallery_Album::find(OCP\USER::getUser(), null, $newdir);
- $oldalbum = OC_Gallery_Album::find(OCP\USER::getUser(), null, $olddir);
-
- if (!($newalbum = $newalbum->fetchRow())) {
- $newalbum = self::createAlbum($newdir);
- $newalbum = $newalbum->fetchRow();
- }
- $oldalbum = $oldalbum->fetchRow();
- if (!$oldalbum) {
- OC_Gallery_Photo::create($newalbum['album_id'], $newpath);
- return;
- }
- $newAlbumId = $newalbum['album_id'];
- $oldAlbumId = $oldalbum['album_id'];
-
- }
- OC_Gallery_Photo::changePath($oldAlbumId, $newAlbumId, $oldpath, $newpath);
- }
- }
+ private static $APP_TAG = "Gallery";
+
+ private static function isPhoto($filename) {
+ $ext = strtolower(substr($filename, strrpos($filename, '.')+1));
+ return $ext=='png' || $ext=='jpeg' || $ext=='jpg' || $ext=='gif';
+ }
+
+ private static function directoryContainsPhotos($dirpath) {
+ $dirhandle = OC_Filesystem::opendir($dirpath.'/');
+ if ($dirhandle != FALSE) {
+ while (($filename = readdir($dirhandle)) != FALSE) {
+ if ($filename[0] == '.') continue;
+ if (self::isPhoto($dirpath.'/'.$filename)) return true;
+ }
+ }
+ return false;
+ }
+
+ private static function createAlbum($path) {
+ $new_album_name = trim(str_replace('/', '.', $path), '.');
+ if ($new_album_name == '')
+ $new_album_name = 'main';
+
+ OCP\Util::writeLog(self::$APP_TAG, 'Creating new album '.$new_album_name, OCP\Util::DEBUG);
+ OC_Gallery_Album::create(OCP\USER::getUser(), $new_album_name, $path);
+
+ return OC_Gallery_Album::find(OCP\USER::getUser(), null, $path);
+ }
+
+ public static function pathInRoot($path) {
+ $root = OCP\Config::getUserValue(OCP\USER::getUser(), 'gallery', 'root', '/');
+ return substr($path, 0, strlen($path)>strlen($root)?strlen($root):strlen($path)) == $root;
+ }
+
+ public static function addPhotoFromPath($params) {
+ $fullpath = $params[OC_Filesystem::signal_param_path];
+ $fullpath = rtrim(dirname($fullpath),'/').'/'.basename($fullpath);
+
+ if (!self::isPhoto($fullpath)) return;
+
+ $a = OC_Gallery_Album::find(OCP\USER::getUser(), null, dirname($fullpath));
+ if (!($r = $a->fetchRow())) {
+ OC_Gallery_Album::create(OCP\USER::getUser(), basename(dirname($fullpath)), dirname($fullpath));
+ $a = OC_Gallery_Album::find(OCP\USER::getUser(), null, dirname($fullpath));
+ $r = $a->fetchRow();
+ }
+ $albumId = $r['album_id'];
+ $p = OC_Gallery_Album::find($albumId, $fullpath);
+ if (!($p->fetchRow()))
+ OC_Gallery_Photo::create($albumId, $fullpath);
+ }
+
+ public static function removePhoto($params) {
+ \OC\Pictures\ThumbnailsManager::getInstance()->delete($params[OC_Filesystem::signal_param_path]);
+ }
+
+ public static function renamePhoto($params) {
+ $oldpath = $params[OC_Filesystem::signal_param_oldpath];
+ $newpath = $params[OC_Filesystem::signal_param_newpath];
+ if (OC_Filesystem::is_dir($newpath.'/') && self::directoryContainsPhotos($newpath)) {
+ OC_Gallery_Album::changePath($oldpath, $newpath, OCP\USER::getUser());
+ } elseif (self::isPhoto($newpath)) {
+ $olddir = dirname($oldpath);
+ $newdir = dirname($newpath);
+ if ($olddir == '') $olddir = '/';
+ if ($newdir == '') $newdir = '/';
+ if (!self::isPhoto($newpath)) return;
+ OCP\Util::writeLog(self::$APP_TAG, 'Moving photo from '.$oldpath.' to '.$newpath, OCP\Util::DEBUG);
+ $album;
+ $newAlbumId;
+ $oldAlbumId;
+ if ($olddir == $newdir) {
+ // album changing is not needed
+ $albums = OC_Gallery_Album::find(OCP\USER::getUser(), null, $olddir);
+ $album = $albums->fetchRow();
+ if (!$album) {
+ $albums = self::createAlbum($newdir);
+ $album = $albums->fetchRow();
+ }
+ $newAlbumId = $oldAlbumId = $album['album_id'];
+ } else {
+ $newalbum = OC_Gallery_Album::find(OCP\USER::getUser(), null, $newdir);
+ $oldalbum = OC_Gallery_Album::find(OCP\USER::getUser(), null, $olddir);
+
+ if (!($newalbum = $newalbum->fetchRow())) {
+ $newalbum = self::createAlbum($newdir);
+ $newalbum = $newalbum->fetchRow();
+ }
+ $oldalbum = $oldalbum->fetchRow();
+ if (!$oldalbum) {
+ OC_Gallery_Photo::create($newalbum['album_id'], $newpath);
+ return;
+ }
+ $newAlbumId = $newalbum['album_id'];
+ $oldAlbumId = $oldalbum['album_id'];
+
+ }
+ OC_Gallery_Photo::changePath($oldAlbumId, $newAlbumId, $oldpath, $newpath);
+ }
+ }
}
?>