Scriptlog Docs

Scriptlog Documentation

Code reference for the Scriptlog codebase

User Tools

Site Tools


scriptlog:lib:service:postservice

This is an old revision of the document!


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.

scriptlog/lib/service/postservice.1790413760.txt.gz · Last modified: by admin