diff options
Diffstat (limited to 'apps/files_sharing/lib/Activity/Providers/Groups.php')
-rw-r--r-- | apps/files_sharing/lib/Activity/Providers/Groups.php | 188 |
1 files changed, 18 insertions, 170 deletions
diff --git a/apps/files_sharing/lib/Activity/Providers/Groups.php b/apps/files_sharing/lib/Activity/Providers/Groups.php index 6c25572d0d4..06ccdaa98b3 100644 --- a/apps/files_sharing/lib/Activity/Providers/Groups.php +++ b/apps/files_sharing/lib/Activity/Providers/Groups.php @@ -22,79 +22,14 @@ namespace OCA\Files_Sharing\Activity\Providers; use OCP\Activity\IEvent; -use OCP\Activity\IManager; -use OCP\Activity\IProvider; -use OCP\IL10N; -use OCP\IURLGenerator; -use OCP\IUser; -use OCP\IUserManager; -use OCP\L10N\IFactory; -class Groups implements IProvider { - - /** @var IFactory */ - protected $languageFactory; - - /** @var IL10N */ - protected $l; - - /** @var IURLGenerator */ - protected $url; - - /** @var IManager */ - protected $activityManager; - - /** @var IUserManager */ - protected $userManager; - - /** @var array */ - protected $displayNames = []; +class Groups extends Base { const SUBJECT_SHARED_GROUP_SELF = 'shared_group_self'; const SUBJECT_RESHARED_GROUP_BY = 'reshared_group_by'; const SUBJECT_UNSHARED_GROUP_SELF = 'unshared_group_self'; const SUBJECT_UNSHARED_GROUP_BY = 'unshared_group_by'; - - /** - * @param IFactory $languageFactory - * @param IURLGenerator $url - * @param IManager $activityManager - * @param IUserManager $userManager - */ - public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager) { - $this->languageFactory = $languageFactory; - $this->url = $url; - $this->activityManager = $activityManager; - $this->userManager = $userManager; - } - - /** - * @param string $language - * @param IEvent $event - * @param IEvent|null $previousEvent - * @return IEvent - * @throws \InvalidArgumentException - * @since 11.0.0 - */ - public function parse($language, IEvent $event, IEvent $previousEvent = null) { - if ($event->getApp() !== 'files_sharing') { - throw new \InvalidArgumentException(); - } - - $this->l = $this->languageFactory->get('files_sharing', $language); - - if ($this->activityManager->isFormattingFilteredObject()) { - try { - return $this->parseShortVersion($event); - } catch (\InvalidArgumentException $e) { - // Ignore and simply use the long version... - } - } - - return $this->parseLongVersion($event); - } - /** * @param IEvent $event * @return IEvent @@ -105,42 +40,20 @@ class Groups implements IProvider { $parsedParameters = $this->getParsedParameters($event); if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) { - $event->setParsedSubject($this->l->t('Shared with group %1$s', [$parsedParameters['group']['name']])) - ->setRichSubject($this->l->t('Shared with group {group}'), [ - 'group' => $parsedParameters['group'], - ]) - ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + $subject = $this->l->t('Shared with group {group}'); } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) { - $event->setParsedSubject($this->l->t('Removed share for group %1$s', [$parsedParameters['group']['name']])) - ->setRichSubject($this->l->t('Removed share for group {group}'), [ - 'group' => $parsedParameters['group'], - ]) - ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + $subject = $this->l->t('Removed share for group {group}'); } else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) { - $event->setParsedSubject($this->l->t('%2$s shared with group %1$s', [ - $parsedParameters['group']['name'], - $parsedParameters['actor']['name'], - ])) - ->setRichSubject($this->l->t('{actor} shared with group {group}'), [ - 'group' => $parsedParameters['group'], - 'actor' => $parsedParameters['actor'], - ]) - ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + $subject = $this->l->t('{actor} shared with group {group}'); } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) { - $event->setParsedSubject($this->l->t('%2$s removed share for group %1$s', [ - $parsedParameters['group']['name'], - $parsedParameters['actor']['name'], - ])) - ->setRichSubject($this->l->t('{actor} removed share for group {group}'), [ - 'group' => $parsedParameters['group'], - 'actor' => $parsedParameters['actor'], - ]) - ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); - + $subject = $this->l->t('{actor} removed share for group {group}'); } else { throw new \InvalidArgumentException(); } + $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + $this->setSubjects($event, $subject, $parsedParameters); + return $event; } @@ -154,39 +67,20 @@ class Groups implements IProvider { $parsedParameters = $this->getParsedParameters($event); if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) { - $event->setParsedSubject($this->l->t('You shared %1$s with group %2$s', [ - $parsedParameters['file']['path'], - $parsedParameters['group']['name'], - ])) - ->setRichSubject($this->l->t('You shared {file} with group {group}'), $parsedParameters) - ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + $subject = $this->l->t('You shared {file} with group {group}'); } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) { - $event->setParsedSubject($this->l->t('You removed group %2$s from %1$s', [ - $parsedParameters['file']['path'], - $parsedParameters['group']['name'], - ])) - ->setRichSubject($this->l->t('You removed group {group} from {file}'), $parsedParameters) - ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + $subject = $this->l->t('You removed group {group} from {file}'); } else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) { - $event->setParsedSubject($this->l->t('%3$s shared %1$s with group %2$s', [ - $parsedParameters['file']['path'], - $parsedParameters['group']['name'], - $parsedParameters['actor']['name'], - ])) - ->setRichSubject($this->l->t('{actor} shared {file} with group {group}'), $parsedParameters) - ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + $subject = $this->l->t('{actor} shared {file} with group {group}'); } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) { - $event->setParsedSubject($this->l->t('%3$s removed group %2$s from %1$s', [ - $parsedParameters['file']['path'], - $parsedParameters['group']['name'], - $parsedParameters['actor']['name'], - ])) - ->setRichSubject($this->l->t('{actor} removed group {group} from {file}'), $parsedParameters) - ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + $subject = $this->l->t('{actor} removed group {group} from {file}'); } else { throw new \InvalidArgumentException(); } + $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + $this->setSubjects($event, $subject, $parsedParameters); + return $event; } @@ -197,21 +91,19 @@ class Groups implements IProvider { switch ($subject) { case self::SUBJECT_RESHARED_GROUP_BY: case self::SUBJECT_UNSHARED_GROUP_BY: - $id = key($parameters[0]); return [ - 'file' => $this->generateFileParameter($id, $parameters[0][$id]), + 'file' => $this->getFile($parameters[0], $event), 'group' => [ 'type' => 'group', 'id' => $parameters[2], 'name' => $parameters[2], ], - 'actor' => $this->generateUserParameter($parameters[1]), + 'actor' => $this->getUser($parameters[1]), ]; case self::SUBJECT_SHARED_GROUP_SELF: case self::SUBJECT_UNSHARED_GROUP_SELF: - $id = key($parameters[0]); return [ - 'file' => $this->generateFileParameter($id, $parameters[0][$id]), + 'file' => $this->getFile($parameters[0], $event), 'group' => [ 'type' => 'group', 'id' => $parameters[1], @@ -221,48 +113,4 @@ class Groups implements IProvider { } return []; } - - /** - * @param int $id - * @param string $path - * @return array - */ - protected function generateFileParameter($id, $path) { - return [ - 'type' => 'file', - 'id' => $id, - 'name' => basename($path), - 'path' => trim($path, '/'), - 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]), - ]; - } - - /** - * @param string $uid - * @return array - */ - protected function generateUserParameter($uid) { - if (!isset($this->displayNames[$uid])) { - $this->displayNames[$uid] = $this->getDisplayName($uid); - } - - return [ - 'type' => 'user', - 'id' => $uid, - 'name' => $this->displayNames[$uid], - ]; - } - - /** - * @param string $uid - * @return string - */ - protected function getDisplayName($uid) { - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { - return $user->getDisplayName(); - } else { - return $uid; - } - } } |