From: Bart Visscher Date: Thu, 8 Dec 2011 19:04:56 +0000 (+0100) Subject: Gallery: splitout model code X-Git-Tag: v3.0~81^2~3 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=eeaf539a4414e3081b6f6652167363a3221a1973;p=nextcloud-server.git Gallery: splitout model code --- diff --git a/apps/gallery/ajax/createAlbum.php b/apps/gallery/ajax/createAlbum.php index 610f761b72a..9413b54718a 100644 --- a/apps/gallery/ajax/createAlbum.php +++ b/apps/gallery/ajax/createAlbum.php @@ -3,8 +3,7 @@ require_once('../../../lib/base.php'); OC_JSON::checkLoggedIn(); OC_JSON::checkAppEnabled('gallery'); -$stmt = OC_DB::prepare('INSERT INTO *PREFIX*gallery_albums ("uid_owner", "album_name") VALUES ("'.OC_User::getUser().'", "'.$_GET['album_name'].'")'); -$stmt->execute(array()); +OC_Gallery_Album::create(OC_User::getUser(), $_GET['album_name']); OC_JSON::success(array('name' => $_GET['album_name'])); diff --git a/apps/gallery/ajax/getAlbums.php b/apps/gallery/ajax/getAlbums.php index 38bea74636f..856f29344d7 100644 --- a/apps/gallery/ajax/getAlbums.php +++ b/apps/gallery/ajax/getAlbums.php @@ -4,13 +4,11 @@ OC_JSON::checkLoggedIn(); OC_JSON::checkAppEnabled('gallery'); $a = array(); -$stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE `uid_owner` = ?'); -$result = $stmt->execute(array(OC_User::getUser())); +$result = OC_Gallery_Album::find(OC_User::getUser()); while ($r = $result->fetchRow()) { $album_name = $r['album_name']; - $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_photos WHERE `album_id` = ?'); - $tmp_res = $stmt->execute(array($r['album_id'])); + $tmp_res = OC_Gallery_Photo::find($r['album_id']); $a[] = array('name' => $album_name, 'numOfItems' => min($tmp_res->numRows(), 10)); } diff --git a/apps/gallery/ajax/getCovers.php b/apps/gallery/ajax/getCovers.php index b9c7558a53c..db7c8e9fcde 100644 --- a/apps/gallery/ajax/getCovers.php +++ b/apps/gallery/ajax/getCovers.php @@ -18,7 +18,7 @@ function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height, $tgtImg, $ default: exit(); } - if(!$myImage) exit(); + if(!$myImage) exit(); $ratio_orig = $width_orig/$height_orig; if ($thumbnail_width/$thumbnail_height > $ratio_orig) { @@ -44,15 +44,19 @@ function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height, $tgtImg, $ $box_size = 200; $album_name= $_GET['album_name']; -$stmt = OC_DB::prepare('SELECT `file_path` FROM *PREFIX*gallery_photos,*PREFIX*gallery_albums WHERE *PREFIX*gallery_albums.`uid_owner` = ? AND `album_name` = ? AND *PREFIX*gallery_photos.`album_id` = *PREFIX*gallery_albums.`album_id`'); -$result = $stmt->execute(array(OC_User::getUser(), $album_name)); +$result = OC_Gallery_Photo::findForAlbum(OC_User::getUser(), $album_name); $numOfItems = min($result->numRows(),10); -$targetImg = imagecreatetruecolor($numOfItems*$box_size, $box_size); +if ($numOfItems){ + $targetImg = imagecreatetruecolor($numOfItems*$box_size, $box_size); +} +else{ + $targetImg = imagecreatetruecolor($box_size, $box_size); +} $counter = 0; while (($i = $result->fetchRow()) && $counter < $numOfItems) { - $imagePath = OC::$CONFIG_DATADIRECTORY . $i['file_path']; + $imagePath = OC_Filesystem::getLocalFile($i['file_path']); if(file_exists($imagePath)) { CroppedThumbnail($imagePath, $box_size, $box_size, $targetImg, $counter*$box_size); @@ -65,7 +69,7 @@ header('Content-Type: image/png'); $offset = 3600 * 24; // calc the string in GMT not localtime and add the offset header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"); -header('Cache-Control: max-age=3600, must-revalidate'); +header('Cache-Control: max-age='.$offset.', must-revalidate'); header('Pragma: public'); imagepng($targetImg); diff --git a/apps/gallery/ajax/scanForAlbums.php b/apps/gallery/ajax/scanForAlbums.php index de0b141a367..ff696804b00 100644 --- a/apps/gallery/ajax/scanForAlbums.php +++ b/apps/gallery/ajax/scanForAlbums.php @@ -3,9 +3,8 @@ require_once('../../../lib/base.php'); OC_JSON::checkLoggedIn(); OC_JSON::checkAppEnabled('gallery'); -require_once('../lib_scanner.php'); -OC_JSON::success(array('albums' => OC_GALLERY_SCANNER::scan(''))); +OC_JSON::success(array('albums' => OC_Gallery_Scanner::scan(''))); //OC_JSON::success(array('albums' => array(array('name' => 'test', 'imagesCount' => 1, 'images' => array('dupa'))))); ?> diff --git a/apps/gallery/ajax/thumbnail.php b/apps/gallery/ajax/thumbnail.php index a1416452932..d937691fa03 100644 --- a/apps/gallery/ajax/thumbnail.php +++ b/apps/gallery/ajax/thumbnail.php @@ -49,12 +49,19 @@ function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSr $box_size = 200; $img = $_GET['img']; -$tmp = OC::$CONFIG_DATADIRECTORY . $img; +$imagePath = OC_Filesystem::getLocalFile($img); -if(file_exists($tmp)) +if(file_exists($imagePath)) { - header('Content-Type: image/png'); - $image = CroppedThumbnail($tmp, $box_size, $box_size); + $image = CroppedThumbnail($imagePath, $box_size, $box_size); + + header('Content-Type: image/png'); + $offset = 3600 * 24; + // calc the string in GMT not localtime and add the offset + header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"); + header('Cache-Control: max-age='.$offset.', must-revalidate'); + header('Pragma: public'); + imagepng($image); imagedestroy($image); -} \ No newline at end of file +} diff --git a/apps/gallery/appinfo/app.php b/apps/gallery/appinfo/app.php index 8f855c470e5..2b1ab857afc 100644 --- a/apps/gallery/appinfo/app.php +++ b/apps/gallery/appinfo/app.php @@ -1,4 +1,8 @@ 20, 'id' => 'gallery', diff --git a/apps/gallery/css/styles.css b/apps/gallery/css/styles.css index 03b179138e6..070effe3a92 100644 --- a/apps/gallery/css/styles.css +++ b/apps/gallery/css/styles.css @@ -1,14 +1,22 @@ div#gallery_list { margin: 90pt 20pt; } +div#gallery_list.leftcontent { + padding-top: 15px; + margin: 0; + text-align: center; +} div#gallery_album_box { width: 200px; text-align: center; border: 0; - float: left; + display: inline-block; margin: 5pt; } +.leftcontent div#gallery_album_box { + margin: 5px; +} div#gallery_album_box h1 { font-size: 12pt; @@ -21,3 +29,6 @@ div#gallery_album_cover { border: solid 1px black; } +#gallery_images { +padding:10px 5px; +} diff --git a/apps/gallery/index.php b/apps/gallery/index.php index 87fdafcf13c..2c409089ebe 100644 --- a/apps/gallery/index.php +++ b/apps/gallery/index.php @@ -7,8 +7,7 @@ OC_App::setActiveNavigationEntry( 'gallery_index' ); if (!isset($_GET['view'])) { - $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ?'); - $result = $stmt->execute(array(OC_User::getUser())); + $result = OC_Gallery_Album::find(OC_User::getUser()); $r = array(); while ($row = $result->fetchRow()) @@ -18,9 +17,7 @@ if (!isset($_GET['view'])) { $tmpl->assign('r', $r); $tmpl->printPage(); } else { - $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_photos, *PREFIX*gallery_albums WHERE uid_owner = ? AND album_name = ? AND *PREFIX*gallery_albums.album_id = *PREFIX*gallery_photos.album_id'); - - $result = $stmt->execute(array(OC_User::getUser(), $_GET['view'])); + $result = OC_Gallery_Photo::findForAlbum(OC_User::getUser(), $_GET['view']); $photos = array(); while ($p = $result->fetchRow()) diff --git a/apps/gallery/lib/album.php b/apps/gallery/lib/album.php new file mode 100644 index 00000000000..6ddfe46de3d --- /dev/null +++ b/apps/gallery/lib/album.php @@ -0,0 +1,18 @@ +execute(array($owner, $name)); + } + public static function find($owner, $name=null){ + $sql = 'SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ?'; + $args = array($owner); + if (!is_null($name)){ + $sql .= ' AND album_name = ?'; + $args[] = $name; + } + $stmt = OC_DB::prepare($sql); + return $stmt->execute($args); + } +} diff --git a/apps/gallery/lib/photo.php b/apps/gallery/lib/photo.php new file mode 100644 index 00000000000..97d159935f5 --- /dev/null +++ b/apps/gallery/lib/photo.php @@ -0,0 +1,28 @@ +execute(array($albumId, $img)); + } + 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; + } + $stmt = OC_DB::prepare($sql); + return $stmt->execute($args); + } + public static function findForAlbum($owner, $album_name){ + $stmt = OC_DB::prepare('SELECT *' + .' FROM *PREFIX*gallery_photos photos,' + .' *PREFIX*gallery_albums albums' + .' WHERE albums.uid_owner = ?' + .' AND albums.album_name = ?' + .' AND photos.album_id = albums.album_id'); + return $stmt->execute(array($owner, $album_name)); + } +} diff --git a/apps/gallery/lib/scanner.php b/apps/gallery/lib/scanner.php new file mode 100644 index 00000000000..1590051c48d --- /dev/null +++ b/apps/gallery/lib/scanner.php @@ -0,0 +1,49 @@ + $path, 'imagesCount' => 0, 'images' => array()); + $current_album['name'] = str_replace('/', '.', str_replace(OC::$CONFIG_DATADIRECTORY, '', $current_album['name'])); + $current_album['name'] = ($current_album['name']==='')?'main':$current_album['name']; + + if ($dh = OC_Filesystem::opendir($path)) { + while (($filename = readdir($dh)) !== false) { + $filepath = $path.'/'.$filename; + if (substr($filename, 0, 1) == '.') continue; + if (OC_Filesystem::is_dir($filepath)) { + self::scanDir($filepath, $albums); + } elseif (self::isPhoto($path.'/'.$filename)) { + $current_album['images'][] = $filepath; + } + } + } + $current_album['imagesCount'] = count($current_album['images']); + $albums[] = $current_album; + $result = OC_Gallery_Album::find(OC_User::getUser(), $current_album['name']); + if ($result->numRows() == 0 && count($current_album['images'])) { + OC_Gallery_Album::create(OC_User::getUser(), $current_album['name']); + $result = OC_Gallery_Album::find(OC_User::getUser(), $current_album['name']); + } + $albumId = $result->fetchRow(); + $albumId = $albumId['album_id']; + foreach ($current_album['images'] as $img) { + $result = OC_Gallery_Photo::find($albumId, $img); + if ($result->numRows() == 0) { + OC_Gallery_Photo::create($albumId, $img); + } + } + } + + public static function isPhoto($filename) { + if (substr(OC_Filesystem::getMimeType($filename), 0, 6) == "image/") + return 1; + return 0; + } +} +?> diff --git a/apps/gallery/lib_scanner.php b/apps/gallery/lib_scanner.php deleted file mode 100644 index 1231de3f3c4..00000000000 --- a/apps/gallery/lib_scanner.php +++ /dev/null @@ -1,57 +0,0 @@ - $path, 'imagesCount' => 0, 'images' => array()); - $current_album['name'] = str_replace('/', '.', str_replace(OC::$CONFIG_DATADIRECTORY, '', $current_album['name'])); - $current_album['name'] = ($current_album['name']==='')?'main':$current_album['name']; - - if ($dh = OC_Filesystem::opendir($path)) { - while (($filename = readdir($dh)) !== false) { - $filepath = $path.'/'.$filename; - if (substr($filename, 0, 1) == '.') continue; - if (OC_Filesystem::is_dir($filepath)) { - self::scanDir($filepath, $albums); - } elseif (self::isPhoto($path.'/'.$filename)) { - $current_album['images'][] = $filepath; - } - } - } - $current_album['imagesCount'] = count($current_album['images']); - $albums[] = $current_album; - $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE `uid_owner` = ? AND `album_name` = ?'); - $result = $stmt->execute(array(OC_User::getUser(), $current_album['name'])); - if ($result->numRows() == 0 && count($current_album['images'])) { - $stmt = OC_DB::prepare('INSERT INTO *PREFIX*gallery_albums (`uid_owner`, `album_name`) VALUES (?, ?)'); - $stmt->execute(array(OC_User::getUser(), $current_album['name'])); - } - $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE `uid_owner` = ? AND `album_name` = ?'); - $result = $stmt->execute(array(OC_User::getUser(), $current_album['name'])); - $albumId = $result->fetchRow(); - $albumId = $albumId['album_id']; - foreach ($current_album['images'] as $img) { - $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_photos WHERE `album_id` = ? AND `file_path` = ?'); - $result = $stmt->execute(array($albumId, $img)); - if ($result->numRows() == 0) { - $stmt = OC_DB::prepare('INSERT INTO *PREFIX*gallery_photos (`album_id`, `file_path`) VALUES (?, ?)'); - $stmt->execute(array($albumId, $img)); - } - } - } - - public static function isPhoto($filename) { - if (substr(OC_Filesystem::getMimeType($filename), 0, 6) == "image/") - return 1; - return 0; - } -} -?> diff --git a/apps/gallery/templates/view_album.php b/apps/gallery/templates/view_album.php index 230e2a5c21d..ae43e2fc557 100644 --- a/apps/gallery/templates/view_album.php +++ b/apps/gallery/templates/view_album.php @@ -1,5 +1,6 @@
-