From 9516c7578b526f455bf26959f24fd9250763e1af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Wed, 17 Apr 2019 14:35:03 +0200 Subject: [PATCH 1/3] Properly check for available data (fixes #921) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/Activity/ActivityManager.php | 2 ++ lib/Activity/DeckProvider.php | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/Activity/ActivityManager.php b/lib/Activity/ActivityManager.php index f5a9e937a..efd2ea48e 100644 --- a/lib/Activity/ActivityManager.php +++ b/lib/Activity/ActivityManager.php @@ -302,6 +302,8 @@ class ActivityManager { try { $object = $this->findObjectForEntity($objectType, $entity); } catch (DoesNotExistException $e) { + \OC::$server->getLogger()->error('Could not create activity entry for ' . $subject . '. Entity not found.', $entity); + return null; } catch (MultipleObjectsReturnedException $e) { \OC::$server->getLogger()->error('Could not create activity entry for ' . $subject . '. Entity not found.', $entity); return null; diff --git a/lib/Activity/DeckProvider.php b/lib/Activity/DeckProvider.php index d6f2fc4d9..1a95f6940 100644 --- a/lib/Activity/DeckProvider.php +++ b/lib/Activity/DeckProvider.php @@ -104,7 +104,7 @@ class DeckProvider implements IProvider { ]; $event->setAuthor($author); if ($event->getObjectType() === ActivityManager::DECK_OBJECT_BOARD) { - if ($event->getObjectName() === '') { + if (isset($subjectParams['board']) && $event->getObjectName() === '') { $event->setObject($event->getObjectType(), $event->getObjectId(), $subjectParams['board']['title']); } $board = [ @@ -116,7 +116,7 @@ class DeckProvider implements IProvider { $params['board'] = $board; } - if ($event->getObjectType() === ActivityManager::DECK_OBJECT_CARD) { + if (isset($subjectParams['card']) && $event->getObjectType() === ActivityManager::DECK_OBJECT_CARD) { if ($event->getObjectName() === '') { $event->setObject($event->getObjectType(), $event->getObjectId(), $subjectParams['card']['title']); } From 2c1293be8118c3a8051907cf2a39278c3c474e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Wed, 17 Apr 2019 14:37:57 +0200 Subject: [PATCH 2/3] Do not extend user parameter if user not found (fix #847) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/Activity/DeckProvider.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/Activity/DeckProvider.php b/lib/Activity/DeckProvider.php index 1a95f6940..87a7832a7 100644 --- a/lib/Activity/DeckProvider.php +++ b/lib/Activity/DeckProvider.php @@ -95,14 +95,16 @@ class DeckProvider implements IProvider { unset($subjectParams['author']); } $user = $this->userManager->get($author); - $params = [ - 'user' => [ - 'type' => 'user', - 'id' => $author, - 'name' => $user !== null ? $user->getDisplayName() : $author - ], - ]; - $event->setAuthor($author); + if ($user !== null) { + $params = [ + 'user' => [ + 'type' => 'user', + 'id' => $author, + 'name' => $user !== null ? $user->getDisplayName() : $author + ], + ]; + $event->setAuthor($author); + } if ($event->getObjectType() === ActivityManager::DECK_OBJECT_BOARD) { if (isset($subjectParams['board']) && $event->getObjectName() === '') { $event->setObject($event->getObjectType(), $event->getObjectId(), $subjectParams['board']['title']); From 223de1e54fbcbb56ca27f50382ed0b228d74d735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Wed, 17 Apr 2019 14:49:00 +0200 Subject: [PATCH 3/3] Fix tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- tests/unit/Activity/DeckProviderTest.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/unit/Activity/DeckProviderTest.php b/tests/unit/Activity/DeckProviderTest.php index 5a8dcc615..c500e3fb9 100644 --- a/tests/unit/Activity/DeckProviderTest.php +++ b/tests/unit/Activity/DeckProviderTest.php @@ -25,6 +25,7 @@ namespace OCA\Deck\Activity; use OC\Activity\Event; use OCA\Deck\Db\Acl; +use OCA\Deck\Db\Card; use OCP\Activity\IEvent; use OCP\Comments\IComment; use OCP\Comments\ICommentsManager; @@ -212,7 +213,7 @@ class DeckProviderTest extends TestCase { $event = new Event($richValidator); $event->setApp('deck'); - $event->setSubject(ActivityManager::SUBJECT_CARD_CREATE); + $event->setSubject(ActivityManager::SUBJECT_CARD_CREATE, ['card' => new Card()]); $event->setAffectedUser($this->userId); $event->setAuthor($this->userId); $event->setObject(ActivityManager::DECK_OBJECT_CARD, 1, 'Card'); @@ -260,6 +261,7 @@ class DeckProviderTest extends TestCase { 'before' => 'ABC', 'after' => 'BCD', 'diff' => true, + 'card' => new Card() ]); $event->setAffectedUser($this->userId); $event->setAuthor($this->userId);