Merge pull request #3181 from nextcloud/fix-favorite-activity-mail

Make sure the file information is available when sending the email
This commit is contained in:
Björn Schießle 2017-02-10 11:35:45 +01:00 committed by GitHub
commit a88fc0c283
2 changed files with 28 additions and 12 deletions

View File

@ -138,12 +138,21 @@ class FavoriteProvider implements IProvider {
* @param string $subject * @param string $subject
*/ */
protected function setSubjects(IEvent $event, $subject) { protected function setSubjects(IEvent $event, $subject) {
$subjectParams = $event->getSubjectParameters();
if (empty($subjectParams)) {
// Try to fall back to the old way, but this does not work for emails.
// But at least old activities still work.
$subjectParams = [
'id' => $event->getObjectId(),
'path' => $event->getObjectName(),
];
}
$parameter = [ $parameter = [
'type' => 'file', 'type' => 'file',
'id' => $event->getObjectId(), 'id' => $subjectParams['id'],
'name' => basename($event->getObjectName()), 'name' => basename($subjectParams['path']),
'path' => trim($event->getObjectName(), '/'), 'path' => trim($subjectParams['path'], '/'),
'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $event->getObjectId()]), 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $subjectParams['id']]),
]; ];
$event->setParsedSubject(str_replace('{file}', $parameter['path'], $subject)) $event->setParsedSubject(str_replace('{file}', $parameter['path'], $subject))

View File

@ -116,14 +116,21 @@ class TagService {
} }
$event = $this->activityManager->generateEvent(); $event = $this->activityManager->generateEvent();
$event->setApp('files') try {
->setObject('files', $fileId, $path) $event->setApp('files')
->setType('favorite') ->setObject('files', $fileId, $path)
->setAuthor($user->getUID()) ->setType('favorite')
->setAffectedUser($user->getUID()) ->setAuthor($user->getUID())
->setTimestamp(time()) ->setAffectedUser($user->getUID())
->setSubject($addToFavorite ? FavoriteProvider::SUBJECT_ADDED : FavoriteProvider::SUBJECT_REMOVED); ->setTimestamp(time())
$this->activityManager->publish($event); ->setSubject(
$addToFavorite ? FavoriteProvider::SUBJECT_ADDED : FavoriteProvider::SUBJECT_REMOVED,
['id' => $fileId, 'path' => $path]
);
$this->activityManager->publish($event);
} catch (\InvalidArgumentException $e) {
} catch (\BadMethodCallException $e) {
}
} }
} }