Make sure ownCloud 8.2 activities also can get displayed

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2017-02-07 11:30:23 +01:00
parent 5e4bbb394c
commit c031c77e3c
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
1 changed files with 30 additions and 12 deletions

View File

@ -103,7 +103,7 @@ class Provider implements IProvider {
* @since 11.0.0 * @since 11.0.0
*/ */
public function parseShortVersion(IEvent $event, IEvent $previousEvent = null) { public function parseShortVersion(IEvent $event, IEvent $previousEvent = null) {
$parsedParameters = $this->getParameters($event->getSubject(), $event->getSubjectParameters()); $parsedParameters = $this->getParameters($event);
if ($event->getSubject() === 'created_by') { if ($event->getSubject() === 'created_by') {
$subject = $this->l->t('Created by {user}'); $subject = $this->l->t('Created by {user}');
@ -128,9 +128,7 @@ class Provider implements IProvider {
$this->setSubjects($event, $subject, $parsedParameters); $this->setSubjects($event, $subject, $parsedParameters);
$event = $this->eventMerger->mergeEvents('user', $event, $previousEvent); return $this->eventMerger->mergeEvents('user', $event, $previousEvent);
return $event;
} }
/** /**
@ -141,7 +139,7 @@ class Provider implements IProvider {
* @since 11.0.0 * @since 11.0.0
*/ */
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) { public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
$parsedParameters = $this->getParameters($event->getSubject(), $event->getSubjectParameters()); $parsedParameters = $this->getParameters($event);
if ($event->getSubject() === 'created_self') { if ($event->getSubject() === 'created_self') {
$subject = $this->l->t('You created {file}'); $subject = $this->l->t('You created {file}');
@ -211,22 +209,28 @@ class Provider implements IProvider {
->setRichSubject($subject, $parameters); ->setRichSubject($subject, $parameters);
} }
protected function getParameters($subject, array $parameters) { /**
switch ($subject) { * @param IEvent $event
* @return array
* @throws \InvalidArgumentException
*/
protected function getParameters(IEvent $event) {
$parameters = $event->getSubjectParameters();
switch ($event->getSubject()) {
case 'created_self': case 'created_self':
case 'created_public': case 'created_public':
case 'changed_self': case 'changed_self':
case 'deleted_self': case 'deleted_self':
case 'restored_self': case 'restored_self':
return [ return [
'file' => $this->getRichFileParameter($parameters[0]), 'file' => $this->getRichFileParameter($parameters[0], $event),
]; ];
case 'created_by': case 'created_by':
case 'changed_by': case 'changed_by':
case 'deleted_by': case 'deleted_by':
case 'restored_by': case 'restored_by':
return [ return [
'file' => $this->getRichFileParameter($parameters[0]), 'file' => $this->getRichFileParameter($parameters[0], $event),
'user' => $this->getRichUserParameter($parameters[1]), 'user' => $this->getRichUserParameter($parameters[1]),
]; ];
case 'renamed_self': case 'renamed_self':
@ -246,9 +250,23 @@ class Provider implements IProvider {
return []; return [];
} }
protected function getRichFileParameter($parameter) { /**
$path = reset($parameter); * @param $parameter
$id = key($parameter); * @param IEvent|null $event
* @return array
* @throws \InvalidArgumentException
*/
protected function getRichFileParameter($parameter, IEvent $event = null) {
if (is_array($parameter)) {
$path = reset($parameter);
$id = key($parameter);
} else if ($event !== null) {
// Legacy from before ownCloud 8.2
$path = $parameter;
$id = $event->getObjectId();
} else {
throw new \InvalidArgumentException('Could not generate file parameter');
}
return [ return [
'type' => 'file', 'type' => 'file',
'id' => $id, 'id' => $id,