Activity: trigger activity on board share/unshare
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
@@ -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
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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',
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user