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;