3 declare(strict_types
=1);
5 namespace Shaarli\Front\Controller\Visitor
;
7 use Shaarli\Front\Exception\ThumbnailsDisabledException
;
8 use Shaarli\Render\TemplatePage
;
9 use Shaarli\Thumbnailer
;
10 use Slim\Http\Request
;
11 use Slim\Http\Response
;
14 * Class PicturesWallController
16 * Slim controller used to render the pictures wall page.
17 * If thumbnails mode is set to NONE, we just render the template without any image.
19 class PictureWallController
extends ShaarliVisitorController
21 public function index(Request
$request, Response
$response): Response
23 if ($this->container
->conf
->get('thumbnails.mode', Thumbnailer
::MODE_NONE
) === Thumbnailer
::MODE_NONE
) {
24 throw new ThumbnailsDisabledException();
29 t('Picture wall') . ' - ' . $this->container
->conf
->get('general.title', 'Shaarli')
32 // Optionally filter the results:
33 $links = $this->container
->bookmarkService
->search($request->getQueryParams());
36 // Get only bookmarks which have a thumbnail.
37 // Note: we do not retrieve thumbnails here, the request is too heavy.
38 $formatter = $this->container
->formatterFactory
->getFormatter('raw');
39 foreach ($links as $key => $link) {
40 if (!empty($link->getThumbnail())) {
41 $linksToDisplay[] = $formatter->format($link);
45 $data = ['linksToDisplay' => $linksToDisplay];
46 $this->executePageHooks('render_picwall', $data, TemplatePage
::PICTURE_WALL
);
48 foreach ($data as $key => $value) {
49 $this->assignView($key, $value);
52 return $response->write($this->render(TemplatePage
::PICTURE_WALL
));