From f69943ad9a63f7c426c766168091f21274eef536 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 25 Nov 2016 15:33:17 +0100 Subject: [PATCH] Display all previews of grouped files Signed-off-by: Joas Schilling --- lib/Controller/OCSEndPoint.php | 4 ++-- lib/GroupHelper.php | 16 ++++++++++++++++ tests/Controller/OCSEndPointTest.php | 8 ++++---- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/Controller/OCSEndPoint.php b/lib/Controller/OCSEndPoint.php index bd50208d0..cbeeba9a8 100644 --- a/lib/Controller/OCSEndPoint.php +++ b/lib/Controller/OCSEndPoint.php @@ -230,8 +230,8 @@ protected function get(array $parameters) { if ($this->loadPreviews) { $activity['previews'] = []; - if ($activity['object_type'] === 'files' && !empty($activity['files'])) { - foreach ($activity['files'] as $objectId => $objectName) { + if ($activity['object_type'] === 'files' && !empty($activity['objects'])) { + foreach ($activity['objects'] as $objectId => $objectName) { if (((int) $objectId) === 0 || $objectName === '') { // No file, no preview continue; diff --git a/lib/GroupHelper.php b/lib/GroupHelper.php index c5114f34d..b81ee75f3 100644 --- a/lib/GroupHelper.php +++ b/lib/GroupHelper.php @@ -174,8 +174,24 @@ protected function eventToArray(IEvent $event, $id) { 'object_type' => $event->getObjectType(), 'object_id' => $event->getObjectId(), 'object_name' => $event->getObjectName(), + 'objects' => $this->getObjectsFromChildren($event), 'link' => $event->getLink(), 'icon' => $event->getIcon(), ]; } + + /** + * @param IEvent $event + * @return array + */ + protected function getObjectsFromChildren(IEvent $event) { + $child = $event->getChildEvent(); + if ($child instanceof IEvent) { + $objects = $this->getObjectsFromChildren($child); + $objects[$event->getObjectId()] = $event->getObjectName(); + return $objects; + } else { + return [$event->getObjectId() => $event->getObjectName()]; + } + } } diff --git a/tests/Controller/OCSEndPointTest.php b/tests/Controller/OCSEndPointTest.php index a6bffddeb..760428912 100644 --- a/tests/Controller/OCSEndPointTest.php +++ b/tests/Controller/OCSEndPointTest.php @@ -431,14 +431,14 @@ public function dataGet() { [123456789, 'files', 42, [], false, 0, ['object_type' => 'files', 'object_id' => 42, 'datetime' => date('c', 123456789)]], [12345678, 'calendar', 23, [], true, 0, ['object_type' => 'calendar', 'object_id' => 23, 'datetime' => date('c', 12345678), 'previews' => []]], [ - 12345678, 'files', 23, ['files' => [], 'affecteduser' => 'user1', 'object_name' => 'file.txt'], + 12345678, 'files', 23, ['objects' => [], 'affecteduser' => 'user1', 'object_name' => 'file.txt'], true, 1, - ['object_type' => 'files', 'object_id' => 23, 'files' => [], 'affecteduser' => 'user1', 'object_name' => 'file.txt', 'datetime' => date('c', 12345678), 'previews' => [['preview']]] + ['object_type' => 'files', 'object_id' => 23, 'objects' => [], 'affecteduser' => 'user1', 'object_name' => 'file.txt', 'datetime' => date('c', 12345678), 'previews' => [['preview']]] ], [ - 12345678, 'files', 23, ['files' => [12 => '12.png', 23 => '23.txt', 0 => '0.txt', 123 => ''], 'affecteduser' => 'user1'], + 12345678, 'files', 23, ['objects' => [12 => '12.png', 23 => '23.txt', 0 => '0.txt', 123 => ''], 'affecteduser' => 'user1'], true, 2, - ['object_type' => 'files', 'object_id' => 23, 'files' => [12 => '12.png', 23 => '23.txt', 0 => '0.txt', 123 => ''], 'affecteduser' => 'user1', 'datetime' => date('c', 12345678), 'previews' => [['preview'], ['preview']]] + ['object_type' => 'files', 'object_id' => 23, 'objects' => [12 => '12.png', 23 => '23.txt', 0 => '0.txt', 123 => ''], 'affecteduser' => 'user1', 'datetime' => date('c', 12345678), 'previews' => [['preview'], ['preview']]] ], ]; }