====== SearchController ======
**Layer:** ''Controller'' · **Source:** ''lib/controller/SearchController.php:21'' (lines 21–301)
----
class SearchController
Handles frontend search requests with HTMX fragment support.
======= Docblock Metadata =======
^ Tag ^ Value ^
| ''@category'' | Controller |
| ''@author'' | Scriptlog |
| ''@license'' | MIT |
| ''@version'' | 1.0 |
======= Inheritance =======
//No parent, interface or trait. This is a root type.//
======= Constants (0) =======
//None.//
======= Properties (5) =======
^ Visibility ^ Type ^ Name ^ Default ^ Line ^
| ''private'' | ''(untyped)'' | ''$searchFinder'' | | 26 |
| ''private'' | ''(untyped)'' | ''$themeRenderer'' | | 31 |
| ''private'' | ''(untyped)'' | ''$perPage'' | ''10'' | 36 |
| ''private'' | ''(untyped)'' | ''$rateLimitMax'' | ''30'' | 41 |
| ''private'' | ''(untyped)'' | ''$rateLimitWindow'' | ''60'' | 46 |
======= Methods (6) =======
^ Visibility ^ Method ^ Summary ^ Line ^
| public | ''__construct()'' | (undocumented) | 48 |
| private | ''checkRateLimit()'' | Check rate limit for search endpoint. | 59 |
| public | ''search()'' | Handle search request — returns full page or fragment. | 78 |
| private | ''buildPagination()'' | Build pagination data from search results. | 182 |
| private | ''renderPaginationHtml()'' | Render pagination HTML matching existing theme pattern. | 221 |
| private | ''renderFullSearch()'' | Render full search results page. | 285 |
======== __construct() ========
public function __construct(?ThemeRendererInterface $themeRenderer = null, ?SearchFinder $searchFinder = null)
//lines 48–52 (5)//
^ Parameter ^ Type ^ Default ^ Description ^
| ''$themeRenderer'' | [[scriptlog:lib:core:themerendererinterface|''?ThemeRendererInterface'']] | ''null'' | //none// |
| ''$searchFinder'' | [[scriptlog:lib:core:searchfinder|''?SearchFinder'']] | ''null'' | //none// |
======== checkRateLimit() ========
private function checkRateLimit(): bool
//lines 59–73 (15)//
Check rate limit for search endpoint.
//Takes no parameters.//
**Returns:** ''bool'' — bool
======== search() ========
public function search(): void
//lines 78–173 (96)//
Handle search request — returns full page or fragment.
//Takes no parameters.//
**Returns:** ''void''
======== buildPagination() ========
private function buildPagination(array $results, string $keyword): array
//lines 182–211 (30)//
Build pagination data from search results.
^ Parameter ^ Type ^ Default ^ Description ^
| ''$results'' | ''array'' | //required// | //none// |
| ''$keyword'' | ''string'' | //required// | //none// |
**Returns:** ''array'' — array
======== renderPaginationHtml() ========
private function renderPaginationHtml(int $currentPage, int $totalPages, string $path): string
//lines 221–276 (56)//
Render pagination HTML matching existing theme pattern.
^ Parameter ^ Type ^ Default ^ Description ^
| ''$currentPage'' | ''int'' | //required// | //none// |
| ''$totalPages'' | ''int'' | //required// | //none// |
| ''$path'' | ''string'' | //required// | //none// |
**Returns:** ''string'' — string
======== renderFullSearch() ========
private function renderFullSearch(array $results, string $keyword = '', array $pagination = []): void
//lines 285–300 (16)//
Render full search results page.
^ Parameter ^ Type ^ Default ^ Description ^
| ''$results'' | ''array'' | //required// | //none// |
| ''$keyword'' | ''string'' | '''''' | //none// |
| ''$pagination'' | ''array'' | ''[]'' | //none// |
**Returns:** ''void''
======= Imports =======
^ Alias ^ Fully-qualified name ^
| ''SearchFinder'' | [[scriptlog:lib:core:searchfinder|''Scriptlog\Core\SearchFinder'']] |
| ''ThemeRendererInterface'' | [[scriptlog:lib:core:themerendererinterface|''Scriptlog\Core\ThemeRendererInterface'']] |
----
//This page is generated from source by 'tools/gendoc'. Edits will be overwritten.//