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;
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 */
/** @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;
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;
}
}
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]);
$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]);
*/
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]);
}
}
}
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]);
}
}
$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]);
}
}
}
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]);
}
use OC\Hooks\PublicEmitter;
use OCP\EventDispatcher\IEventDispatcher;
+use OCP\Group\Events\BeforeGroupCreatedEvent;
+use OCP\Group\Events\GroupCreatedEvent;
use OCP\GroupInterface;
use OCP\ICacheFactory;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IUser;
use Psr\Log\LoggerInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
/**
* Class Manager
/** @var \OC\User\Manager */
private $userManager;
- /** @var EventDispatcherInterface */
- private $dispatcher;
+ private IEventDispatcher $dispatcher;
private LoggerInterface $logger;
/** @var \OC\Group\Group[] */
private DisplayNameCache $displayNameCache;
public function __construct(\OC\User\Manager $userManager,
- EventDispatcherInterface $dispatcher,
+ IEventDispatcher $dispatcher,
LoggerInterface $logger,
ICacheFactory $cacheFactory) {
$this->userManager = $userManager;
} elseif ($group = $this->get($gid)) {
return $group;
} else {
+ $this->dispatcher->dispatchTyped(new BeforeGroupCreatedEvent($gid));
$this->emit('\OC\Group', 'preCreate', [$gid]);
foreach ($this->backends as $backend) {
if ($backend->implementsActions(Backend::CREATE_GROUP)) {
if ($backend->createGroup($gid)) {
$group = $this->getGroupObject($gid);
+ $this->dispatcher->dispatchTyped(new GroupCreatedEvent($group));
$this->emit('\OC\Group', 'postCreate', [$group]);
return $group;
}
$this->userManager,
$this,
\OC::$server->getDatabaseConnection(),
- \OC::$server->get(IEventDispatcher::class)
+ $this->dispatcher
);
}
use OCP\Files\Template\ITemplateManager;
use OCP\FullTextSearch\IFullTextSearchManager;
use OCP\GlobalScale\IConfig;
-use OCP\Group\Events\BeforeGroupCreatedEvent;
-use OCP\Group\Events\BeforeGroupDeletedEvent;
-use OCP\Group\Events\BeforeUserAddedEvent;
-use OCP\Group\Events\BeforeUserRemovedEvent;
-use OCP\Group\Events\GroupCreatedEvent;
-use OCP\Group\Events\GroupDeletedEvent;
-use OCP\Group\Events\UserAddedEvent;
-use OCP\Group\Events\UserRemovedEvent;
use OCP\Group\ISubAdmin;
use OCP\Http\Client\IClientService;
use OCP\IAppConfig;
use OCP\SystemTag\ISystemTagObjectMapper;
use OCP\Talk\IBroker;
use OCP\Translation\ITranslationManager;
-use OCP\User\Events\BeforePasswordUpdatedEvent;
use OCP\User\Events\BeforeUserDeletedEvent;
use OCP\User\Events\BeforeUserLoggedInEvent;
use OCP\User\Events\BeforeUserLoggedInWithCookieEvent;
use OCP\User\Events\BeforeUserLoggedOutEvent;
-use OCP\User\Events\PasswordUpdatedEvent;
use OCP\User\Events\PostLoginEvent;
use OCP\User\Events\UserChangedEvent;
use OCP\User\Events\UserLoggedInEvent;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\GenericEvent;
use OCA\Files_External\Service\UserStoragesService;
use OCA\Files_External\Service\UserGlobalStoragesService;
use OCA\Files_External\Service\GlobalStoragesService;
$this->registerService(\OCP\IGroupManager::class, function (ContainerInterface $c) {
$groupManager = new \OC\Group\Manager(
$this->get(IUserManager::class),
- $c->get(SymfonyAdapter::class),
+ $this->get(IEventDispatcher::class),
$this->get(LoggerInterface::class),
$this->get(ICacheFactory::class)
);
- $groupManager->listen('\OC\Group', 'preCreate', function ($gid) {
- /** @var IEventDispatcher $dispatcher */
- $dispatcher = $this->get(IEventDispatcher::class);
- $dispatcher->dispatchTyped(new BeforeGroupCreatedEvent($gid));
- });
- $groupManager->listen('\OC\Group', 'postCreate', function (\OC\Group\Group $group) {
- /** @var IEventDispatcher $dispatcher */
- $dispatcher = $this->get(IEventDispatcher::class);
- $dispatcher->dispatchTyped(new GroupCreatedEvent($group));
- });
- $groupManager->listen('\OC\Group', 'preDelete', function (\OC\Group\Group $group) {
- /** @var IEventDispatcher $dispatcher */
- $dispatcher = $this->get(IEventDispatcher::class);
- $dispatcher->dispatchTyped(new BeforeGroupDeletedEvent($group));
- });
- $groupManager->listen('\OC\Group', 'postDelete', function (\OC\Group\Group $group) {
- /** @var IEventDispatcher $dispatcher */
- $dispatcher = $this->get(IEventDispatcher::class);
- $dispatcher->dispatchTyped(new GroupDeletedEvent($group));
- });
- $groupManager->listen('\OC\Group', 'preAddUser', function (\OC\Group\Group $group, \OC\User\User $user) {
- /** @var IEventDispatcher $dispatcher */
- $dispatcher = $this->get(IEventDispatcher::class);
- $dispatcher->dispatchTyped(new BeforeUserAddedEvent($group, $user));
- });
- $groupManager->listen('\OC\Group', 'postAddUser', function (\OC\Group\Group $group, \OC\User\User $user) {
- /** @var IEventDispatcher $dispatcher */
- $dispatcher = $this->get(IEventDispatcher::class);
- $dispatcher->dispatchTyped(new UserAddedEvent($group, $user));
- });
- $groupManager->listen('\OC\Group', 'preRemoveUser', function (\OC\Group\Group $group, \OC\User\User $user) {
- /** @var IEventDispatcher $dispatcher */
- $dispatcher = $this->get(IEventDispatcher::class);
- $dispatcher->dispatchTyped(new BeforeUserRemovedEvent($group, $user));
- });
- $groupManager->listen('\OC\Group', 'postRemoveUser', function (\OC\Group\Group $group, \OC\User\User $user) {
- /** @var IEventDispatcher $dispatcher */
- $dispatcher = $this->get(IEventDispatcher::class);
- $dispatcher->dispatchTyped(new UserRemovedEvent($group, $user));
- });
return $groupManager;
});
/** @deprecated 19.0.0 */
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IUser;
use PHPUnit\Framework\MockObject\MockObject;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class GroupTest extends \Test\TestCase {
- /** @var EventDispatcherInterface|MockObject */
+ /** @var IEventDispatcher|MockObject */
protected $dispatcher;
- /** @var EventDispatcherInterface|MockObject */
- protected $eventDispatcher;
protected function setUp(): void {
parent::setUp();
- $this->dispatcher = $this->createMock(EventDispatcherInterface::class);
- $this->eventDispatcher = $this->createMock(IEventDispatcher::class);
+ $this->dispatcher = $this->createMock(IEventDispatcher::class);
}
/**
$backend->expects($this->once())
->method('searchInGroup')
->with('group1', '2')
- ->willReturn(['user2' => new \OC\User\User('user2', null, $this->eventDispatcher)]);
+ ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]);
$users = $group->searchUsers('2');
$backend1->expects($this->once())
->method('searchInGroup')
->with('group1', '2')
- ->willReturn(['user2' => new \OC\User\User('user2', null, $this->eventDispatcher)]);
+ ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]);
$backend2->expects($this->once())
->method('searchInGroup')
->with('group1', '2')
- ->willReturn(['user2' => new \OC\User\User('user2', null, $this->eventDispatcher)]);
+ ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]);
$users = $group->searchUsers('2');
$backend->expects($this->once())
->method('searchInGroup')
->with('group1', 'user', 1, 1)
- ->willReturn(['user2' => new \OC\User\User('user2', null, $this->eventDispatcher)]);
+ ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]);
$users = $group->searchUsers('user', 1, 1);
$backend1->expects($this->once())
->method('searchInGroup')
->with('group1', 'user', 2, 1)
- ->willReturn(['user2' => new \OC\User\User('user2', null, $this->eventDispatcher)]);
+ ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]);
$backend2->expects($this->once())
->method('searchInGroup')
->with('group1', 'user', 2, 1)
- ->willReturn(['user1' => new \OC\User\User('user1', null, $this->eventDispatcher)]);
+ ->willReturn(['user1' => new \OC\User\User('user1', null, $this->dispatcher)]);
$users = $group->searchUsers('user', 2, 1);
use OCP\IUser;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Test\TestCase;
interface ISearchableGroupInterface extends ISearchableGroupBackend, GroupInterface {
class ManagerTest extends TestCase {
/** @var Manager|MockObject */
protected $userManager;
- /** @var EventDispatcherInterface|MockObject */
- protected $dispatcher;
/** @var IEventDispatcher|MockObject */
- protected $eventDispatcher;
+ protected $dispatcher;
/** @var LoggerInterface|MockObject */
protected $logger;
/** @var ICacheFactory|MockObject */
parent::setUp();
$this->userManager = $this->createMock(Manager::class);
- $this->dispatcher = $this->createMock(EventDispatcherInterface::class);
- $this->eventDispatcher = $this->createMock(IEventDispatcher::class);
+ $this->dispatcher = $this->createMock(IEventDispatcher::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->cache = $this->createMock(ICacheFactory::class);
}
$backend->expects($this->once())
->method('searchInGroup')
->with('testgroup', '', 1, 0)
- ->willReturn([new User('user2', null, $this->eventDispatcher)]);
+ ->willReturn([new User('user2', null, $this->dispatcher)]);
$this->userManager->expects($this->never())->method('get');