From ddf0903ace00d201e4575790d9e910b2bc24496b Mon Sep 17 00:00:00 2001
From: Georg Ehrke <dev@georgswebsite.de>
Date: Sun, 13 May 2012 20:03:27 +0200
Subject: [PATCH] add post user delete hook for calendar sharing

---
 apps/calendar/lib/hooks.php |  2 ++
 apps/calendar/lib/share.php | 17 +++++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/apps/calendar/lib/hooks.php b/apps/calendar/lib/hooks.php
index 22e8d8e20f..328d2951d2 100644
--- a/apps/calendar/lib/hooks.php
+++ b/apps/calendar/lib/hooks.php
@@ -22,6 +22,8 @@ class OC_Calendar_Hooks{
 			OC_Calendar_Calendar::deleteCalendar($calendar['id']);
 		}
 
+		OC_Calendar_Share::post_userdelete($parameters['uid']);
+
 		return true;
 	}
 }
diff --git a/apps/calendar/lib/share.php b/apps/calendar/lib/share.php
index 488495aefc..54c531892f 100755
--- a/apps/calendar/lib/share.php
+++ b/apps/calendar/lib/share.php
@@ -256,4 +256,21 @@ class OC_Calendar_Share{
 			$stmt = OCP\DB::prepare("UPDATE *PREFIX*calendar_share_calendar SET active = ? WHERE share = ? AND sharetype = 'user' AND calendarid = ?");
 			$stmt->execute(array($active, $share, $id));
 		}
+
+		/*
+		 * @brief delete all shared calendars / events after a user was deleted
+		 * @param (string) $userid
+		 * @return (bool)
+		 */
+		public static function post_userdelete($userid){			
+			$stmt = OCP\DB::prepare('DELETE FROM *PREFIX*calendar_share_calendar WHERE owner = ?');
+			$stmt->execute(array($userid));
+			$stmt = OCP\DB::prepare('DELETE FROM *PREFIX*calendar_share_event WHERE owner = ?');
+			$stmt->execute(array($userid));
+			$stmt = OCP\DB::prepare("DELETE FROM *PREFIX*calendar_share_calendar WHERE share = ? AND sharetype = 'user'");
+			$stmt->execute(array($userid));
+			$stmt = OCP\DB::prepare("DELETE FROM *PREFIX*calendar_share_event WHERE share = ? AND sharetype = 'user'");
+			$stmt->execute(array($userid));
+			return true;
+		}
 }
\ No newline at end of file
-- 
GitLab