diff --git a/lib/Activity/ActivityManager.php b/lib/Activity/ActivityManager.php index 198500771..6ad70294b 100644 --- a/lib/Activity/ActivityManager.php +++ b/lib/Activity/ActivityManager.php @@ -240,9 +240,25 @@ class ActivityManager { } public function triggerEvent($objectType, $entity, $subject, $additionalParams = [], $author = null) { + if ($author === null) { + $author = $this->userId; + } try { $event = $this->createEvent($objectType, $entity, $subject, $additionalParams, $author); if ($event !== null) { + $json = json_encode($event->getSubjectParameters()); + if (mb_strlen($json) > 4000) { + $params = json_decode(json_encode($event->getSubjectParameters()), true); + + $newContent = $params['after']; + unset($params['before'], $params['after'], $params['card']['description']); + + $params['after'] = mb_substr($newContent, 0, 2000); + if (mb_strlen($newContent) > 2000) { + $params['after'] .= '...'; + } + $event->setSubject($event->getSubject(), $params); + } $this->sendToUsers($event); } } catch (\Exception $e) { diff --git a/lib/Activity/DeckProvider.php b/lib/Activity/DeckProvider.php index 923f7146f..c461b0321 100644 --- a/lib/Activity/DeckProvider.php +++ b/lib/Activity/DeckProvider.php @@ -96,6 +96,7 @@ class DeckProvider implements IProvider { unset($subjectParams['author']); } $user = $this->userManager->get($author); + $params = []; if ($user !== null) { $params = [ 'user' => [ @@ -328,8 +329,8 @@ class DeckProvider implements IProvider { if (array_key_exists('diff', $subjectParams) && $subjectParams['diff']) { $diff = new Diff(); // Don't add diff as message since we are limited to 255 chars here - //$event->setMessage($subjectParams['after']); - $event->setParsedMessage('
' . $diff->render($subjectParams['before'], $subjectParams['after']) . ''); + $event->setParsedMessage($subjectParams['after']); + //$event->setParsedMessage('
' . $diff->render($subjectParams['before'], $subjectParams['after']) . ''); return $params; } if (array_key_exists('before', $subjectParams)) { diff --git a/lib/Service/CardService.php b/lib/Service/CardService.php index bd9c11e0c..030c10e5c 100644 --- a/lib/Service/CardService.php +++ b/lib/Service/CardService.php @@ -415,8 +415,11 @@ class CardService { if ($card->getArchived()) { throw new StatusException('Operation not allowed. This card is archived.'); } + $changes = new ChangeSet($card); $card->setStackId($stackId); $this->cardMapper->update($card); + $changes->setAfter($card); + $this->activityManager->triggerUpdateEvents(ActivityManager::DECK_OBJECT_CARD, $changes, ActivityManager::SUBJECT_CARD_UPDATE); $cards = $this->cardMapper->findAll($stackId); $result = []; diff --git a/tests/unit/Activity/DeckProviderTest.php b/tests/unit/Activity/DeckProviderTest.php index 775bfc3ac..409dd1432 100644 --- a/tests/unit/Activity/DeckProviderTest.php +++ b/tests/unit/Activity/DeckProviderTest.php @@ -287,7 +287,7 @@ class DeckProviderTest extends TestCase { $this->assertEquals('test string Card', $event->getParsedSubject()); $this->assertEquals('test string {card}', $event->getRichSubject()); $this->assertEquals('BCD', $event->getMessage()); - $this->assertEquals('
', $event->getParsedMessage()); + $this->assertEquals('BCD', $event->getParsedMessage()); } public function testParseParamForBoard() {ABCD