From 4c065deb55b1c61059c7693c5861a68869758607 Mon Sep 17 00:00:00 2001
From: Michael Gapczynski <mtgap@owncloud.com>
Date: Sun, 2 Sep 2012 20:01:09 -0400
Subject: [PATCH] Listen to post_deleteGroup hook in Share API

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

diff --git a/lib/public/share.php b/lib/public/share.php
index a7a47ee14c..7b6b78561d 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -23,6 +23,7 @@ namespace OCP;
 \OC_Hook::connect('OC_User', 'post_deleteUser', 'OCP\Share', 'post_deleteUser');
 \OC_Hook::connect('OC_User', 'post_addToGroup', 'OCP\Share', 'post_addToGroup');
 \OC_Hook::connect('OC_User', 'post_removeFromGroup', 'OCP\Share', 'post_removeFromGroup');
+\OC_Hook::connect('OC_User', 'post_deleteGroup', 'OCP\Share', 'post_deleteGroup');
 
 /**
 * This class provides the ability for apps to share their content between users.
@@ -1069,6 +1070,14 @@ class Share {
 		}
 	}
 
+	public static function post_deleteGroup($arguments) {
+		$query = \OC_DB::prepare('SELECT id FROM `*PREFIX*share` WHERE `share_type` = ? AND `share_with` = ?');
+		$result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid']));
+		while ($item = $result->fetchRow()) {
+			self::delete($item['id']);
+		}
+	}
+
 }
 
 /**
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php
index 082e265571..b45779038b 100644
--- a/tests/lib/share/share.php
+++ b/tests/lib/share/share.php
@@ -384,6 +384,10 @@ class Test_Share extends UnitTestCase {
 		$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test.txt'));
 		
 		// Remove group
+		OC_Group::deleteGroup($this->group1);
+		$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array());
+		OC_User::setUserId($this->user3);
+		$this->assertEqual(OCP\Share::getItemsShared('test'), array());
 	}
 
 }
-- 
GitLab