Skip to content

Commit

Permalink
get rid of generic events
Browse files Browse the repository at this point in the history
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
  • Loading branch information
ArtificialOwl committed Aug 8, 2023
1 parent 090f8a9 commit 1eab5ee
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 108 deletions.
104 changes: 13 additions & 91 deletions lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,11 @@
use OCA\Circles\Events\RemovingCircleMemberEvent;
use OCA\Circles\Events\RequestingCircleMemberEvent;
use OCA\Circles\Handlers\WebfingerHandler;
use OCA\Circles\Listeners\AccountUpdated as ListenerAccountUpdated;
use OCA\Circles\Listeners\AccountUpdated;
use OCA\Circles\Listeners\Files\AddingMemberSendMail as ListenerFilesAddingMemberSendMail;
use OCA\Circles\Listeners\Files\CreatingShareSendMail as ListenerFilesCreatingShareSendMail;
use OCA\Circles\Listeners\Files\DestroyingCircle as ListenerFilesDestroyingCircle;
use OCA\Circles\Listeners\Files\ListenerFilesLoadScripts;
use OCA\Circles\Listeners\Files\MemberAddedSendMail as ListenerFilesMemberAddedSendMail;
use OCA\Circles\Listeners\Files\PreparingMemberSendMail as ListenerFilesPreparingMemberSendMail;
use OCA\Circles\Listeners\Files\PreparingShareSendMail as ListenerFilesPreparingShareSendMail;
Expand All @@ -67,6 +68,7 @@
use OCA\Circles\Search\UnifiedSearchProvider;
use OCA\Circles\Service\ConfigService;
use OCA\Files\App as FilesApp;
use OCA\Files\Event\LoadAdditionalScriptsEvent;
use OCP\Accounts\UserUpdatedEvent;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
Expand All @@ -80,7 +82,6 @@
use OCP\IServerContainer;
use OCP\User\Events\UserCreatedEvent;
use OCP\User\Events\UserDeletedEvent;
use OCP\Util;
use Throwable;

/**
Expand All @@ -99,24 +100,12 @@ class Application extends App implements IBootstrap {

public const CLIENT_TIMEOUT = 3;

private ConfigService $configService;

/** @var ConfigService */
private $configService;


/**
* Application constructor.
*
* @param array $params
*/
public function __construct(array $params = []) {
parent::__construct(self::APP_ID, $params);
}


/**
* @param IRegistrationContext $context
*/
public function register(IRegistrationContext $context): void {
$context->registerCapability(Capabilities::class);

Expand All @@ -125,6 +114,7 @@ public function register(IRegistrationContext $context): void {

// User Events
$context->registerEventListener(UserCreatedEvent::class, UserCreated::class);
$context->registerEventListener(UserUpdatedEvent::class, AccountUpdated::class);
$context->registerEventListener(UserDeletedEvent::class, UserDeleted::class);

// Group Events
Expand All @@ -134,37 +124,16 @@ public function register(IRegistrationContext $context): void {
$context->registerEventListener(UserRemovedEvent::class, GroupMemberRemoved::class);

// Local Events (for Files/Shares/Notifications management)
$context->registerEventListener(
PreparingCircleMemberEvent::class,
ListenerFilesPreparingMemberSendMail::class
);
$context->registerEventListener(
AddingCircleMemberEvent::class,
ListenerFilesAddingMemberSendMail::class
);
$context->registerEventListener(
CircleMemberAddedEvent::class,
ListenerFilesMemberAddedSendMail::class
);
$context->registerEventListener(
PreparingFileShareEvent::class,
ListenerFilesPreparingShareSendMail::class
);
$context->registerEventListener(
CreatingFileShareEvent::class,
ListenerFilesCreatingShareSendMail::class
);
$context->registerEventListener(
FileShareCreatedEvent::class,
ListenerFilesShareCreatedSendMail::class
);
$context->registerEventListener(LoadAdditionalScriptsEvent::class, ListenerFilesLoadScripts::class);
$context->registerEventListener(PreparingCircleMemberEvent::class, ListenerFilesPreparingMemberSendMail::class);
$context->registerEventListener(AddingCircleMemberEvent::class, ListenerFilesAddingMemberSendMail::class);
$context->registerEventListener(CircleMemberAddedEvent::class, ListenerFilesMemberAddedSendMail::class);
$context->registerEventListener(PreparingFileShareEvent::class, ListenerFilesPreparingShareSendMail::class);
$context->registerEventListener(CreatingFileShareEvent::class, ListenerFilesCreatingShareSendMail::class);
$context->registerEventListener(FileShareCreatedEvent::class, ListenerFilesShareCreatedSendMail::class);
$context->registerEventListener(RemovingCircleMemberEvent::class, ListenerFilesRemovingMember::class);
$context->registerEventListener(
RequestingCircleMemberEvent::class,
ListenerNotificationsRequestingMember::class
);
$context->registerEventListener(RequestingCircleMemberEvent::class, ListenerNotificationsRequestingMember::class);
$context->registerEventListener(DestroyingCircleEvent::class, ListenerFilesDestroyingCircle::class);
$context->registerEventListener(UserUpdatedEvent::class, ListenerAccountUpdated::class);

$context->registerSearchProvider(UnifiedSearchProvider::class);
$context->registerWellKnownHandler(WebfingerHandler::class);
Expand All @@ -183,16 +152,10 @@ public function boot(IBootContext $context): void {
->get(ConfigService::class);

$context->injectFn(Closure::fromCallable([$this, 'registerMountProvider']));
// $context->injectFn(Closure::fromCallable([$this, 'registerDavHooks']));

$context->injectFn(Closure::fromCallable([$this, 'registerFilesNavigation']));
$context->injectFn(Closure::fromCallable([$this, 'registerFilesPlugin']));
}


/**
* @param IServerContainer $container
*/
public function registerMountProvider(IServerContainer $container) {
if (!$this->configService->isGSAvailable()) {
return;
Expand All @@ -202,47 +165,6 @@ public function registerMountProvider(IServerContainer $container) {
$mountProviderCollection->registerProvider($container->get(CircleMountProvider::class));
}


/**
* @deprecated - use CardCreatedEvent if this feature is made available again
* @param IServerContainer $container
*/
public function registerDavHooks(IServerContainer $container) {
if (!$this->configService->isContactsBackend()) {
return;
}

// /** @var DavService $davService */
// $davService = $container->get(DavService::class);
//
// $event = OC::$server->getEventDispatcher();
// $event->addListener(ManagerEvent::EVENT_APP_ENABLE, [$davService, 'onAppEnabled']);
// $event->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', [$davService, 'onCreateCard']);
// $event->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', [$davService, 'onUpdateCard']);
// $event->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', [$davService, 'onDeleteCard']);
}


/**
* @param IServerContainer $container
*/
public function registerFilesPlugin(IServerContainer $container) {
$eventDispatcher = $container->getEventDispatcher();
$eventDispatcher->addListener(
'OCA\Files::loadAdditionalScripts',
function () {
Util::addScript('circles', 'files/circles.files.app');
Util::addScript('circles', 'files/circles.files.list');

Util::addStyle('circles', 'files/circles.filelist');
}
);
}


/**
*
*/
public function registerFilesNavigation() {
$appManager = FilesApp::getNavigationManager();
$appManager->add(
Expand Down
27 changes: 10 additions & 17 deletions lib/Db/CoreQueryBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -1346,8 +1346,10 @@ protected function limitInitiatorVisibility(string $alias): ICompositeExpression
$aliasMembershipCircle = $this->generateAlias($aliasMembership, self::CONFIG, $options);
$levelCheck = [$aliasMembership];

$directMember = '';
if ($this->getBool('initiatorDirectMember', $options, false)) {
array_push($levelCheck, $this->generateAlias($alias, self::DIRECT_INITIATOR, $options));
$directMember = $this->generateAlias($alias, self::DIRECT_INITIATOR, $options);
array_push($levelCheck, $directMember);
}

$expr = $this->expr();
Expand Down Expand Up @@ -1395,6 +1397,13 @@ function (string $alias) use ($orXLevelCheck, $minimumLevel) {
}
$orX->add($andXMember);

if ($directMember !== '' && $this->getBool('allowRequestingMembership', $options, false)) {
$orX->add($expr->orX(
$this->exprLimit('status', Member::STATUS_REQUEST, $directMember),
$this->exprLimit('status', Member::STATUS_INVITED, $directMember)
));
}

if ($minimumLevel === 0 && $alias === self::CIRCLE) {
$orX->add($this->exprLimitBitwise('config', Circle::CFG_VISIBLE, $alias));
}
Expand Down Expand Up @@ -1424,22 +1433,6 @@ function (string $alias) use ($orXLevelCheck, $minimumLevel) {
$this->andWhere($orX);

return $orX;
// $orTypes = $this->generateLimit($qb, $circleUniqueId, $userId, $type, $name, $forceAll);
// if (sizeof($orTypes) === 0) {
// throw new ConfigNoCircleAvailableException(
// $this->l10n->t(
// 'You cannot use the Circles Application until your administrator has allowed at least one type of circles'
// )
// );
// }

// $orXTypes = $this->expr()
// ->orX();
// foreach ($orTypes as $orType) {
// $orXTypes->add($orType);
// }
//
// $qb->andWhere($orXTypes);
}


Expand Down
2 changes: 2 additions & 0 deletions lib/FederatedItems/MemberDisplayName.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
use OCA\Circles\Exceptions\MemberLevelException;
use OCA\Circles\IFederatedItem;
use OCA\Circles\IFederatedItemHighSeverity;
use OCA\Circles\IFederatedItemInitiatorMembershipNotRequired;
use OCA\Circles\IFederatedItemMemberEmpty;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Service\ConfigService;
Expand All @@ -53,6 +54,7 @@
class MemberDisplayName implements
IFederatedItem,
IFederatedItemHighSeverity,
IFederatedItemInitiatorMembershipNotRequired,
IFederatedItemMemberEmpty {
use TDeserialize;

Expand Down
51 changes: 51 additions & 0 deletions lib/Listeners/Files/ListenerFilesLoadScripts.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

declare(strict_types=1);

/**
* Circles - Bring cloud-users closer together.
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Maxence Lange <maxence@artificial-owl.com>
* @copyright 2023
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

namespace OCA\Circles\Listeners\Files;

use OCA\Files\Event\LoadAdditionalScriptsEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Util;

class ListenerFilesLoadScripts implements IEventListener {
public function __construct(
) {
}

public function handle(Event $event): void {
if (!$event instanceof LoadAdditionalScriptsEvent) {
return;
}

Util::addScript('circles', 'files/circles.files.app');
Util::addScript('circles', 'files/circles.files.list');
Util::addStyle('circles', 'files/circles.filelist');
}
}
1 change: 1 addition & 0 deletions psalm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
<referencedClass name="Doctrine\DBAL\Schema\SchemaException" />
<referencedClass name="OCA\Files\App" />
<referencedClass name="OCP\Accounts\UserUpdatedEvent" />
<referencedClass name="OCA\Files\Event\LoadAdditionalScriptsEvent" />
</errorLevel>
</UndefinedClass>
<UndefinedDocblockClass>
Expand Down

0 comments on commit 1eab5ee

Please sign in to comment.