|  |  | @ -34,6 +34,13 @@ namespace OC\Group; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | use OC\Hooks\PublicEmitter; | 
			
		
	
		
			
				
					|  |  |  | use OC\User\LazyUser; | 
			
		
	
		
			
				
					|  |  |  | use OCP\EventDispatcher\IEventDispatcher; | 
			
		
	
		
			
				
					|  |  |  | use OCP\Group\Events\BeforeGroupDeletedEvent; | 
			
		
	
		
			
				
					|  |  |  | use OCP\Group\Events\BeforeUserAddedEvent; | 
			
		
	
		
			
				
					|  |  |  | use OCP\Group\Events\BeforeUserRemovedEvent; | 
			
		
	
		
			
				
					|  |  |  | use OCP\Group\Events\GroupDeletedEvent; | 
			
		
	
		
			
				
					|  |  |  | use OCP\Group\Events\UserAddedEvent; | 
			
		
	
		
			
				
					|  |  |  | use OCP\Group\Events\UserRemovedEvent; | 
			
		
	
		
			
				
					|  |  |  | use OCP\GroupInterface; | 
			
		
	
		
			
				
					|  |  |  | use OCP\Group\Backend\ICountDisabledInGroup; | 
			
		
	
		
			
				
					|  |  |  | use OCP\Group\Backend\IGetDisplayNameBackend; | 
			
		
	
	
		
			
				
					|  |  | @ -46,8 +53,6 @@ use OCP\Group\Events\GroupChangedEvent; | 
			
		
	
		
			
				
					|  |  |  | use OCP\IGroup; | 
			
		
	
		
			
				
					|  |  |  | use OCP\IUser; | 
			
		
	
		
			
				
					|  |  |  | use OCP\IUserManager; | 
			
		
	
		
			
				
					|  |  |  | use Symfony\Component\EventDispatcher\EventDispatcherInterface; | 
			
		
	
		
			
				
					|  |  |  | use Symfony\Component\EventDispatcher\GenericEvent; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | class Group implements IGroup { | 
			
		
	
		
			
				
					|  |  |  | 	/** @var null|string  */ | 
			
		
	
	
		
			
				
					|  |  | @ -64,23 +69,14 @@ class Group implements IGroup { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	/** @var Backend[] */ | 
			
		
	
		
			
				
					|  |  |  | 	private $backends; | 
			
		
	
		
			
				
					|  |  |  | 	/** @var EventDispatcherInterface */ | 
			
		
	
		
			
				
					|  |  |  | 	/** @var IEventDispatcher */ | 
			
		
	
		
			
				
					|  |  |  | 	private $dispatcher; | 
			
		
	
		
			
				
					|  |  |  | 	/** @var \OC\User\Manager|IUserManager  */ | 
			
		
	
		
			
				
					|  |  |  | 	private $userManager; | 
			
		
	
		
			
				
					|  |  |  | 	/** @var PublicEmitter */ | 
			
		
	
		
			
				
					|  |  |  | 	private $emitter; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	/** | 
			
		
	
		
			
				
					|  |  |  | 	 * @param string $gid | 
			
		
	
		
			
				
					|  |  |  | 	 * @param Backend[] $backends | 
			
		
	
		
			
				
					|  |  |  | 	 * @param EventDispatcherInterface $dispatcher | 
			
		
	
		
			
				
					|  |  |  | 	 * @param IUserManager $userManager | 
			
		
	
		
			
				
					|  |  |  | 	 * @param PublicEmitter $emitter | 
			
		
	
		
			
				
					|  |  |  | 	 * @param string $displayName | 
			
		
	
		
			
				
					|  |  |  | 	 */ | 
			
		
	
		
			
				
					|  |  |  | 	public function __construct(string $gid, array $backends, EventDispatcherInterface $dispatcher, IUserManager $userManager, PublicEmitter $emitter = null, ?string $displayName = null) { | 
			
		
	
		
			
				
					|  |  |  | 	public function __construct(string $gid, array $backends, IEventDispatcher $dispatcher, IUserManager $userManager, PublicEmitter $emitter = null, ?string $displayName = null) { | 
			
		
	
		
			
				
					|  |  |  | 		$this->gid = $gid; | 
			
		
	
		
			
				
					|  |  |  | 		$this->backends = $backends; | 
			
		
	
		
			
				
					|  |  |  | 		$this->dispatcher = $dispatcher; | 
			
		
	
	
		
			
				
					|  |  | @ -112,12 +108,12 @@ class Group implements IGroup { | 
			
		
	
		
			
				
					|  |  |  | 	public function setDisplayName(string $displayName): bool { | 
			
		
	
		
			
				
					|  |  |  | 		$displayName = trim($displayName); | 
			
		
	
		
			
				
					|  |  |  | 		if ($displayName !== '') { | 
			
		
	
		
			
				
					|  |  |  | 			$this->dispatcher->dispatch(new BeforeGroupChangedEvent($this, 'displayName', $displayName, $this->displayName)); | 
			
		
	
		
			
				
					|  |  |  | 			$this->dispatcher->dispatchTyped(new BeforeGroupChangedEvent($this, 'displayName', $displayName, $this->displayName)); | 
			
		
	
		
			
				
					|  |  |  | 			foreach ($this->backends as $backend) { | 
			
		
	
		
			
				
					|  |  |  | 				if (($backend instanceof ISetDisplayNameBackend) | 
			
		
	
		
			
				
					|  |  |  | 					&& $backend->setDisplayName($this->gid, $displayName)) { | 
			
		
	
		
			
				
					|  |  |  | 					$this->displayName = $displayName; | 
			
		
	
		
			
				
					|  |  |  | 					$this->dispatcher->dispatch(new GroupChangedEvent($this, 'displayName', $displayName, '')); | 
			
		
	
		
			
				
					|  |  |  | 					$this->dispatcher->dispatchTyped(new GroupChangedEvent($this, 'displayName', $displayName, '')); | 
			
		
	
		
			
				
					|  |  |  | 					return true; | 
			
		
	
		
			
				
					|  |  |  | 				} | 
			
		
	
		
			
				
					|  |  |  | 			} | 
			
		
	
	
		
			
				
					|  |  | @ -180,9 +176,7 @@ class Group implements IGroup { | 
			
		
	
		
			
				
					|  |  |  | 			return; | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 		$this->dispatcher->dispatch(IGroup::class . '::preAddUser', new GenericEvent($this, [ | 
			
		
	
		
			
				
					|  |  |  | 			'user' => $user, | 
			
		
	
		
			
				
					|  |  |  | 		])); | 
			
		
	
		
			
				
					|  |  |  | 		$this->dispatcher->dispatchTyped(new BeforeUserAddedEvent($this, $user)); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 		if ($this->emitter) { | 
			
		
	
		
			
				
					|  |  |  | 			$this->emitter->emit('\OC\Group', 'preAddUser', [$this, $user]); | 
			
		
	
	
		
			
				
					|  |  | @ -194,9 +188,7 @@ class Group implements IGroup { | 
			
		
	
		
			
				
					|  |  |  | 					$this->users[$user->getUID()] = $user; | 
			
		
	
		
			
				
					|  |  |  | 				} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 				$this->dispatcher->dispatch(IGroup::class . '::postAddUser', new GenericEvent($this, [ | 
			
		
	
		
			
				
					|  |  |  | 					'user' => $user, | 
			
		
	
		
			
				
					|  |  |  | 				])); | 
			
		
	
		
			
				
					|  |  |  | 				$this->dispatcher->dispatchTyped(new UserAddedEvent($this, $user)); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 				if ($this->emitter) { | 
			
		
	
		
			
				
					|  |  |  | 					$this->emitter->emit('\OC\Group', 'postAddUser', [$this, $user]); | 
			
		
	
	
		
			
				
					|  |  | @ -213,9 +205,7 @@ class Group implements IGroup { | 
			
		
	
		
			
				
					|  |  |  | 	 */ | 
			
		
	
		
			
				
					|  |  |  | 	public function removeUser($user) { | 
			
		
	
		
			
				
					|  |  |  | 		$result = false; | 
			
		
	
		
			
				
					|  |  |  | 		$this->dispatcher->dispatch(IGroup::class . '::preRemoveUser', new GenericEvent($this, [ | 
			
		
	
		
			
				
					|  |  |  | 			'user' => $user, | 
			
		
	
		
			
				
					|  |  |  | 		])); | 
			
		
	
		
			
				
					|  |  |  | 		$this->dispatcher->dispatchTyped(new BeforeUserRemovedEvent($this, $user)); | 
			
		
	
		
			
				
					|  |  |  | 		if ($this->emitter) { | 
			
		
	
		
			
				
					|  |  |  | 			$this->emitter->emit('\OC\Group', 'preRemoveUser', [$this, $user]); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
	
		
			
				
					|  |  | @ -226,9 +216,7 @@ class Group implements IGroup { | 
			
		
	
		
			
				
					|  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		if ($result) { | 
			
		
	
		
			
				
					|  |  |  | 			$this->dispatcher->dispatch(IGroup::class . '::postRemoveUser', new GenericEvent($this, [ | 
			
		
	
		
			
				
					|  |  |  | 				'user' => $user, | 
			
		
	
		
			
				
					|  |  |  | 			])); | 
			
		
	
		
			
				
					|  |  |  | 			$this->dispatcher->dispatchTyped(new UserRemovedEvent($this, $user)); | 
			
		
	
		
			
				
					|  |  |  | 			if ($this->emitter) { | 
			
		
	
		
			
				
					|  |  |  | 				$this->emitter->emit('\OC\Group', 'postRemoveUser', [$this, $user]); | 
			
		
	
		
			
				
					|  |  |  | 			} | 
			
		
	
	
		
			
				
					|  |  | @ -352,7 +340,7 @@ class Group implements IGroup { | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 		$result = false; | 
			
		
	
		
			
				
					|  |  |  | 		$this->dispatcher->dispatch(IGroup::class . '::preDelete', new GenericEvent($this)); | 
			
		
	
		
			
				
					|  |  |  | 		$this->dispatcher->dispatchTyped(new BeforeGroupDeletedEvent($this)); | 
			
		
	
		
			
				
					|  |  |  | 		if ($this->emitter) { | 
			
		
	
		
			
				
					|  |  |  | 			$this->emitter->emit('\OC\Group', 'preDelete', [$this]); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
	
		
			
				
					|  |  | @ -362,7 +350,7 @@ class Group implements IGroup { | 
			
		
	
		
			
				
					|  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		if ($result) { | 
			
		
	
		
			
				
					|  |  |  | 			$this->dispatcher->dispatch(IGroup::class . '::postDelete', new GenericEvent($this)); | 
			
		
	
		
			
				
					|  |  |  | 			$this->dispatcher->dispatchTyped(new GroupDeletedEvent($this)); | 
			
		
	
		
			
				
					|  |  |  | 			if ($this->emitter) { | 
			
		
	
		
			
				
					|  |  |  | 				$this->emitter->emit('\OC\Group', 'postDelete', [$this]); | 
			
		
	
		
			
				
					|  |  |  | 			} | 
			
		
	
	
		
			
				
					|  |  | 
 |