diff --git a/lib/Dav/GroupMembershipCollection.php b/lib/Dav/GroupMembershipCollection.php index 73dc4d3e..4de1dd83 100644 --- a/lib/Dav/GroupMembershipCollection.php +++ b/lib/Dav/GroupMembershipCollection.php @@ -278,6 +278,10 @@ public function updateDisplayName($displayName) { return 409; } + $event = new GenericEvent(null, ['oldGroupName' => $this->groupInfo['display_name'], + 'newGroupName' => $displayName]); + $this->dispatcher->dispatch('updateGroupName', $event); + $result = $this->groupsHandler->updateGroup( $this->groupInfo['group_id'], $this->groupInfo['uri'], diff --git a/lib/Dav/MembershipNode.php b/lib/Dav/MembershipNode.php index 7c063627..b3a0611a 100644 --- a/lib/Dav/MembershipNode.php +++ b/lib/Dav/MembershipNode.php @@ -28,6 +28,7 @@ use Sabre\DAV\Exception\PreconditionFailed; use OCA\CustomGroups\Dav\Roles; use OCA\CustomGroups\Service\MembershipHelper; +use Symfony\Component\EventDispatcher\GenericEvent; /** * Membership node @@ -74,6 +75,11 @@ class MembershipNode implements \Sabre\DAV\INode, \Sabre\DAV\IProperties { */ private $name; + /** + * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface + */ + private $dispatcher; + /** * Constructor * @@ -94,6 +100,7 @@ public function __construct( $this->memberInfo = $memberInfo; $this->groupInfo = $groupInfo; $this->helper = $helper; + $this->dispatcher = \OC::$server->getEventDispatcher(); } /** @@ -131,6 +138,9 @@ public function delete() { // only notify when the removal was done by another user $this->helper->notifyUserRemoved($userId, $this->groupInfo, $this->memberInfo); } + + $event = new GenericEvent(null, ['user' => $currentUserId, 'groupName' => $this->groupInfo['display_name']]); + $this->dispatcher->dispatch('leaveGroup', $event); } /** diff --git a/lib/Service/MembershipHelper.php b/lib/Service/MembershipHelper.php index dac19847..c27ccdc2 100644 --- a/lib/Service/MembershipHelper.php +++ b/lib/Service/MembershipHelper.php @@ -22,6 +22,7 @@ namespace OCA\CustomGroups\Service; use OCA\CustomGroups\CustomGroupsDatabaseHandler; +use OCA\CustomGroups\Dav\Roles; use OCP\IUserSession; use OCP\IUserManager; use OCP\IGroupManager; @@ -315,6 +316,13 @@ public function notifyUserRoleChange($targetUserId, array $groupInfo, array $mem ->setUser($targetUserId) ->setLink($link); $this->notificationManager->notify($notification); + if($memberInfo['role'] === Roles::BACKEND_ROLE_MEMBER) { + $roleName = "Member"; + } elseif ($memberInfo['role'] === Roles::BACKEND_ROLE_ADMIN) { + $roleName = "Group owner"; + } + $event = new GenericEvent(null, ['user' => $targetUserId, 'groupName' => $groupInfo['display_name'], 'roleNumber' => $memberInfo['role'], 'roleDisaplayName' => $roleName]); + $this->dispatcher->dispatch('changeRoleInGroup', $event); } /**