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