This is an old revision of the document!
Table of Contents
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 (3)
| Visibility | Type | Name | Default | Line |
|---|---|---|---|---|
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 | ''?ThemeRendererInterface'' | null | none |
$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\Core\SearchFinder'' |
ThemeRendererInterface | ''Scriptlog\Core\ThemeRendererInterface'' |
This page is generated from source by 'tools/gendoc'. Edits will be overwritten.
