From efd1e11f31d17352994d63619ba3e5f73a24d9a2 Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Mon, 14 Aug 2023 18:05:14 -0700 Subject: [PATCH 1/3] fix(files_reminders): Allow non-admin Signed-off-by: Christopher Ng --- apps/files_reminders/lib/Controller/ApiController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/files_reminders/lib/Controller/ApiController.php b/apps/files_reminders/lib/Controller/ApiController.php index 873088177c195..ed23ee032ba46 100644 --- a/apps/files_reminders/lib/Controller/ApiController.php +++ b/apps/files_reminders/lib/Controller/ApiController.php @@ -34,6 +34,7 @@ use OCA\FilesReminders\Service\ReminderService; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCSController; use OCP\IRequest; @@ -54,6 +55,7 @@ public function __construct( /** * Get a reminder */ + #[NoAdminRequired] public function get(int $fileId): DataResponse { $user = $this->userSession->getUser(); if ($user === null) { @@ -79,6 +81,7 @@ public function get(int $fileId): DataResponse { * * @param string $dueDate ISO 8601 formatted date time string */ + #[NoAdminRequired] public function set(int $fileId, string $dueDate): DataResponse { try { $dueDate = (new DateTime($dueDate))->setTimezone(new DateTimeZone('UTC')); @@ -106,6 +109,7 @@ public function set(int $fileId, string $dueDate): DataResponse { /** * Remove a reminder */ + #[NoAdminRequired] public function remove(int $fileId): DataResponse { $user = $this->userSession->getUser(); if ($user === null) { From 6f879f24dbd76676d27c8a3aad327a8f9b49e24b Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Mon, 14 Aug 2023 18:07:03 -0700 Subject: [PATCH 2/3] fix(files_reminders): Always respect json output option Signed-off-by: Christopher Ng --- apps/files_reminders/lib/Command/ListCommand.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/files_reminders/lib/Command/ListCommand.php b/apps/files_reminders/lib/Command/ListCommand.php index 3f3ce13b8578a..f9113e1560503 100644 --- a/apps/files_reminders/lib/Command/ListCommand.php +++ b/apps/files_reminders/lib/Command/ListCommand.php @@ -77,10 +77,6 @@ protected function execute(InputInterface $input, OutputInterface $output): int } $reminders = $this->reminderService->getAll($user ?? null); - if (empty($reminders)) { - $io->text('No reminders'); - return 0; - } $outputOption = $input->getOption('output'); switch ($outputOption) { @@ -97,6 +93,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int ); return 0; default: + if (empty($reminders)) { + $io->text('No reminders'); + return 0; + } + $io->table( ['User Id', 'File Id', 'Path', 'Due Date', 'Updated At', 'Created At', 'Notified'], array_map( From 95688ea41291ab9e2dbb80bacea20be0c16d0774 Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Mon, 14 Aug 2023 18:09:24 -0700 Subject: [PATCH 3/3] fix(files_reminders): Delete reminders on node deleted Signed-off-by: Christopher Ng --- apps/files_reminders/lib/Db/ReminderMapper.php | 9 ++++++++- .../files_reminders/lib/Listener/NodeDeletedListener.php | 6 ------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/apps/files_reminders/lib/Db/ReminderMapper.php b/apps/files_reminders/lib/Db/ReminderMapper.php index 1a8f05a3db958..3f7fc04b2f08c 100644 --- a/apps/files_reminders/lib/Db/ReminderMapper.php +++ b/apps/files_reminders/lib/Db/ReminderMapper.php @@ -31,6 +31,7 @@ use OCP\AppFramework\Db\QBMapper; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Files\Node; +use OCP\Files\NotFoundException; use OCP\IDBConnection; use OCP\IUser; @@ -111,11 +112,17 @@ public function findAllForUser(IUser $user) { * @return Reminder[] */ public function findAllForNode(Node $node) { + try { + $nodeId = $node->getId(); + } catch (NotFoundException $e) { + return []; + } + $qb = $this->db->getQueryBuilder(); $qb->select('id', 'user_id', 'file_id', 'due_date', 'updated_at', 'created_at', 'notified') ->from($this->getTableName()) - ->where($qb->expr()->eq('file_id', $qb->createNamedParameter($node->getId(), IQueryBuilder::PARAM_INT))) + ->where($qb->expr()->eq('file_id', $qb->createNamedParameter($nodeId, IQueryBuilder::PARAM_INT))) ->orderBy('due_date', 'ASC'); return $this->findEntities($qb); diff --git a/apps/files_reminders/lib/Listener/NodeDeletedListener.php b/apps/files_reminders/lib/Listener/NodeDeletedListener.php index 460ddfd4abe78..88aed08bba82f 100644 --- a/apps/files_reminders/lib/Listener/NodeDeletedListener.php +++ b/apps/files_reminders/lib/Listener/NodeDeletedListener.php @@ -26,8 +26,6 @@ namespace OCA\FilesReminders\Listener; -use OC\Files\Node\NonExistingFile; -use OC\Files\Node\NonExistingFolder; use OCA\FilesReminders\Service\ReminderService; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; @@ -44,10 +42,6 @@ public function handle(Event $event): void { } $node = $event->getNode(); - if ($node instanceof NonExistingFile || $node instanceof NonExistingFolder) { - return; - } - $this->reminderService->removeAllForNode($node); } }