====== PostService ====== **Layer:** ''Service'' · **Source:** ''lib/service/PostService.php:25'' (lines 25–1028) ---- class PostService ======= Docblock Metadata ======= ^ Tag ^ Value ^ | ''@category'' | Service class | | ''@author'' | M.Noermoehammad | | ''@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 (23) ======= ^ Visibility ^ Type ^ Name ^ Default ^ Line ^ | ''private'' | ''(untyped)'' | ''$postId'' | | 31 | | ''private'' | ''(untyped)'' | ''$post_image'' | | 37 | | ''private'' | ''(untyped)'' | ''$author'' | | 43 | | ''private'' | ''(untyped)'' | ''$post_date'' | | 49 | | ''private'' | ''(untyped)'' | ''$post_modified'' | | 57 | | ''private'' | ''(untyped)'' | ''$title'' | | 63 | | ''private'' | ''(untyped)'' | ''$slug'' | | 69 | | ''private'' | ''(untyped)'' | ''$content'' | | 75 | | ''private'' | ''(untyped)'' | ''$meta_desc'' | | 83 | | ''private'' | ''(untyped)'' | ''$post_status'' | | 91 | | ''private'' | ''(untyped)'' | ''$post_visibility'' | | 98 | | ''private'' | ''(untyped)'' | ''$post_password'' | | 105 | | ''private'' | ''(untyped)'' | ''$post_headlines'' | | 113 | | ''private'' | ''(untyped)'' | ''$comment_status'' | | 121 | | ''private'' | ''(untyped)'' | ''$passphrase'' | | 128 | | ''private'' | ''(untyped)'' | ''$topics'' | | 135 | | ''private'' | ''(untyped)'' | ''$tags'' | | 143 | | ''private'' | ''(untyped)'' | ''$post_locale'' | | 150 | | ''private'' | ''(untyped)'' | ''$postDao'' | | 158 | | ''private'' | ''(untyped)'' | ''$validator'' | | 166 | | ''private'' | ''(untyped)'' | ''$sanitizer'' | | 174 | | ''private'' | ''(untyped)'' | ''$topicDao'' | | 182 | | ''private'' | ''(untyped)'' | ''$mediaDao'' | | 190 | ======= Methods (49) ======= ^ Visibility ^ Method ^ Summary ^ Line ^ | public | ''__construct()'' | Constructor | 206 | | public | ''setPostId()'' | set post's ID | 220 | | public | ''setPostImage()'' | set post's image | 231 | | public | ''setPostAuthor()'' | set post's author | 242 | | public | ''setPostDate()'' | setPostDate | 253 | | public | ''setPostModified()'' | setPostModified | 264 | | public | ''setPostTitle()'' | set post's title | 274 | | public | ''setPostSlug()'' | set post's URL SEO Friendly | 284 | | public | ''setPostContent()'' | set post's content | 295 | | public | ''setMetaDesc()'' | set post's summary as meta_description tag | 305 | | public | ''setPublish()'' | set post's status | 316 | | public | ''setVisibility()'' | setVisibility() | 328 | | public | ''setProtected()'' | setProtected() | 342 | | public | ''setHeadlines()'' | setHeadlines | 353 | | public | ''setComment()'' | set comment's status | 364 | | public | ''setPassPhrase()'' | setPassPhrase | 375 | | public | ''setTopics()'' | set post's topic | 386 | | public | ''setPostTags()'' | setPostTags | 397 | | public | ''setPostLocale()'' | setPostLocale | 408 | | public | ''grabPosts()'' | Retrieve all posts. | 421 | | public | ''grabPost()'' | Retrieve a single post by ID. | 432 | | public | ''getPublishedPostsApi()'' | Get paginated published posts for API | 447 | | public | ''countPublishedPostsApi()'' | Count published posts for API | 459 | | public | ''getPublishedPostApi()'' | Get a single published post by ID for API | 470 | | public | ''addPost()'' | Insert new post | 481 | | public | ''modifyPost()'' | modifyPost | 531 | | public | ''removePost()'' | removePost | 577 | | public | ''processPostImage()'' | Process post image - orchestrates default or uploaded image handling. | 648 | | private | ''processDefaultImage()'' | Process default image (nophoto or existing image_id). | 672 | | private | ''processUploadedImage()'' | Process uploaded image - handles file upload and media record. | 730 | | public | ''postAuthorId()'' | postAuthorId | 785 | | public | ''postAuthorLevel()'' | postAuthorLevel | 803 | | public | ''totalPosts()'' | Total posts records. | 815 | | public | ''getArchiveIndexApi()'' | Get archive index (distinct year/month with post counts). | 827 | | public | ''getPostsByYearApi()'' | Get published posts by year for API. | 842 | | public | ''countPostsByYearApi()'' | Count published posts by year for API. | 854 | | public | ''getPostsByYearMonthApi()'' | Get published posts by year and month for API. | 870 | | public | ''countPostsByYearMonthApi()'' | Count published posts by year and month for API. | 883 | | public | ''searchPostsApi()'' | Search posts by keyword for API query endpoint. | 896 | | public | ''getPostTopicsApi()'' | Get topics for a post. | 907 | | public | ''setPostTopicsApi()'' | Set topic relationships for a post. | 919 | | public | ''createPostApi()'' | Create a post for the API and return the new ID. | 930 | | public | ''updatePostApi()'' | Update a post with dynamic fields for the API. | 942 | | public | ''removePostApi()'' | Delete a post and all related data. | 953 | | public | ''getPostByIdApi()'' | Get a post by ID (any status). | 966 | | public | ''getFeaturedMediaApi()'' | Get featured media row for the API. | 980 | | public | ''getTopicCheckboxes()'' | Get topic checkboxes for the post form. | 996 | | public | ''getMediaDropdown()'' | Get media dropdown for the post form. | 1010 | | public | ''getMediaUploadField()'' | Get media upload field for the post form. | 1024 | ======== __construct() ======== public function __construct(PostDao $postDao, FormValidator $validator, Sanitize $sanitizer, ?TopicDao $topicDao = null, ?MediaDao $mediaDao = null) //lines 206–213 (8)// Constructor Topic and media DAOs are optional so callers that cannot inject (API controllers are built with no arguments by ApiRouter) keep working; the admin composition root passes them explicitly. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postDao'' | [[scriptlog:lib:dao:postdao|''PostDao'']] | //required// | //none// | | ''$validator'' | [[scriptlog:lib:core:formvalidator|''FormValidator'']] | //required// | //none// | | ''$sanitizer'' | [[scriptlog:lib:core:sanitize|''Sanitize'']] | //required// | //none// | | ''$topicDao'' | [[scriptlog:lib:dao:topicdao|''?TopicDao'']] | ''null'' | Data access for post category lookups and writes | | ''$mediaDao'' | [[scriptlog:lib:dao:mediadao|''?MediaDao'']] | ''null'' | Data access for post media lookups and writes | ======== setPostId() ======== public function setPostId($postId) //lines 220–223 (4)// set post's ID ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postId'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPostImage() ======== public function setPostImage($post_image) //lines 231–234 (4)// set post's image ^ Parameter ^ Type ^ Default ^ Description ^ | ''$post_image'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPostAuthor() ======== public function setPostAuthor($author) //lines 242–245 (4)// set post's author ^ Parameter ^ Type ^ Default ^ Description ^ | ''$author'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPostDate() ======== public function setPostDate($date_created) //lines 253–256 (4)// setPostDate ^ Parameter ^ Type ^ Default ^ Description ^ | ''$date_created'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPostModified() ======== public function setPostModified($date_modified) //lines 264–267 (4)// setPostModified ^ Parameter ^ Type ^ Default ^ Description ^ | ''$date_modified'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPostTitle() ======== public function setPostTitle($title) //lines 274–277 (4)// set post's title ^ Parameter ^ Type ^ Default ^ Description ^ | ''$title'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPostSlug() ======== public function setPostSlug($slug) //lines 284–287 (4)// set post's URL SEO Friendly ^ Parameter ^ Type ^ Default ^ Description ^ | ''$slug'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPostContent() ======== public function setPostContent($content, $skipPurify = false) //lines 295–298 (4)// set post's content ^ Parameter ^ Type ^ Default ^ Description ^ | ''$content'' | ''(untyped)'' | //required// | //none// | | ''$skipPurify'' | ''(untyped)'' | ''false'' | //none// | **Returns:** ''(none declared)'' ======== setMetaDesc() ======== public function setMetaDesc($meta_desc) //lines 305–308 (4)// set post's summary as meta_description tag ^ Parameter ^ Type ^ Default ^ Description ^ | ''$meta_desc'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPublish() ======== public function setPublish($post_status) //lines 316–319 (4)// set post's status published or save as draft ^ Parameter ^ Type ^ Default ^ Description ^ | ''$post_status'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setVisibility() ======== public function setVisibility($post_visibility) //lines 328–331 (4)// setVisibility() setup post visibility whether is public, private or protected with password ^ Parameter ^ Type ^ Default ^ Description ^ | ''$post_visibility'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setProtected() ======== public function setProtected($post_password) //lines 342–345 (4)// setProtected() Post published with visibility protected will be created with it's own password someone know its password only can read whole post protected ^ Parameter ^ Type ^ Default ^ Description ^ | ''$post_password'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setHeadlines() ======== public function setHeadlines($post_headlines) //lines 353–356 (4)// setHeadlines ^ Parameter ^ Type ^ Default ^ Description ^ | ''$post_headlines'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setComment() ======== public function setComment($comment_status) //lines 364–367 (4)// set comment's status comment allowed(open) or not allowed(close) ^ Parameter ^ Type ^ Default ^ Description ^ | ''$comment_status'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPassPhrase() ======== public function setPassPhrase($passphrase) //lines 375–378 (4)// setPassPhrase ^ Parameter ^ Type ^ Default ^ Description ^ | ''$passphrase'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setTopics() ======== public function setTopics($topics) //lines 386–389 (4)// set post's topic ^ Parameter ^ Type ^ Default ^ Description ^ | ''$topics'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPostTags() ======== public function setPostTags($tags) //lines 397–400 (4)// setPostTags ^ Parameter ^ Type ^ Default ^ Description ^ | ''$tags'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== setPostLocale() ======== public function setPostLocale($post_locale) //lines 408–411 (4)// setPostLocale ^ Parameter ^ Type ^ Default ^ Description ^ | ''$post_locale'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' ======== grabPosts() ======== public function grabPosts($orderBy = 'ID', $author = null) //lines 421–424 (4)// Retrieve all posts. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$orderBy'' | ''(untyped)'' | '''ID''' | //none// | | ''$author'' | ''(untyped)'' | ''null'' | //none// | **Returns:** ''(none declared)'' — array|bool|object ======== grabPost() ======== public function grabPost($postId) //lines 432–435 (4)// Retrieve a single post by ID. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postId'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — array|bool|object ======== getPublishedPostsApi() ======== public function getPublishedPostsApi($page = 1, $perPage = 10, $sortBy = 'ID', $sortOrder = 'DESC', $author = null) //lines 447–451 (5)// Get paginated published posts for API ^ Parameter ^ Type ^ Default ^ Description ^ | ''$page'' | ''(untyped)'' | ''1'' | //none// | | ''$perPage'' | ''(untyped)'' | ''10'' | //none// | | ''$sortBy'' | ''(untyped)'' | '''ID''' | //none// | | ''$sortOrder'' | ''(untyped)'' | '''DESC''' | //none// | | ''$author'' | ''(untyped)'' | ''null'' | //none// | **Returns:** ''(none declared)'' — array ======== countPublishedPostsApi() ======== public function countPublishedPostsApi($author = null) //lines 459–462 (4)// Count published posts for API ^ Parameter ^ Type ^ Default ^ Description ^ | ''$author'' | ''(untyped)'' | ''null'' | //none// | **Returns:** ''(none declared)'' — integer ======== getPublishedPostApi() ======== public function getPublishedPostApi($postId) //lines 470–473 (4)// Get a single published post by ID for API ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postId'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — array|false ======== addPost() ======== public function addPost() //lines 481–523 (43)// Insert new post //Takes no parameters.// **Returns:** ''(none declared)'' — integer ======== modifyPost() ======== public function modifyPost() //lines 531–570 (40)// modifyPost //Takes no parameters.// **Returns:** ''(none declared)'' — void ======== removePost() ======== public function removePost() //lines 577–628 (52)// removePost removing an existing post record //Takes no parameters.// **Returns:** ''(none declared)'' ======== processPostImage() ======== public function processPostImage($file_location, $file_type, $file_name, $file_size, $file_extension, $new_filename, $width, $height, $media_access, $user_level, array $filtered, $isUpdate = false, $oldMediaId = null) //lines 648–659 (12)// Process post image - orchestrates default or uploaded image handling. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$file_location'' | ''(untyped)'' | //required// | //none// | | ''$file_type'' | ''(untyped)'' | //required// | //none// | | ''$file_name'' | ''(untyped)'' | //required// | //none// | | ''$file_size'' | ''(untyped)'' | //required// | //none// | | ''$file_extension'' | ''(untyped)'' | //required// | //none// | | ''$new_filename'' | ''(untyped)'' | //required// | //none// | | ''$width'' | ''(untyped)'' | //required// | //none// | | ''$height'' | ''(untyped)'' | //required// | //none// | | ''$media_access'' | ''(untyped)'' | //required// | //none// | | ''$user_level'' | ''(untyped)'' | //required// | //none// | | ''$filtered'' | ''array'' | //required// | //none// | | ''$isUpdate'' | ''(untyped)'' | ''false'' | //none// | | ''$oldMediaId'' | ''(untyped)'' | ''null'' | //none// | **Returns:** ''(none declared)'' — void ======== processDefaultImage() ======== private function processDefaultImage(array $filtered, $width, $height, $media_access, $user_level, $isUpdate = false) //lines 672–711 (40)// Process default image (nophoto or existing image_id). ^ Parameter ^ Type ^ Default ^ Description ^ | ''$filtered'' | ''array'' | //required// | //none// | | ''$width'' | ''(untyped)'' | //required// | //none// | | ''$height'' | ''(untyped)'' | //required// | //none// | | ''$media_access'' | ''(untyped)'' | //required// | //none// | | ''$user_level'' | ''(untyped)'' | //required// | //none// | | ''$isUpdate'' | ''(untyped)'' | ''false'' | //none// | **Returns:** ''(none declared)'' — int|null ======== processUploadedImage() ======== private function processUploadedImage($file_location, $file_type, $file_name, $file_size, $file_extension, $new_filename, $width, $height, $media_access, $user_level, array $filtered, $oldMediaId = null) //lines 730–776 (47)// Process uploaded image - handles file upload and media record. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$file_location'' | ''(untyped)'' | //required// | //none// | | ''$file_type'' | ''(untyped)'' | //required// | //none// | | ''$file_name'' | ''(untyped)'' | //required// | //none// | | ''$file_size'' | ''(untyped)'' | //required// | //none// | | ''$file_extension'' | ''(untyped)'' | //required// | //none// | | ''$new_filename'' | ''(untyped)'' | //required// | //none// | | ''$width'' | ''(untyped)'' | //required// | //none// | | ''$height'' | ''(untyped)'' | //required// | //none// | | ''$media_access'' | ''(untyped)'' | //required// | //none// | | ''$user_level'' | ''(untyped)'' | //required// | //none// | | ''$filtered'' | ''array'' | //required// | //none// | | ''$oldMediaId'' | ''(untyped)'' | ''null'' | //none// | **Returns:** ''(none declared)'' — void ======== postAuthorId() ======== public function postAuthorId() //lines 785–793 (9)// postAuthorId Checking whether author cookie_id or session_id exists //Takes no parameters.// **Returns:** ''(none declared)'' — string ======== postAuthorLevel() ======== public function postAuthorLevel() //lines 803–806 (4)// postAuthorLevel Checking whether author cookie_level or session_level exists. //Takes no parameters.// **Returns:** ''(none declared)'' — string|bool ======== totalPosts() ======== public function totalPosts(array $data = []): ?int //lines 815–820 (6)// Total posts records. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$data'' | ''array'' | ''[]'' | Optional list where the first element is the author ID. | **Returns:** ''?int'' — int|null ======== getArchiveIndexApi() ======== public function getArchiveIndexApi() //lines 827–830 (4)// Get archive index (distinct year/month with post counts). //Takes no parameters.// **Returns:** ''(none declared)'' — array ======== getPostsByYearApi() ======== public function getPostsByYearApi($year, $page = 1, $perPage = 10, $sortBy = 'ID', $sortOrder = 'DESC') //lines 842–846 (5)// Get published posts by year for API. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$year'' | ''(untyped)'' | //required// | //none// | | ''$page'' | ''(untyped)'' | ''1'' | //none// | | ''$perPage'' | ''(untyped)'' | ''10'' | //none// | | ''$sortBy'' | ''(untyped)'' | '''ID''' | //none// | | ''$sortOrder'' | ''(untyped)'' | '''DESC''' | //none// | **Returns:** ''(none declared)'' — array ======== countPostsByYearApi() ======== public function countPostsByYearApi($year) //lines 854–857 (4)// Count published posts by year for API. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$year'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — int ======== getPostsByYearMonthApi() ======== public function getPostsByYearMonthApi($year, $month, $page = 1, $perPage = 10, $sortBy = 'ID', $sortOrder = 'DESC') //lines 870–874 (5)// Get published posts by year and month for API. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$year'' | ''(untyped)'' | //required// | //none// | | ''$month'' | ''(untyped)'' | //required// | //none// | | ''$page'' | ''(untyped)'' | ''1'' | //none// | | ''$perPage'' | ''(untyped)'' | ''10'' | //none// | | ''$sortBy'' | ''(untyped)'' | '''ID''' | //none// | | ''$sortOrder'' | ''(untyped)'' | '''DESC''' | //none// | **Returns:** ''(none declared)'' — array ======== countPostsByYearMonthApi() ======== public function countPostsByYearMonthApi($year, $month) //lines 883–886 (4)// Count published posts by year and month for API. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$year'' | ''(untyped)'' | //required// | //none// | | ''$month'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — int ======== searchPostsApi() ======== public function searchPostsApi($keyword, $type = 'all', $limit = 50) //lines 896–899 (4)// Search posts by keyword for API query endpoint. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$keyword'' | ''(untyped)'' | //required// | //none// | | ''$type'' | ''(untyped)'' | '''all''' | 'blog', 'page', or 'all' | | ''$limit'' | ''(untyped)'' | ''50'' | //none// | **Returns:** ''(none declared)'' — array ======== getPostTopicsApi() ======== public function getPostTopicsApi($postId) //lines 907–910 (4)// Get topics for a post. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postId'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — array ======== setPostTopicsApi() ======== public function setPostTopicsApi($postId, $topicIds) //lines 919–922 (4)// Set topic relationships for a post. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postId'' | ''(untyped)'' | //required// | //none// | | ''$topicIds'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — void ======== createPostApi() ======== public function createPostApi(array $data) //lines 930–933 (4)// Create a post for the API and return the new ID. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$data'' | ''array'' | //required// | //none// | **Returns:** ''(none declared)'' — int ======== updatePostApi() ======== public function updatePostApi($postId, array $data) //lines 942–945 (4)// Update a post with dynamic fields for the API. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postId'' | ''(untyped)'' | //required// | //none// | | ''$data'' | ''array'' | //required// | //none// | **Returns:** ''(none declared)'' — void ======== removePostApi() ======== public function removePostApi($postId) //lines 953–958 (6)// Delete a post and all related data. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postId'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — void ======== getPostByIdApi() ======== public function getPostByIdApi($postId) //lines 966–969 (4)// Get a post by ID (any status). ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postId'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — array|false ======== getFeaturedMediaApi() ======== public function getFeaturedMediaApi($mediaId): ?array //lines 980–985 (6)// Get featured media row for the API. Normalizes the DAO result to null when no media exists so callers never receive false or boolean true. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$mediaId'' | ''(untyped)'' | //required// | //none// | **Returns:** ''?array'' — array|null Media row or null when missing ======== getTopicCheckboxes() ======== public function getTopicCheckboxes($postId = null): string //lines 996–999 (4)// Get topic checkboxes for the post form. Returns plain HTML so controllers pass data to views instead of DAO objects. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$postId'' | ''(untyped)'' | ''null'' | Post ID to pre-check, null for new posts | **Returns:** ''string'' — string Checkbox HTML ======== getMediaDropdown() ======== public function getMediaDropdown($selected = null): string //lines 1010–1013 (4)// Get media dropdown for the post form. Returns plain HTML so controllers pass data to views instead of DAO objects. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$selected'' | ''(untyped)'' | ''null'' | Media ID pre-selected in the list | **Returns:** ''string'' — string Dropdown HTML ======== getMediaUploadField() ======== public function getMediaUploadField($mediaId = null): string //lines 1024–1027 (4)// Get media upload field for the post form. Returns plain HTML so controllers pass data to views instead of DAO objects. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$mediaId'' | ''(untyped)'' | ''null'' | Current media ID for existing posts | **Returns:** ''string'' — string Upload field HTML ======= Imports ======= ^ Alias ^ Fully-qualified name ^ | ''FormValidator'' | [[scriptlog:lib:core:formvalidator|''Scriptlog\Core\FormValidator'']] | | ''Sanitize'' | [[scriptlog:lib:core:sanitize|''Scriptlog\Core\Sanitize'']] | | ''Session'' | [[scriptlog:lib:core:session|''Scriptlog\Core\Session'']] | | ''MediaDao'' | [[scriptlog:lib:dao:mediadao|''Scriptlog\Dao\MediaDao'']] | | ''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.//