From a92d4c2c0932f5c662ed846763e3059ebdcde07c Mon Sep 17 00:00:00 2001 From: Andreas Fischer <bantu@owncloud.com> Date: Sat, 14 Sep 2013 18:44:28 +0200 Subject: Perform expiration date checking before returning share data for token. --- lib/public/share.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'lib/public/share.php') diff --git a/lib/public/share.php b/lib/public/share.php index 9ab956d84b9..cc3c4de6208 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -293,7 +293,18 @@ class Share { if (\OC_DB::isError($result)) { \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result) . ', token=' . $token, \OC_Log::ERROR); } - return $result->fetchRow(); + $row = $result->fetchRow(); + + if (!empty($row['expiration'])) { + $now = new \DateTime(); + $expirationDate = new \DateTime($row['expiration'], new \DateTimeZone('UTC')); + if ($now > $expirationDate) { + self::delete($row['id']); + return false; + } + } + + return $row; } /** -- cgit v1.2.3 From e8bf576184fdafbe74f3394dc253a56c07be6507 Mon Sep 17 00:00:00 2001 From: Jörn Friedrich Dreyer <jfd@butonic.de> Date: Fri, 26 Jul 2013 14:11:59 +0200 Subject: add initial search in shared files --- apps/files_sharing/lib/cache.php | 26 +++++++++++++++++++++++++- lib/public/share.php | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) (limited to 'lib/public/share.php') diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php index 33cd1428899..28e3cbdb2e1 100644 --- a/apps/files_sharing/lib/cache.php +++ b/apps/files_sharing/lib/cache.php @@ -226,7 +226,31 @@ class Shared_Cache extends Cache { * @return array of file data */ public function search($pattern) { - // TODO + + // normalize pattern + $pattern = $this->normalize($pattern); + + $ids = \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_ALL); + foreach ($ids as $file) { + $folderBackend = \OCP\Share::getBackend('folder'); + $children = $folderBackend->getChildren($file); + foreach ($children as $child) { + $ids[] = (int)$child['source']; + } + + } + $placeholders = join(',', array_fill(0, count($ids), '?')); + + $sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag` + FROM `*PREFIX*filecache` WHERE `name` LIKE ? AND `fileid` IN (' . $placeholders . ')'; + $result = \OC_DB::executeAudited($sql, array_merge(array($pattern), $ids)); + $files = array(); + while ($row = $result->fetchRow()) { + $row['mimetype'] = $this->getMimetype($row['mimetype']); + $row['mimepart'] = $this->getMimetype($row['mimepart']); + $files[] = $row; + } + return $files; } /** diff --git a/lib/public/share.php b/lib/public/share.php index 9ab956d84b9..10922965ea8 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -748,7 +748,7 @@ class Share { * @param string Item type * @return Sharing backend object */ - private static function getBackend($itemType) { + public static function getBackend($itemType) { if (isset(self::$backends[$itemType])) { return self::$backends[$itemType]; } else if (isset(self::$backendTypes[$itemType]['class'])) { -- cgit v1.2.3 From cd2421c7ee04e6d46481a1d0ae36387757b204fe Mon Sep 17 00:00:00 2001 From: Thomas Müller <thomas.mueller@tmit.eu> Date: Tue, 24 Sep 2013 10:37:58 +0200 Subject: adding PHPDoc comments to getBackend ensure getChildren() is called on an instance of Share_Backend_Collection --- apps/files_sharing/lib/cache.php | 15 ++++++++++----- lib/public/share.php | 4 ++-- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'lib/public/share.php') diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php index 51e8713b97a..123268e240a 100644 --- a/apps/files_sharing/lib/cache.php +++ b/apps/files_sharing/lib/cache.php @@ -20,6 +20,7 @@ */ namespace OC\Files\Cache; +use OCP\Share_Backend_Collection; /** * Metadata cache for shared files @@ -320,13 +321,17 @@ class Shared_Cache extends Cache { public function getAll() { $ids = \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_ALL); $folderBackend = \OCP\Share::getBackend('folder'); - foreach ($ids as $file) { - $children = $folderBackend->getChildren($file); - foreach ($children as $child) { - $ids[] = (int)$child['source']; + if ($folderBackend instanceof Share_Backend_Collection) { + foreach ($ids as $file) { + /** @var $folderBackend Share_Backend_Collection */ + $children = $folderBackend->getChildren($file); + foreach ($children as $child) { + $ids[] = (int)$child['source']; + } + } - } + return $ids; } diff --git a/lib/public/share.php b/lib/public/share.php index 10922965ea8..41f5ccbf40d 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -745,8 +745,8 @@ class Share { /** * @brief Get the backend class for the specified item type - * @param string Item type - * @return Sharing backend object + * @param string $itemType + * @return Share_Backend */ public static function getBackend($itemType) { if (isset(self::$backends[$itemType])) { -- cgit v1.2.3