Move full text search to proper events
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
@@ -31,7 +31,7 @@ use OCA\Deck\Db\Assignment;
|
||||
use OCA\Deck\Db\AssignmentMapper;
|
||||
use OCA\Deck\Db\CardMapper;
|
||||
use OCA\Deck\Db\ChangeHelper;
|
||||
use OCA\Deck\Event\FTSEvent;
|
||||
use OCA\Deck\Event\CardUpdatedEvent;
|
||||
use OCA\Deck\NoPermissionException;
|
||||
use OCA\Deck\NotFoundException;
|
||||
use OCA\Deck\Notification\NotificationHelper;
|
||||
@@ -151,9 +151,7 @@ class AssignmentService {
|
||||
$this->changeHelper->cardChanged($cardId);
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_USER_ASSIGN, ['assigneduser' => $userId]);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onUpdate', new FTSEvent(null, ['id' => $cardId, 'card' => $card])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
|
||||
|
||||
return $assignment;
|
||||
}
|
||||
@@ -187,9 +185,7 @@ class AssignmentService {
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_USER_UNASSIGN, ['assigneduser' => $userId]);
|
||||
$this->changeHelper->cardChanged($cardId);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onUpdate', new FTSEvent(null, ['id' => $cardId, 'card' => $card])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
|
||||
|
||||
return $assignment;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
|
||||
namespace OCA\Deck\Service;
|
||||
|
||||
use OC\EventDispatcher\SymfonyAdapter;
|
||||
use OCA\Deck\Activity\ActivityManager;
|
||||
use OCA\Deck\Activity\ChangeSet;
|
||||
use OCA\Deck\AppInfo\Application;
|
||||
@@ -36,9 +35,13 @@ use OCA\Deck\Db\IPermissionMapper;
|
||||
use OCA\Deck\Db\Label;
|
||||
use OCA\Deck\Db\Stack;
|
||||
use OCA\Deck\Db\StackMapper;
|
||||
use OCA\Deck\Event\AclCreatedEvent;
|
||||
use OCA\Deck\Event\AclDeletedEvent;
|
||||
use OCA\Deck\Event\AclUpdatedEvent;
|
||||
use OCA\Deck\NoPermissionException;
|
||||
use OCA\Deck\Notification\NotificationHelper;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\IConfig;
|
||||
use OCP\IGroupManager;
|
||||
use OCP\IL10N;
|
||||
@@ -47,7 +50,6 @@ use OCA\Deck\Db\BoardMapper;
|
||||
use OCA\Deck\Db\LabelMapper;
|
||||
use OCP\IUserManager;
|
||||
use OCA\Deck\BadRequestException;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
|
||||
class BoardService {
|
||||
private $boardMapper;
|
||||
@@ -83,7 +85,7 @@ class BoardService {
|
||||
IUserManager $userManager,
|
||||
IGroupManager $groupManager,
|
||||
ActivityManager $activityManager,
|
||||
SymfonyAdapter $eventDispatcher,
|
||||
IEventDispatcher $eventDispatcher,
|
||||
ChangeHelper $changeHelper,
|
||||
$userId
|
||||
) {
|
||||
@@ -327,13 +329,6 @@ class BoardService {
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $new_board, ActivityManager::SUBJECT_BOARD_CREATE, [], $userId);
|
||||
$this->changeHelper->boardChanged($new_board->getId());
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Board::onCreate',
|
||||
new GenericEvent(
|
||||
null, ['id' => $new_board->getId(), 'userId' => $userId, 'board' => $new_board]
|
||||
)
|
||||
);
|
||||
|
||||
return $new_board;
|
||||
}
|
||||
|
||||
@@ -360,10 +355,6 @@ class BoardService {
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $board, ActivityManager::SUBJECT_BOARD_DELETE);
|
||||
$this->changeHelper->boardChanged($board->getId());
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Board::onDelete', new GenericEvent(null, ['id' => $id])
|
||||
);
|
||||
|
||||
return $board;
|
||||
}
|
||||
|
||||
@@ -386,10 +377,6 @@ class BoardService {
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $board, ActivityManager::SUBJECT_BOARD_RESTORE);
|
||||
$this->changeHelper->boardChanged($board->getId());
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Board::onUpdate', new GenericEvent(null, ['id' => $id, 'board' => $board])
|
||||
);
|
||||
|
||||
return $board;
|
||||
}
|
||||
|
||||
@@ -410,10 +397,6 @@ class BoardService {
|
||||
$board = $this->find($id);
|
||||
$delete = $this->boardMapper->delete($board);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Board::onDelete', new GenericEvent(null, ['id' => $id])
|
||||
);
|
||||
|
||||
return $delete;
|
||||
}
|
||||
|
||||
@@ -457,10 +440,6 @@ class BoardService {
|
||||
$this->activityManager->triggerUpdateEvents(ActivityManager::DECK_OBJECT_BOARD, $changes, ActivityManager::SUBJECT_BOARD_UPDATE);
|
||||
$this->changeHelper->boardChanged($board->getId());
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Board::onUpdate', new GenericEvent(null, ['id' => $id, 'board' => $board])
|
||||
);
|
||||
|
||||
return $board;
|
||||
}
|
||||
|
||||
@@ -541,18 +520,13 @@ class BoardService {
|
||||
$this->changeHelper->boardChanged($boardId);
|
||||
|
||||
// TODO: use the dispatched event for this
|
||||
$version = \OCP\Util::getVersion()[0];
|
||||
if ($version >= 16) {
|
||||
try {
|
||||
$resourceProvider = \OC::$server->query(\OCA\Deck\Collaboration\Resources\ResourceProvider::class);
|
||||
$resourceProvider->invalidateAccessCache($boardId);
|
||||
} catch (\Exception $e) {
|
||||
}
|
||||
try {
|
||||
$resourceProvider = \OC::$server->query(\OCA\Deck\Collaboration\Resources\ResourceProvider::class);
|
||||
$resourceProvider->invalidateAccessCache($boardId);
|
||||
} catch (\Exception $e) {
|
||||
}
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Board::onShareNew', new GenericEvent(null, ['id' => $newAcl->getId(), 'acl' => $newAcl, 'boardId' => $boardId])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new AclCreatedEvent($acl));
|
||||
|
||||
return $newAcl;
|
||||
}
|
||||
@@ -597,9 +571,7 @@ class BoardService {
|
||||
$board = $this->aclMapper->update($acl);
|
||||
$this->changeHelper->boardChanged($acl->getBoardId());
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Board::onShareEdit', new GenericEvent(null, ['id' => $id, 'boardId' => $acl->getBoardId(), 'acl' => $acl])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new AclUpdatedEvent($acl));
|
||||
|
||||
return $board;
|
||||
}
|
||||
@@ -640,9 +612,7 @@ class BoardService {
|
||||
}
|
||||
$delete = $this->aclMapper->delete($acl);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Board::onShareDelete', new GenericEvent(null, ['id' => $id, 'boardId' => $acl->getBoardId(), 'acl' => $acl])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new AclDeletedEvent($acl));
|
||||
|
||||
return $delete;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,9 @@ use OCA\Deck\Db\CardMapper;
|
||||
use OCA\Deck\Db\Acl;
|
||||
use OCA\Deck\Db\ChangeHelper;
|
||||
use OCA\Deck\Db\StackMapper;
|
||||
use OCA\Deck\Event\FTSEvent;
|
||||
use OCA\Deck\Event\CardCreatedEvent;
|
||||
use OCA\Deck\Event\CardDeletedEvent;
|
||||
use OCA\Deck\Event\CardUpdatedEvent;
|
||||
use OCA\Deck\Notification\NotificationHelper;
|
||||
use OCA\Deck\Db\BoardMapper;
|
||||
use OCA\Deck\Db\LabelMapper;
|
||||
@@ -222,15 +224,10 @@ class CardService {
|
||||
$card->setDescription($description);
|
||||
$card->setDuedate($duedate);
|
||||
$card = $this->cardMapper->insert($card);
|
||||
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_CREATE);
|
||||
$this->changeHelper->cardChanged($card->getId(), false);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onCreate',
|
||||
new FTSEvent(
|
||||
null, ['id' => $card->getId(), 'card' => $card, 'userId' => $owner, 'stackId' => $stackId]
|
||||
)
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardCreatedEvent($card));
|
||||
|
||||
return $card;
|
||||
}
|
||||
@@ -256,12 +253,10 @@ class CardService {
|
||||
$card = $this->cardMapper->find($id);
|
||||
$card->setDeletedAt(time());
|
||||
$this->cardMapper->update($card);
|
||||
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_DELETE);
|
||||
$this->changeHelper->cardChanged($card->getId(), false);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onDelete', new FTSEvent(null, ['id' => $id, 'card' => $card])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardDeletedEvent($card));
|
||||
|
||||
return $card;
|
||||
}
|
||||
@@ -360,9 +355,7 @@ class CardService {
|
||||
$card = $this->cardMapper->update($card);
|
||||
$this->changeHelper->cardChanged($card->getId(), true);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onUpdate', new FTSEvent(null, ['id' => $id, 'card' => $card])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
|
||||
|
||||
return $card;
|
||||
}
|
||||
@@ -402,9 +395,7 @@ class CardService {
|
||||
$this->changeHelper->cardChanged($card->getId(), false);
|
||||
$update = $this->cardMapper->update($card);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onUpdate', new FTSEvent(null, ['id' => $id, 'card' => $card])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
|
||||
|
||||
return $update;
|
||||
}
|
||||
@@ -501,9 +492,7 @@ class CardService {
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $newCard, ActivityManager::SUBJECT_CARD_UPDATE_ARCHIVE);
|
||||
$this->changeHelper->cardChanged($id, false);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onUpdate', new FTSEvent(null, ['id' => $id, 'card' => $card])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
|
||||
|
||||
return $newCard;
|
||||
}
|
||||
@@ -532,9 +521,7 @@ class CardService {
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $newCard, ActivityManager::SUBJECT_CARD_UPDATE_UNARCHIVE);
|
||||
$this->changeHelper->cardChanged($id, false);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onUpdate', new FTSEvent(null, ['id' => $id, 'card' => $card])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
|
||||
|
||||
return $newCard;
|
||||
}
|
||||
@@ -570,9 +557,7 @@ class CardService {
|
||||
$this->changeHelper->cardChanged($cardId);
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_LABEL_ASSIGN, ['label' => $label]);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onUpdate', new FTSEvent(null, ['id' => $cardId, 'card' => $card])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -606,9 +591,7 @@ class CardService {
|
||||
$this->changeHelper->cardChanged($cardId);
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_LABEL_UNASSING, ['label' => $label]);
|
||||
|
||||
$this->eventDispatcher->dispatch(
|
||||
'\OCA\Deck\Card::onUpdate', new FTSEvent(null, ['id' => $cardId, 'card' => $card])
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -37,14 +37,10 @@ use OCA\Deck\Db\Card;
|
||||
use OCA\Deck\Db\CardMapper;
|
||||
use OCA\Deck\Db\Stack;
|
||||
use OCA\Deck\Db\StackMapper;
|
||||
use OCA\Deck\Event\FTSEvent;
|
||||
use OCA\Deck\Provider\DeckProvider;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
|
||||
use OCP\FullTextSearch\Exceptions\FullTextSearchAppNotAvailableException;
|
||||
use OCP\FullTextSearch\IFullTextSearchManager;
|
||||
use OCP\FullTextSearch\Model\IDocumentAccess;
|
||||
use OCP\FullTextSearch\Model\IIndex;
|
||||
use OCP\FullTextSearch\Model\IIndexDocument;
|
||||
|
||||
/**
|
||||
@@ -63,98 +59,15 @@ class FullTextSearchService {
|
||||
|
||||
/** @var CardMapper */
|
||||
private $cardMapper;
|
||||
|
||||
/** @var IFullTextSearchManager */
|
||||
private $fullTextSearchManager;
|
||||
|
||||
|
||||
/**
|
||||
* FullTextSearchService constructor.
|
||||
*
|
||||
* @param BoardMapper $boardMapper
|
||||
* @param StackMapper $stackMapper
|
||||
* @param CardMapper $cardMapper
|
||||
* @param IFullTextSearchManager $fullTextSearchManager
|
||||
*/
|
||||
|
||||
public function __construct(
|
||||
BoardMapper $boardMapper, StackMapper $stackMapper, CardMapper $cardMapper,
|
||||
IFullTextSearchManager $fullTextSearchManager
|
||||
BoardMapper $boardMapper, StackMapper $stackMapper, CardMapper $cardMapper
|
||||
) {
|
||||
$this->boardMapper = $boardMapper;
|
||||
$this->stackMapper = $stackMapper;
|
||||
$this->cardMapper = $cardMapper;
|
||||
|
||||
$this->fullTextSearchManager = $fullTextSearchManager;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param FTSEvent $e
|
||||
*/
|
||||
public function onCardCreated(FTSEvent $e) {
|
||||
$cardId = $e->getArgument('id');
|
||||
$userId = $e->getArgument('userId');
|
||||
|
||||
try {
|
||||
$this->fullTextSearchManager->createIndex(
|
||||
DeckProvider::DECK_PROVIDER_ID, (string)$cardId, $userId, IIndex::INDEX_FULL
|
||||
);
|
||||
} catch (FullTextSearchAppNotAvailableException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param FTSEvent $e
|
||||
*/
|
||||
public function onCardUpdated(FTSEvent $e) {
|
||||
$cardId = $e->getArgument('id');
|
||||
|
||||
try {
|
||||
$this->fullTextSearchManager->updateIndexStatus(
|
||||
DeckProvider::DECK_PROVIDER_ID, (string)$cardId, IIndex::INDEX_CONTENT
|
||||
);
|
||||
} catch (FullTextSearchAppNotAvailableException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param FTSEvent $e
|
||||
*/
|
||||
public function onCardDeleted(FTSEvent $e) {
|
||||
$cardId = $e->getArgument('id');
|
||||
|
||||
try {
|
||||
$this->fullTextSearchManager->updateIndexStatus(
|
||||
DeckProvider::DECK_PROVIDER_ID, (string)$cardId, IIndex::INDEX_REMOVE
|
||||
);
|
||||
} catch (FullTextSearchAppNotAvailableException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param FTSEvent $e
|
||||
*/
|
||||
public function onBoardShares(FTSEvent $e) {
|
||||
$boardId = (int)$e->getArgument('boardId');
|
||||
|
||||
$cards = array_map(
|
||||
function (Card $item) {
|
||||
return $item->getId();
|
||||
},
|
||||
$this->getCardsFromBoard($boardId)
|
||||
);
|
||||
try {
|
||||
$this->fullTextSearchManager->updateIndexesStatus(
|
||||
DeckProvider::DECK_PROVIDER_ID, $cards, IIndex::INDEX_META
|
||||
);
|
||||
} catch (FullTextSearchAppNotAvailableException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Card $card
|
||||
*
|
||||
@@ -175,11 +88,9 @@ class FullTextSearchService {
|
||||
* @throws MultipleObjectsReturnedException
|
||||
*/
|
||||
public function fillIndexDocument(IIndexDocument $document) {
|
||||
/** @var Card $card */
|
||||
$card = $this->cardMapper->find((int)$document->getId());
|
||||
|
||||
$document->setTitle(($card->getTitle() === null) ? '' : $card->getTitle());
|
||||
$document->setContent(($card->getDescription() === null) ? '' : $card->getDescription());
|
||||
$document->setTitle(!empty($card->getTitle()) ? $card->getTitle() : '');
|
||||
$document->setContent(!empty($card->getDescription()) ? $card->getDescription() : '');
|
||||
$document->setAccess($this->generateDocumentAccessFromCardId((int)$card->getId()));
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
|
||||
namespace OCA\Deck\Service;
|
||||
|
||||
use OC\EventDispatcher\SymfonyAdapter;
|
||||
use OCA\Deck\Activity\ActivityManager;
|
||||
use OCA\Deck\Activity\ChangeSet;
|
||||
use OCA\Deck\BadRequestException;
|
||||
@@ -37,7 +36,6 @@ use OCA\Deck\Db\LabelMapper;
|
||||
use OCA\Deck\Db\Stack;
|
||||
use OCA\Deck\Db\StackMapper;
|
||||
use OCA\Deck\StatusException;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
|
||||
class StackService {
|
||||
private $stackMapper;
|
||||
@@ -64,7 +62,6 @@ class StackService {
|
||||
AssignmentMapper $assignedUsersMapper,
|
||||
AttachmentService $attachmentService,
|
||||
ActivityManager $activityManager,
|
||||
SymfonyAdapter $eventDispatcher,
|
||||
ChangeHelper $changeHelper
|
||||
) {
|
||||
$this->stackMapper = $stackMapper;
|
||||
@@ -77,7 +74,6 @@ class StackService {
|
||||
$this->assignedUsersMapper = $assignedUsersMapper;
|
||||
$this->attachmentService = $attachmentService;
|
||||
$this->activityManager = $activityManager;
|
||||
$this->symfonyAdapter = $eventDispatcher;
|
||||
$this->changeHelper = $changeHelper;
|
||||
}
|
||||
|
||||
@@ -225,11 +221,6 @@ class StackService {
|
||||
);
|
||||
$this->changeHelper->boardChanged($boardId);
|
||||
|
||||
$this->symfonyAdapter->dispatch(
|
||||
'\OCA\Deck\Stack::onCreate',
|
||||
new GenericEvent(null, ['id' => $stack->getId(), 'stack' => $stack])
|
||||
);
|
||||
|
||||
return $stack;
|
||||
}
|
||||
|
||||
@@ -259,10 +250,6 @@ class StackService {
|
||||
$this->changeHelper->boardChanged($stack->getBoardId());
|
||||
$this->enrichStackWithCards($stack);
|
||||
|
||||
$this->symfonyAdapter->dispatch(
|
||||
'\OCA\Deck\Stack::onDelete', new GenericEvent(null, ['id' => $id, 'stack' => $stack])
|
||||
);
|
||||
|
||||
return $stack;
|
||||
}
|
||||
|
||||
@@ -314,10 +301,6 @@ class StackService {
|
||||
);
|
||||
$this->changeHelper->boardChanged($stack->getBoardId());
|
||||
|
||||
$this->symfonyAdapter->dispatch(
|
||||
'\OCA\Deck\Stack::onUpdate', new GenericEvent(null, ['id' => $id, 'stack' => $stack])
|
||||
);
|
||||
|
||||
return $stack;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user