]> source.dussan.org Git - nextcloud-server.git/commitdiff
Make sure ownCloud 8.2 activities also can get displayed
authorJoas Schilling <coding@schilljs.com>
Tue, 7 Feb 2017 10:30:23 +0000 (11:30 +0100)
committerJoas Schilling <coding@schilljs.com>
Thu, 9 Feb 2017 11:15:36 +0000 (12:15 +0100)
Signed-off-by: Joas Schilling <coding@schilljs.com>
apps/files/lib/Activity/Provider.php

index 92686ec0c36af22990d559f335a1d09f74c3f565..b9712bdab4eef31b90e0183ee7cf26ed4f844979 100644 (file)
@@ -103,7 +103,7 @@ class Provider implements IProvider {
         * @since 11.0.0
         */
        public function parseShortVersion(IEvent $event, IEvent $previousEvent = null) {
-               $parsedParameters = $this->getParameters($event->getSubject(), $event->getSubjectParameters());
+               $parsedParameters = $this->getParameters($event);
 
                if ($event->getSubject() === 'created_by') {
                        $subject = $this->l->t('Created by {user}');
@@ -128,9 +128,7 @@ class Provider implements IProvider {
 
                $this->setSubjects($event, $subject, $parsedParameters);
 
-               $event = $this->eventMerger->mergeEvents('user', $event, $previousEvent);
-
-               return $event;
+               return $this->eventMerger->mergeEvents('user', $event, $previousEvent);
        }
 
        /**
@@ -141,7 +139,7 @@ class Provider implements IProvider {
         * @since 11.0.0
         */
        public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
-               $parsedParameters = $this->getParameters($event->getSubject(), $event->getSubjectParameters());
+               $parsedParameters = $this->getParameters($event);
 
                if ($event->getSubject() === 'created_self') {
                        $subject = $this->l->t('You created {file}');
@@ -211,22 +209,28 @@ class Provider implements IProvider {
                        ->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_public':
                        case 'changed_self':
                        case 'deleted_self':
                        case 'restored_self':
                                return [
-                                       'file' => $this->getRichFileParameter($parameters[0]),
+                                       'file' => $this->getRichFileParameter($parameters[0], $event),
                                ];
                        case 'created_by':
                        case 'changed_by':
                        case 'deleted_by':
                        case 'restored_by':
                                return [
-                                       'file' => $this->getRichFileParameter($parameters[0]),
+                                       'file' => $this->getRichFileParameter($parameters[0], $event),
                                        'user' => $this->getRichUserParameter($parameters[1]),
                                ];
                        case 'renamed_self':
@@ -246,9 +250,23 @@ class Provider implements IProvider {
                return [];
        }
 
-       protected function getRichFileParameter($parameter) {
-               $path = reset($parameter);
-               $id = key($parameter);
+       /**
+        * @param $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 [
                        'type' => 'file',
                        'id' => $id,