diff options
Diffstat (limited to 'application/front/controller')
5 files changed, 37 insertions, 53 deletions
diff --git a/application/front/controller/admin/ManageTagController.php b/application/front/controller/admin/ManageTagController.php index 8675a0c5..1333cce7 100644 --- a/application/front/controller/admin/ManageTagController.php +++ b/application/front/controller/admin/ManageTagController.php | |||
@@ -57,9 +57,12 @@ class ManageTagController extends ShaarliAdminController | |||
57 | } | 57 | } |
58 | 58 | ||
59 | // TODO: move this to bookmark service | 59 | // TODO: move this to bookmark service |
60 | $count = 0; | 60 | $searchResult = $this->container->bookmarkService->search( |
61 | $bookmarks = $this->container->bookmarkService->search(['searchtags' => $fromTag], BookmarkFilter::$ALL, true); | 61 | ['searchtags' => $fromTag], |
62 | foreach ($bookmarks as $bookmark) { | 62 | BookmarkFilter::$ALL, |
63 | true | ||
64 | ); | ||
65 | foreach ($searchResult->getBookmarks() as $bookmark) { | ||
63 | if (false === $isDelete) { | 66 | if (false === $isDelete) { |
64 | $bookmark->renameTag($fromTag, $toTag); | 67 | $bookmark->renameTag($fromTag, $toTag); |
65 | } else { | 68 | } else { |
@@ -68,11 +71,11 @@ class ManageTagController extends ShaarliAdminController | |||
68 | 71 | ||
69 | $this->container->bookmarkService->set($bookmark, false); | 72 | $this->container->bookmarkService->set($bookmark, false); |
70 | $this->container->history->updateLink($bookmark); | 73 | $this->container->history->updateLink($bookmark); |
71 | $count++; | ||
72 | } | 74 | } |
73 | 75 | ||
74 | $this->container->bookmarkService->save(); | 76 | $this->container->bookmarkService->save(); |
75 | 77 | ||
78 | $count = $searchResult->getResultCount(); | ||
76 | if (true === $isDelete) { | 79 | if (true === $isDelete) { |
77 | $alert = sprintf( | 80 | $alert = sprintf( |
78 | t('The tag was removed from %d bookmark.', 'The tag was removed from %d bookmarks.', $count), | 81 | t('The tag was removed from %d bookmark.', 'The tag was removed from %d bookmarks.', $count), |
diff --git a/application/front/controller/admin/ThumbnailsController.php b/application/front/controller/admin/ThumbnailsController.php index 94d97d4b..5dfea096 100644 --- a/application/front/controller/admin/ThumbnailsController.php +++ b/application/front/controller/admin/ThumbnailsController.php | |||
@@ -22,7 +22,7 @@ class ThumbnailsController extends ShaarliAdminController | |||
22 | public function index(Request $request, Response $response): Response | 22 | public function index(Request $request, Response $response): Response |
23 | { | 23 | { |
24 | $ids = []; | 24 | $ids = []; |
25 | foreach ($this->container->bookmarkService->search() as $bookmark) { | 25 | foreach ($this->container->bookmarkService->search()->getBookmarks() as $bookmark) { |
26 | // A note or not HTTP(S) | 26 | // A note or not HTTP(S) |
27 | if ($bookmark->isNote() || !startsWith(strtolower($bookmark->getUrl()), 'http')) { | 27 | if ($bookmark->isNote() || !startsWith(strtolower($bookmark->getUrl()), 'http')) { |
28 | continue; | 28 | continue; |
diff --git a/application/front/controller/visitor/BookmarkListController.php b/application/front/controller/visitor/BookmarkListController.php index fe8231be..321ca813 100644 --- a/application/front/controller/visitor/BookmarkListController.php +++ b/application/front/controller/visitor/BookmarkListController.php | |||
@@ -36,7 +36,6 @@ class BookmarkListController extends ShaarliVisitorController | |||
36 | 36 | ||
37 | $searchTags = normalize_spaces($request->getParam('searchtags') ?? ''); | 37 | $searchTags = normalize_spaces($request->getParam('searchtags') ?? ''); |
38 | $searchTerm = escape(normalize_spaces($request->getParam('searchterm') ?? '')); | 38 | $searchTerm = escape(normalize_spaces($request->getParam('searchterm') ?? '')); |
39 | ; | ||
40 | 39 | ||
41 | // Filter bookmarks according search parameters. | 40 | // Filter bookmarks according search parameters. |
42 | $visibility = $this->container->sessionManager->getSessionParameter('visibility'); | 41 | $visibility = $this->container->sessionManager->getSessionParameter('visibility'); |
@@ -44,39 +43,26 @@ class BookmarkListController extends ShaarliVisitorController | |||
44 | 'searchtags' => $searchTags, | 43 | 'searchtags' => $searchTags, |
45 | 'searchterm' => $searchTerm, | 44 | 'searchterm' => $searchTerm, |
46 | ]; | 45 | ]; |
47 | $linksToDisplay = $this->container->bookmarkService->search( | ||
48 | $search, | ||
49 | $visibility, | ||
50 | false, | ||
51 | !!$this->container->sessionManager->getSessionParameter('untaggedonly') | ||
52 | ) ?? []; | ||
53 | |||
54 | // ---- Handle paging. | ||
55 | $keys = []; | ||
56 | foreach ($linksToDisplay as $key => $value) { | ||
57 | $keys[] = $key; | ||
58 | } | ||
59 | |||
60 | $linksPerPage = $this->container->sessionManager->getSessionParameter('LINKS_PER_PAGE', 20) ?: 20; | ||
61 | 46 | ||
62 | // Select articles according to paging. | 47 | // Select articles according to paging. |
63 | $pageCount = (int) ceil(count($keys) / $linksPerPage) ?: 1; | 48 | $page = (int) ($request->getParam('page') ?? 1); |
64 | $page = (int) $request->getParam('page') ?? 1; | ||
65 | $page = $page < 1 ? 1 : $page; | 49 | $page = $page < 1 ? 1 : $page; |
66 | $page = $page > $pageCount ? $pageCount : $page; | 50 | $linksPerPage = $this->container->sessionManager->getSessionParameter('LINKS_PER_PAGE', 20) ?: 20; |
67 | 51 | ||
68 | // Start index. | 52 | $searchResult = $this->container->bookmarkService->search( |
69 | $i = ($page - 1) * $linksPerPage; | 53 | $search, |
70 | $end = $i + $linksPerPage; | 54 | $visibility, |
55 | false, | ||
56 | !!$this->container->sessionManager->getSessionParameter('untaggedonly'), | ||
57 | false, | ||
58 | ['offset' => $linksPerPage * ($page - 1), 'limit' => $linksPerPage] | ||
59 | ) ?? []; | ||
71 | 60 | ||
72 | $linkDisp = []; | ||
73 | $save = false; | 61 | $save = false; |
74 | while ($i < $end && $i < count($keys)) { | 62 | $links = []; |
75 | $save = $this->updateThumbnail($linksToDisplay[$keys[$i]], false) || $save; | 63 | foreach ($searchResult->getBookmarks() as $key => $bookmark) { |
76 | $link = $formatter->format($linksToDisplay[$keys[$i]]); | 64 | $save = $this->updateThumbnail($bookmark, false) || $save; |
77 | 65 | $links[$key] = $formatter->format($bookmark); | |
78 | $linkDisp[$keys[$i]] = $link; | ||
79 | $i++; | ||
80 | } | 66 | } |
81 | 67 | ||
82 | if ($save) { | 68 | if ($save) { |
@@ -86,15 +72,10 @@ class BookmarkListController extends ShaarliVisitorController | |||
86 | // Compute paging navigation | 72 | // Compute paging navigation |
87 | $searchtagsUrl = $searchTags === '' ? '' : '&searchtags=' . urlencode($searchTags); | 73 | $searchtagsUrl = $searchTags === '' ? '' : '&searchtags=' . urlencode($searchTags); |
88 | $searchtermUrl = $searchTerm === '' ? '' : '&searchterm=' . urlencode($searchTerm); | 74 | $searchtermUrl = $searchTerm === '' ? '' : '&searchterm=' . urlencode($searchTerm); |
75 | $page = $searchResult->getPage(); | ||
89 | 76 | ||
90 | $previous_page_url = ''; | 77 | $previousPageUrl = !$searchResult->isLastPage() ? '?page=' . ($page + 1) . $searchtermUrl . $searchtagsUrl : ''; |
91 | if ($i !== count($keys)) { | 78 | $nextPageUrl = !$searchResult->isFirstPage() ? '?page=' . ($page - 1) . $searchtermUrl . $searchtagsUrl : ''; |
92 | $previous_page_url = '?page=' . ($page + 1) . $searchtermUrl . $searchtagsUrl; | ||
93 | } | ||
94 | $next_page_url = ''; | ||
95 | if ($page > 1) { | ||
96 | $next_page_url = '?page=' . ($page - 1) . $searchtermUrl . $searchtagsUrl; | ||
97 | } | ||
98 | 79 | ||
99 | $tagsSeparator = $this->container->conf->get('general.tags_separator', ' '); | 80 | $tagsSeparator = $this->container->conf->get('general.tags_separator', ' '); |
100 | $searchTagsUrlEncoded = array_map('urlencode', tags_str2array($searchTags, $tagsSeparator)); | 81 | $searchTagsUrlEncoded = array_map('urlencode', tags_str2array($searchTags, $tagsSeparator)); |
@@ -104,16 +85,16 @@ class BookmarkListController extends ShaarliVisitorController | |||
104 | $data = array_merge( | 85 | $data = array_merge( |
105 | $this->initializeTemplateVars(), | 86 | $this->initializeTemplateVars(), |
106 | [ | 87 | [ |
107 | 'previous_page_url' => $previous_page_url, | 88 | 'previous_page_url' => $previousPageUrl, |
108 | 'next_page_url' => $next_page_url, | 89 | 'next_page_url' => $nextPageUrl, |
109 | 'page_current' => $page, | 90 | 'page_current' => $page, |
110 | 'page_max' => $pageCount, | 91 | 'page_max' => $searchResult->getLastPage(), |
111 | 'result_count' => count($linksToDisplay), | 92 | 'result_count' => $searchResult->getTotalCount(), |
112 | 'search_term' => escape($searchTerm), | 93 | 'search_term' => escape($searchTerm), |
113 | 'search_tags' => escape($searchTags), | 94 | 'search_tags' => escape($searchTags), |
114 | 'search_tags_url' => $searchTagsUrlEncoded, | 95 | 'search_tags_url' => $searchTagsUrlEncoded, |
115 | 'visibility' => $visibility, | 96 | 'visibility' => $visibility, |
116 | 'links' => $linkDisp, | 97 | 'links' => $links, |
117 | ] | 98 | ] |
118 | ); | 99 | ); |
119 | 100 | ||
diff --git a/application/front/controller/visitor/DailyController.php b/application/front/controller/visitor/DailyController.php index 29492a5f..3739ec16 100644 --- a/application/front/controller/visitor/DailyController.php +++ b/application/front/controller/visitor/DailyController.php | |||
@@ -100,7 +100,7 @@ class DailyController extends ShaarliVisitorController | |||
100 | $days = []; | 100 | $days = []; |
101 | $format = DailyPageHelper::getFormatByType($type); | 101 | $format = DailyPageHelper::getFormatByType($type); |
102 | $length = DailyPageHelper::getRssLengthByType($type); | 102 | $length = DailyPageHelper::getRssLengthByType($type); |
103 | foreach ($this->container->bookmarkService->search() as $bookmark) { | 103 | foreach ($this->container->bookmarkService->search()->getBookmarks() as $bookmark) { |
104 | $day = $bookmark->getCreated()->format($format); | 104 | $day = $bookmark->getCreated()->format($format); |
105 | 105 | ||
106 | // Stop iterating after DAILY_RSS_NB_DAYS entries | 106 | // Stop iterating after DAILY_RSS_NB_DAYS entries |
diff --git a/application/front/controller/visitor/PictureWallController.php b/application/front/controller/visitor/PictureWallController.php index 23553ee6..9c8f07d7 100644 --- a/application/front/controller/visitor/PictureWallController.php +++ b/application/front/controller/visitor/PictureWallController.php | |||
@@ -30,19 +30,19 @@ class PictureWallController extends ShaarliVisitorController | |||
30 | ); | 30 | ); |
31 | 31 | ||
32 | // Optionally filter the results: | 32 | // Optionally filter the results: |
33 | $links = $this->container->bookmarkService->search($request->getQueryParams()); | 33 | $bookmarks = $this->container->bookmarkService->search($request->getQueryParams())->getBookmarks(); |
34 | $linksToDisplay = []; | 34 | $links = []; |
35 | 35 | ||
36 | // Get only bookmarks which have a thumbnail. | 36 | // Get only bookmarks which have a thumbnail. |
37 | // Note: we do not retrieve thumbnails here, the request is too heavy. | 37 | // Note: we do not retrieve thumbnails here, the request is too heavy. |
38 | $formatter = $this->container->formatterFactory->getFormatter('raw'); | 38 | $formatter = $this->container->formatterFactory->getFormatter('raw'); |
39 | foreach ($links as $key => $link) { | 39 | foreach ($bookmarks as $key => $bookmark) { |
40 | if (!empty($link->getThumbnail())) { | 40 | if (!empty($bookmark->getThumbnail())) { |
41 | $linksToDisplay[] = $formatter->format($link); | 41 | $links[] = $formatter->format($bookmark); |
42 | } | 42 | } |
43 | } | 43 | } |
44 | 44 | ||
45 | $data = ['linksToDisplay' => $linksToDisplay]; | 45 | $data = ['linksToDisplay' => $links]; |
46 | $this->executePageHooks('render_picwall', $data, TemplatePage::PICTURE_WALL); | 46 | $this->executePageHooks('render_picwall', $data, TemplatePage::PICTURE_WALL); |
47 | 47 | ||
48 | foreach ($data as $key => $value) { | 48 | foreach ($data as $key => $value) { |