summaryrefslogtreecommitdiffstats
path: root/apps/gallery/lib/managers.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gallery/lib/managers.php')
-rw-r--r--apps/gallery/lib/managers.php97
1 files changed, 97 insertions, 0 deletions
diff --git a/apps/gallery/lib/managers.php b/apps/gallery/lib/managers.php
new file mode 100644
index 00000000000..2444659d0a4
--- /dev/null
+++ b/apps/gallery/lib/managers.php
@@ -0,0 +1,97 @@
+<?php
+
+namespace OC\Pictures;
+
+require_once('lib/base.php');
+
+\OCP\JSON::checkLoggedIn();
+\OCP\JSON::checkAppEnabled('gallery');
+
+class DatabaseManager {
+ private static $instance = null;
+ const TAG = 'DatabaseManager';
+
+ public static function getInstance() {
+ if (self::$instance === null)
+ self::$instance = new DatabaseManager();
+ return self::$instance;
+ }
+
+ public function getFileData($path) {
+ $gallery_path = \OCP\Config::getSystemValue( 'datadirectory' ).'/'.\OC_User::getUser().'/gallery';
+ $path = $gallery_path.$path;
+ $stmt = \OCP\DB::prepare('SELECT * FROM *PREFIX*pictures_images_cache WHERE uid_owner LIKE ? AND path = ?');
+ $result = $stmt->execute(array(\OCP\USER::getUser(), $path));
+ if (($row = $result->fetchRow()) != false) {
+ return $row;
+ }
+ $image = new \OC_Image();
+ if (!$image->loadFromFile($path)) {
+ return false;
+ }
+ \OCP\DB::beginTransaction();
+ $stmt = \OCP\DB::prepare('INSERT INTO *PREFIX*pictures_images_cache (uid_owner, path, width, height) VALUES (?, ?, ?, ?)');
+ $stmt->execute(array(\OCP\USER::getUser(), $path, $image->width(), $image->height()));
+ \OCP\DB::commit();
+ $ret = array('filepath' => $path, 'width' => $image->width(), 'height' => $image->height());
+ unset($image);
+ return $ret;
+ }
+
+ private function __construct() {}
+}
+
+class ThumbnailsManager {
+
+ private static $instance = null;
+ const TAG = 'ThumbnailManager';
+
+ public static function getInstance() {
+ if (self::$instance === null)
+ self::$instance = new ThumbnailsManager();
+ return self::$instance;
+ }
+
+ public function getThumbnail($path) {
+ $gallery_path = \OCP\Config::getSystemValue( 'datadirectory' ).'/'.\OC_User::getUser().'/gallery';
+ if (file_exists($gallery_path.$path)) {
+ return new \OC_Image($gallery_path.$path);
+ }
+ if (!\OC_Filesystem::file_exists($path)) {
+ \OC_Log::write(self::TAG, 'File '.$path.' don\'t exists', \OC_Log::WARN);
+ return false;
+ }
+ $image = new \OC_Image();
+ $image->loadFromFile(\OC_Filesystem::getLocalFile($path));
+ if (!$image->valid()) return false;
+
+ $image->fixOrientation();
+
+ $ret = $image->preciseResize(floor((150*$image->width())/$image->height()), 150);
+
+ if (!$ret) {
+ \OC_Log::write(self::TAG, 'Couldn\'t resize image', \OC_Log::ERROR);
+ unset($image);
+ return false;
+ }
+
+ $image->save($gallery_path.'/'.$path);
+ return $image;
+ }
+
+ public function getThumbnailInfo($path) {
+ $arr = DatabaseManager::getInstance()->getFileData($path);
+ $ret = array('filepath' => $arr['path'],
+ 'width' => $arr['width'],
+ 'height' => $arr['height']);
+ return $ret;
+ }
+
+ public function delete($path) {
+ unlink(\OC::$CONFIG_DATADIRECTORY_ROOT.'/'.\OC_User::getUser()."/gallery".$path);
+ }
+
+ private function __construct() {}
+
+}
+?>