Activity: trigger activity on board share/unshare

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2018-09-06 21:09:21 +02:00
parent 7e88d246c0
commit f686b1e75b
3 changed files with 46 additions and 3 deletions

View File

@@ -24,6 +24,8 @@
namespace OCA\Deck\Activity; namespace OCA\Deck\Activity;
use InvalidArgumentException; use InvalidArgumentException;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\AclMapper;
use OCA\Deck\Db\AssignedUsers; use OCA\Deck\Db\AssignedUsers;
use OCA\Deck\Db\Attachment; use OCA\Deck\Db\Attachment;
use OCA\Deck\Db\AttachmentMapper; use OCA\Deck\Db\AttachmentMapper;
@@ -50,6 +52,7 @@ class ActivityManager {
private $boardMapper; private $boardMapper;
private $cardMapper; private $cardMapper;
private $attachmentMapper; private $attachmentMapper;
private $aclMapper;
private $stackMapper; private $stackMapper;
private $l10n; private $l10n;
@@ -63,6 +66,7 @@ class ActivityManager {
const SUBJECT_BOARD_DELETE = 'board_delete'; const SUBJECT_BOARD_DELETE = 'board_delete';
const SUBJECT_BOARD_RESTORE = 'board_restore'; const SUBJECT_BOARD_RESTORE = 'board_restore';
const SUBJECT_BOARD_SHARE = 'board_share'; const SUBJECT_BOARD_SHARE = 'board_share';
const SUBJECT_BOARD_UNSHARE = 'board_unshare';
const SUBJECT_BOARD_ARCHIVE = 'board_archive'; const SUBJECT_BOARD_ARCHIVE = 'board_archive';
const SUBJECT_BOARD_UNARCHIVE = 'board_unarchive'; const SUBJECT_BOARD_UNARCHIVE = 'board_unarchive';
@@ -105,6 +109,7 @@ class ActivityManager {
CardMapper $cardMapper, CardMapper $cardMapper,
StackMapper $stackMapper, StackMapper $stackMapper,
AttachmentMapper $attachmentMapper, AttachmentMapper $attachmentMapper,
AclMapper $aclMapper,
IL10N $l10n, IL10N $l10n,
$userId $userId
) { ) {
@@ -114,6 +119,7 @@ class ActivityManager {
$this->cardMapper = $cardMapper; $this->cardMapper = $cardMapper;
$this->stackMapper = $stackMapper; $this->stackMapper = $stackMapper;
$this->attachmentMapper = $attachmentMapper; $this->attachmentMapper = $attachmentMapper;
$this->aclMapper = $aclMapper;
$this->l10n = $l10n; $this->l10n = $l10n;
$this->userId = $userId; $this->userId = $userId;
} }
@@ -137,7 +143,10 @@ class ActivityManager {
$subject = $ownActivity ? $this->l10n->t('You have restored the board {board}') : $this->l10n->t('{user} has restored the board {board}'); $subject = $ownActivity ? $this->l10n->t('You have restored the board {board}') : $this->l10n->t('{user} has restored the board {board}');
break; break;
case self::SUBJECT_BOARD_SHARE: case self::SUBJECT_BOARD_SHARE:
$subject = $ownActivity ? $this->l10n->t('You have shared the board {board} with {sharee}') : $this->l10n->t('{user} has shared the board {board} with {sharee}'); $subject = $ownActivity ? $this->l10n->t('You have shared the board {board} with {acl}') : $this->l10n->t('{user} has shared the board {board} with {sharee}');
break;
case self::SUBJECT_BOARD_UNSHARE:
$subject = $ownActivity ? $this->l10n->t('You have removed {acl} from the board {board}') : $this->l10n->t('{user} has removed {acl} from the board {board}');
break; break;
case self::SUBJECT_BOARD_ARCHIVE: case self::SUBJECT_BOARD_ARCHIVE:
$subject = $ownActivity ? $this->l10n->t('You have archived the board {board}') : $this->l10n->t('{user} has archived the board {board}'); $subject = $ownActivity ? $this->l10n->t('You have archived the board {board}') : $this->l10n->t('{user} has archived the board {board}');
@@ -343,6 +352,10 @@ class ActivityManager {
$subjectParams = $this->findDetailsForAttachment($entity->getId()); $subjectParams = $this->findDetailsForAttachment($entity->getId());
$object = $subjectParams['card']; $object = $subjectParams['card'];
break; break;
case self::SUBJECT_BOARD_SHARE:
case self::SUBJECT_BOARD_UNSHARE:
$subjectParams = $this->findDetailsForAcl($entity->getId());
break;
default: default:
throw new \Exception('Unknown subject for activity.'); throw new \Exception('Unknown subject for activity.');
break; break;
@@ -423,6 +436,7 @@ class ActivityManager {
break; break;
case Label::class: case Label::class:
case Stack::class: case Stack::class:
case Acl::class:
$objectId = $entity->getBoardId(); $objectId = $entity->getBoardId();
break; break;
default: default:
@@ -459,4 +473,13 @@ class ActivityManager {
return array_merge($data, ['attachment' => $attachment]); return array_merge($data, ['attachment' => $attachment]);
} }
private function findDetailsForAcl($aclId) {
$acl = $this->aclMapper->find($aclId);
$board = $this->boardMapper->find($acl->getBoardId());
return [
'acl' => $acl,
'board' => $board
];
}
} }

View File

@@ -25,6 +25,7 @@ namespace OCA\Deck\Activity;
use cogpowered\FineDiff\Diff; use cogpowered\FineDiff\Diff;
use OCA\Deck\Db\Acl;
use OCP\Activity\IEvent; use OCP\Activity\IEvent;
use OCP\Activity\IProvider; use OCP\Activity\IProvider;
use OCP\IURLGenerator; use OCP\IURLGenerator;
@@ -162,7 +163,7 @@ class DeckProvider implements IProvider {
} }
if (array_key_exists('assigneduser', $subjectParams)) { if (array_key_exists('assigneduser', $subjectParams)) {
$user = $userManager->get($subjectParams['assigneduser']); $user = $this->userManager->get($subjectParams['assigneduser']);
$params['assigneduser'] = [ $params['assigneduser'] = [
'type' => 'user', 'type' => 'user',
'id' => $subjectParams['assigneduser'], 'id' => $subjectParams['assigneduser'],
@@ -170,6 +171,24 @@ class DeckProvider implements IProvider {
]; ];
} }
if (array_key_exists('acl', $subjectParams)) {
if ($subjectParams['acl']['type'] === Acl::PERMISSION_TYPE_USER) {
$user = $this->userManager->get($subjectParams['acl']['participant']);
$params['acl'] = [
'type' => 'user',
'id' => $subjectParams['acl']['participant'],
'name' => $user !== null ? $user->getDisplayName() : $subjectParams['acl']['participant']
];
} else {
$params['acl'] = [
'type' => 'highlight',
'id' => $subjectParams['acl']['participant'],
'name' => $subjectParams['acl']['participant']
];
}
}
if (array_key_exists('before', $subjectParams)) { if (array_key_exists('before', $subjectParams)) {
$params['before'] = [ $params['before'] = [
'type' => 'highlight', 'type' => 'highlight',

View File

@@ -434,8 +434,8 @@ class BoardService {
$this->notificationHelper->sendBoardShared($boardId, $acl); $this->notificationHelper->sendBoardShared($boardId, $acl);
$newAcl = $this->aclMapper->insert($acl); $newAcl = $this->aclMapper->insert($acl);
$this->boardMapper->mapAcl($newAcl);
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $newAcl, ActivityManager::SUBJECT_BOARD_SHARE); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $newAcl, ActivityManager::SUBJECT_BOARD_SHARE);
$this->boardMapper->mapAcl($newAcl);
return $newAcl; return $newAcl;
} }
@@ -502,6 +502,7 @@ class BoardService {
$this->assignedUsersMapper->delete($assignement); $this->assignedUsersMapper->delete($assignement);
} }
} }
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $acl, ActivityManager::SUBJECT_BOARD_UNSHARE);
return $this->aclMapper->delete($acl); return $this->aclMapper->delete($acl);
} }