====== FrontService ====== **Layer:** ''Service'' · **Source:** ''lib/service/FrontService.php:43'' (lines 43–631) ---- class FrontService FrontService — front-end content retrieval service. Provides a unified, injectable service for retrieving published front-end content (posts, pages, topics/categories, archives, tags, galleries). Used by FrontHelper (as a delegation target) and by request handlers for content validation and rendering. All database queries use prepared statements via Registry::get('dbc') or delegate to injected DAO instances when available. Methods mirror the legacy FrontHelper static API so that FrontHelper can delegate to this service, providing backward compatibility while centralising data access. \ // Via Registry (typical usage) $frontService = Registry::get('frontService'); $post = $frontService->getPublishedPost(42); // Constructor injection (testing or DI) $service = new FrontService($postDao, $pageDao, $topicDao, $mediaDao); \ ======= Docblock Metadata ======= ^ Tag ^ Value ^ | ''@category'' | Service | | ''@author'' | System | | ''@license'' | MIT | | ''@version'' | 1.0 | | ''@since'' | Since Release 1.0 | ======= Inheritance ======= //No parent, interface or trait. This is a root type.// ======= Constants (0) ======= //None.// ======= Properties (6) ======= ^ Visibility ^ Type ^ Name ^ Default ^ Line ^ | ''private'' | [[scriptlog:lib:dao:postdao|''?PostDao'']] | ''$postDao'' | | 50 | | ''private'' | [[scriptlog:lib:dao:pagedao|''?PageDao'']] | ''$pageDao'' | | 57 | | ''private'' | [[scriptlog:lib:dao:topicdao|''?TopicDao'']] | ''$topicDao'' | | 64 | | ''private'' | [[scriptlog:lib:dao:mediadao|''?MediaDao'']] | ''$mediaDao'' | | 71 | | ''private'' | ''bool'' | ''$hasSanitizer'' | | 78 | | ''private'' | [[scriptlog:lib:core:sanitize|''?Sanitize'']] | ''$sanitizer'' | | 85 | ======= Methods (13) ======= ^ Visibility ^ Method ^ Summary ^ Line ^ | public | ''__construct()'' | Construct a new FrontService. | 98 | | public | ''getPublishedPost()'' | Retrieve a published post by ID, including author and media metadata. | 122 | | public | ''getPublishedPage()'' | Retrieve a published page by its slug. | 178 | | public | ''getPublishedTopic()'' | Retrieve a published topic/category by its slug. | 253 | | public | ''getPublishedTopicById()'' | Retrieve a published topic/category by its ID. | 291 | | public | ''getSimplePost()'' | Retrieve a simple post by ID (basic fields, no archive columns). | 325 | | public | ''getSimpleTopic()'' | Retrieve a simple topic/category by ID. | 368 | | public | ''getSimplePage()'' | Retrieve a simple page by ID. | 395 | | public | ''getSimpleArchive()'' | Retrieve archive index (all years/months with published blog posts). | 437 | | public | ''searchTag()'' | Search for a tag in published blog posts. | 466 | | public | ''getTagLists()'' | Retrieve a list of all unique, trimmed tags across published posts. | 501 | | public | ''getArchivePosts()'' | Retrieve published posts for a specific archive month/year. | 537 | | public | ''getGalleries()'' | Retrieve gallery images (media targeted as 'gallery'). | 589 | ======== __construct() ======== public function __construct($postDao = null, $pageDao = null, $topicDao = null, $mediaDao = null) //lines 98–110 (13)// Construct a new FrontService. Accepts optional DAO instances. Any DAO not provided will be resolved from the global Registry at construction time. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postDao'' | ''(untyped)'' | ''null'' | Optional post DAO. | | ''$pageDao'' | ''(untyped)'' | ''null'' | Optional page DAO. | | ''$topicDao'' | ''(untyped)'' | ''null'' | Optional topic DAO. | | ''$mediaDao'' | ''(untyped)'' | ''null'' | Optional media DAO. | ======== getPublishedPost() ======== public function getPublishedPost(int $id): ?array //lines 122–167 (46)// Retrieve a published post by ID, including author and media metadata. Uses a prepared JOIN query via the shared database connection (Registry::get('dbc')). Falls back to PostDao when the shared connection is unavailable. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$id'' | ''int'' | //required// | The post identifier. | **Returns:** ''?array'' — array|null Post data with user and media information, or null. ======== getPublishedPage() ======== public function getPublishedPage(string $slug): ?array //lines 178–242 (65)// Retrieve a published page by its slug. Tries the PageDao first (when available), then falls back to a prepared JOIN query via the shared database connection. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$slug'' | ''string'' | //required// | The page slug. | **Returns:** ''?array'' — array|null Page data with author and media information, or null. ======== getPublishedTopic() ======== public function getPublishedTopic(string $slug): ?array //lines 253–283 (31)// Retrieve a published topic/category by its slug. Uses a direct prepared statement instead of fetching all topics and iterating (avoids O(n) scan). ^ Parameter ^ Type ^ Default ^ Description ^ | ''$slug'' | ''string'' | //required// | The topic slug. | **Returns:** ''?array'' — array|null Topic data (ID, topic_title, topic_slug) or null. ======== getPublishedTopicById() ======== public function getPublishedTopicById(int $id): ?array //lines 291–315 (25)// Retrieve a published topic/category by its ID. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$id'' | ''int'' | //required// | The topic identifier. | **Returns:** ''?array'' — array|null Topic data (ID, topic_title, topic_slug) or null. ======== getSimplePost() ======== public function getSimplePost($id): ?array //lines 325–358 (34)// Retrieve a simple post by ID (basic fields, no archive columns). Legacy method matching FrontHelper::grabSimpleFrontPost(). ^ Parameter ^ Type ^ Default ^ Description ^ | ''$id'' | ''(untyped)'' | //required// | The post identifier. | **Returns:** ''?array'' — array|null Post data or null. ======== getSimpleTopic() ======== public function getSimpleTopic($id): ?array //lines 368–385 (18)// Retrieve a simple topic/category by ID. Legacy method matching FrontHelper::grabSimpleFrontTopic(). ^ Parameter ^ Type ^ Default ^ Description ^ | ''$id'' | ''(untyped)'' | //required// | The topic identifier. | **Returns:** ''?array'' — array|null Topic data (ID, topic_title, topic_slug) or null. ======== getSimplePage() ======== public function getSimplePage($id): ?array //lines 395–428 (34)// Retrieve a simple page by ID. Legacy method matching FrontHelper::grabSimpleFrontPage(). ^ Parameter ^ Type ^ Default ^ Description ^ | ''$id'' | ''(untyped)'' | //required// | The page identifier. | **Returns:** ''?array'' — array|null Page data or null. ======== getSimpleArchive() ======== public function getSimpleArchive(): array //lines 437–456 (20)// Retrieve archive index (all years/months with published blog posts). Legacy method matching FrontHelper::grabSimpleFrontArchive(). //Takes no parameters.// **Returns:** ''array'' — array List of archive rows with year_archive and month_archive. ======== searchTag() ======== public function searchTag(string $tag): array //lines 466–494 (29)// Search for a tag in published blog posts. Uses a LIKE query against the post_tags column. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$tag'' | ''string'' | //required// | The tag keyword to search for. | **Returns:** ''array'' — array Matching post data, or an empty array when not found. ======== getTagLists() ======== public function getTagLists(): array //lines 501–527 (27)// Retrieve a list of all unique, trimmed tags across published posts. //Takes no parameters.// **Returns:** ''array'' — array List of unique tag strings. ======== getArchivePosts() ======== public function getArchivePosts(array $values): ?array //lines 537–577 (41)// Retrieve published posts for a specific archive month/year. Legacy method matching FrontHelper::grabPreparedFrontArchive(). ^ Parameter ^ Type ^ Default ^ Description ^ | ''$values'' | ''array'' | //required// | Associative array with 'month' and 'year' keys. | **Returns:** ''?array'' — array|null Post data for the archive month, or null. ======== getGalleries() ======== public function getGalleries(int $start, int $limit): ?array //lines 589–630 (42)// Retrieve gallery images (media targeted as 'gallery'). Returns the last result from the result set, preserving the original FrontHelper::grabPreparedFrontGalleries() behaviour. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$start'' | ''int'' | //required// | Offset for pagination. | | ''$limit'' | ''int'' | //required// | Maximum number of rows to query. | **Returns:** ''?array'' — array|null Single gallery row with media_filename, media_caption, media_id; or null. ======= Imports ======= ^ Alias ^ Fully-qualified name ^ | ''Registry'' | [[scriptlog:lib:core:registry|''Scriptlog\Core\Registry'']] | | ''Sanitize'' | [[scriptlog:lib:core:sanitize|''Scriptlog\Core\Sanitize'']] | | ''MediaDao'' | [[scriptlog:lib:dao:mediadao|''Scriptlog\Dao\MediaDao'']] | | ''PageDao'' | [[scriptlog:lib:dao:pagedao|''Scriptlog\Dao\PageDao'']] | | ''PostDao'' | [[scriptlog:lib:dao:postdao|''Scriptlog\Dao\PostDao'']] | | ''TopicDao'' | [[scriptlog:lib:dao:topicdao|''Scriptlog\Dao\TopicDao'']] | ---- //This page is generated from source by 'tools/gendoc'. Edits will be overwritten.//