From b7bf28d1c72cbd51ae53e0528f593e0d4c6bf743 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20H=C3=BClsmann?= <fh@cbix.de>
Date: Fri, 26 Oct 2012 20:53:32 +0200
Subject: [PATCH] Hook emission on sharing stuff

---
 lib/public/share.php | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/lib/public/share.php b/lib/public/share.php
index d27802b52f..7a9a087d1b 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -28,6 +28,9 @@ namespace OCP;
 /**
 * This class provides the ability for apps to share their content between users.
 * Apps must create a backend class that implements OCP\Share_Backend and register it with this class.
+* 
+* It provides the following hooks:
+*  - post_shared
 */
 class Share {
 
@@ -937,7 +940,20 @@ class Share {
 				// Insert an extra row for the group share if the item or file target is unique for this user
 				if ($itemTarget != $groupItemTarget || (isset($fileSource) && $fileTarget != $groupFileTarget)) {
 					$query->execute(array($itemType, $itemSource, $itemTarget, $parent, self::$shareTypeGroupUserUnique, $uid, $uidOwner, $permissions, time(), $fileSource, $fileTarget));
-					\OC_DB::insertid('*PREFIX*share');
+					$id = \OC_DB::insertid('*PREFIX*share');
+					\OC_Hook::emit('OCP\Share', 'post_shared', array(
+						'itemType' => $itemType,
+						'itemSource' => $itemSource,
+						'itemTarget' => $itemTarget,
+						'parent' => $parent,
+						'shareType' => self::$shareTypeGroupUserUnique,
+						'shareWith' => $uid,
+						'uidOwner' => $uidOwner,
+						'permissions' => $permissions,
+						'fileSource' => $fileSource,
+						'fileTarget' => $fileTarget,
+						'id' => $id
+					));
 				}
 			}
 			if ($parentFolder === true) {
@@ -963,6 +979,19 @@ class Share {
 			}
 			$query->execute(array($itemType, $itemSource, $itemTarget, $parent, $shareType, $shareWith, $uidOwner, $permissions, time(), $fileSource, $fileTarget));
 			$id = \OC_DB::insertid('*PREFIX*share');
+			\OC_Hook::emit('OCP\Share', 'post_shared', array(
+				'itemType' => $itemType,
+				'itemSource' => $itemSource,
+				'itemTarget' => $itemTarget,
+				'parent' => $parent,
+				'shareType' => $shareType,
+				'shareWith' => $shareWith,
+				'uidOwner' => $uidOwner,
+				'permissions' => $permissions,
+				'fileSource' => $fileSource,
+				'fileTarget' => $fileTarget,
+				'id' => $id
+			));
 			if ($parentFolder === true) {
 				$parentFolders['id'] = $id;
 				// Return parent folder to preserve file target paths for potential children
-- 
GitLab