From 2156a198ef17c6b1f042690f2c854c9998403f2e Mon Sep 17 00:00:00 2001 From: Gerben Date: Sat, 29 Sep 2018 13:40:40 +0300 Subject: [PATCH] Support files inside shared folders --- lib/Controller/findMementos.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/Controller/findMementos.php b/lib/Controller/findMementos.php index d52df21..fcdef39 100644 --- a/lib/Controller/findMementos.php +++ b/lib/Controller/findMementos.php @@ -92,9 +92,14 @@ function findPublicMementos($shareManager, $userId) { -1 /* no limit */ ); - $urlForShare = function ($share) { + $urlForSharedFile = function ($share) { return "/apps/raw/s/" . $share->getToken(); // XXX hardcoded dependency }; + $urlForFileInsideSharedFolder = function ($share, $folder, $file) { + $absoluteFilePath = $file->getPath(); + $relativeFilePath = $folder->getRelativePath($absoluteFilePath); + return joinPaths("/apps/raw/s/{$share->getToken()}", $relativeFilePath); + }; // Look into every shared file to see if it is a memento. $foundMementos = []; @@ -103,11 +108,20 @@ function findPublicMementos($shareManager, $userId) { if ($node->getType() === FileInfo::TYPE_FILE) { $mementoInfo = extractMementoInfo($node); if ($mementoInfo) { - $mementoInfo['mementoUrl'] = $urlForShare($share); + $mementoInfo['mementoUrl'] = $urlForSharedFile($share); $foundMementos[] = $mementoInfo; } } else { - // TODO add files inside shared folders? How to make URLs for those? + // Share is a folder: Go through all html files inside the shared folder. + $folder = $node; + $files = $folder->searchByMime('text/html'); + foreach ($files as $file) { + $mementoInfo = extractMementoInfo($file); + if ($mementoInfo) { + $mementoInfo['mementoUrl'] = $urlForFileInsideSharedFolder($share, $folder, $file); + $foundMementos[] = $mementoInfo; + } + } } } return $foundMementos;