This is an old revision of the document!
Table of Contents
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 (0)
None declared.
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.
