tagManager->load('files', [], false, $user); $favorites = $tags->getFavorites(); if (empty($favorites)) { throw new \RuntimeException('No favorites', 1); } elseif (isset($favorites[self::FAVORITE_LIMIT])) { throw new \RuntimeException('Too many favorites', 2); } // Can not DI because the user is not known on instantiation $userFolder = $this->rootFolder->getUserFolder($user); $favoriteNodes = []; foreach ($favorites as $favorite) { $node = $userFolder->getFirstNodeById($favorite); if ($node) { if (!$foldersOnly || $node instanceof Folder) { $favoriteNodes[] = $node; } } } if (empty($favoriteNodes)) { throw new \RuntimeException('No favorites', 1); } return $favoriteNodes; } /** * Returns an array with the favorites * * @param string $user * @return array * @throws \RuntimeException when too many or no favorites where found */ public function getFavoriteFilePaths(string $user): array { $userFolder = $this->rootFolder->getUserFolder($user); $nodes = $this->getFavoriteNodes($user); $folders = $items = []; foreach ($nodes as $node) { $path = $userFolder->getRelativePath($node->getPath()); $items[] = $path; if ($node instanceof Folder) { $folders[] = $path; } } return [ 'items' => $items, 'folders' => $folders, ]; } }