3 declare(strict_types
=1);
5 namespace Shaarli\Front\Controller\Admin
;
7 use Shaarli\Bookmark\BookmarkFilter
;
8 use Shaarli\Security\SessionManager
;
10 use Slim\Http\Response
;
13 * Class SessionFilterController
15 * Slim controller used to handle filters stored in the user session, such as visibility, etc.
17 class SessionFilterController
extends ShaarliAdminController
20 * GET /admin/visibility: allows to display only public or only private bookmarks in linklist
22 public function visibility(Request
$request, Response
$response, array $args): Response
24 if (false === $this->container
->loginManager
->isLoggedIn()) {
25 return $this->redirectFromReferer($request, $response, ['visibility']);
28 $newVisibility = $args['visibility'] ?? null;
29 if (false === in_array($newVisibility, [BookmarkFilter
::$PRIVATE, BookmarkFilter
::$PUBLIC], true)) {
30 $newVisibility = null;
33 $currentVisibility = $this->container
->sessionManager
->getSessionParameter(SessionManager
::KEY_VISIBILITY
);
35 // Visibility not set or not already expected value, set expected value, otherwise reset it
36 if ($newVisibility !== null && (null === $currentVisibility || $currentVisibility !== $newVisibility)) {
37 // See only public bookmarks
38 $this->container
->sessionManager
->setSessionParameter(
39 SessionManager
::KEY_VISIBILITY
,
43 $this->container
->sessionManager
->deleteSessionParameter(SessionManager
::KEY_VISIBILITY
);
46 return $this->redirectFromReferer($request, $response, ['visibility']);