From ecdd04374a4cabdf682e427b59619ef2e42d2997 Mon Sep 17 00:00:00 2001
From: Michael Kuhn <suraia@ikkoku.de>
Date: Sat, 26 Jul 2014 02:00:49 +0200
Subject: [PATCH] Allow specifying the item source in unshareFromSelf().

---
 lib/private/share/share.php | 13 +++++++------
 lib/public/share.php        |  4 ++--
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/lib/private/share/share.php b/lib/private/share/share.php
index 673c0dc383..80389625c6 100644
--- a/lib/private/share/share.php
+++ b/lib/private/share/share.php
@@ -718,23 +718,24 @@ class Share extends \OC\Share\Constants {
 	/**
 	 * Unshare an item shared with the current user
 	 * @param string $itemType
-	 * @param string $itemTarget
+	 * @param string $itemOrigin Item target or source
+	 * @param boolean $originIsSource true if $itemOrigin is the source, false if $itemOrigin is the target (optional)
 	 * @return boolean true on success or false on failure
 	 *
 	 * Unsharing from self is not allowed for items inside collections
 	 */
-	public static function unshareFromSelf($itemType, $itemTarget) {
-
+	public static function unshareFromSelf($itemType, $itemOrigin, $originIsSource = false) {
+		$originType = ($originIsSource) ? 'source' : 'target';
 		$uid = \OCP\User::getUser();
 
 		if ($itemType === 'file' || $itemType === 'folder') {
-			$statement = 'SELECT * FROM `*PREFIX*share` WHERE `item_type` = ? and `file_target` = ?';
+			$statement = 'SELECT * FROM `*PREFIX*share` WHERE `item_type` = ? and `file_' . $originType . '` = ?';
 		} else {
-			$statement = 'SELECT * FROM `*PREFIX*share` WHERE `item_type` = ? and `item_target` = ?';
+			$statement = 'SELECT * FROM `*PREFIX*share` WHERE `item_type` = ? and `item_' . $originType . '` = ?';
 		}
 
 		$query = \OCP\DB::prepare($statement);
-		$result = $query->execute(array($itemType, $itemTarget));
+		$result = $query->execute(array($itemType, $itemOrigin));
 
 		$shares = $result->fetchAll();
 
diff --git a/lib/public/share.php b/lib/public/share.php
index 8566a38c61..3a08fd59b7 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -265,8 +265,8 @@ class Share extends \OC\Share\Constants {
 	 *
 	 * Unsharing from self is not allowed for items inside collections
 	 */
-	public static function unshareFromSelf($itemType, $itemTarget) {
-		return \OC\Share\Share::unshareFromSelf($itemType, $itemTarget);
+	public static function unshareFromSelf($itemType, $itemOrigin, $originIsSource = false) {
+		return \OC\Share\Share::unshareFromSelf($itemType, $itemOrigin, $originIsSource);
 	}
 
 	/**
-- 
GitLab