From d4636f4b86ada6444ba35346717f77236b99cf2a Mon Sep 17 00:00:00 2001
From: Michael Gapczynski <GapczynskiM@gmail.com>
Date: Wed, 9 May 2012 17:01:46 -0400
Subject: [PATCH] Fix renaming of shared files if target already exists, bug
 fix for oc-81

---
 apps/files_sharing/lib_share.php | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/apps/files_sharing/lib_share.php b/apps/files_sharing/lib_share.php
index ecf82abb31e..3bcc2b562e5 100755
--- a/apps/files_sharing/lib_share.php
+++ b/apps/files_sharing/lib_share.php
@@ -78,7 +78,9 @@ class OC_Share {
 				// Check if the target already exists for the user, if it does append a number to the name
 				$sharedFolder = '/'.$uid.'/files/Shared';
 				$target = $sharedFolder."/".basename($source);
-				if (self::getSource($target)) {
+				$checkTarget = OCP\DB::prepare("SELECT source FROM *PREFIX*sharing WHERE target = ? AND uid_shared_with ".self::getUsersAndGroups($uid, false)." LIMIT 1");
+				$result = $checkTarget->execute(array($target))->fetchAll();
+				if (count($result) > 0) {
 					if ($pos = strrpos($target, ".")) {
 						$name = substr($target, 0, $pos);
 						$ext = substr($target, $pos);
@@ -87,12 +89,11 @@ class OC_Share {
 						$ext = "";
 					}
 					$counter = 1;
-					while ($checkTarget !== false) {
-						$newTarget = $name."_".$counter.$ext;
-						$checkTarget = self::getSource($newTarget);
+					while (count($result) > 0) {
+						$target = $name."_".$counter.$ext;
+						$result = $checkTarget->execute(array($target))->fetchAll();
 						$counter++;
 					}
-					$target = $newTarget;
 				}
 				if (isset($gid)) {
 					$uid = $uid."@".$gid;
-- 
GitLab