Archived
1
0

Database refactoring and improving blog comments, blog post history and more

This commit is contained in:
Marcel
2019-01-08 22:42:54 +01:00
parent 56aed78b00
commit 7f887a99b0
67 changed files with 3076 additions and 1755 deletions

View File

@@ -16,101 +16,215 @@
$this->load->model('UserModel', '', TRUE);
}
function transfer() {
$data = $this->db->query('SELECT * FROM kingofdog.blog_posts')->result_array();
foreach ($data as $item) {
extract($item);
// $this->db->query('INSERT INTO kingofdog_new.blog_post_versions (postID, lang, active, title, description, content, contentWordsCount, authorID, changes, edited) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [
// $postID, $language, $isActive, "", "", $content, $wordCount, $contentAuthorID, $versionMessage, $contentDate
// ]);
// $this->db->query('UPDATE kingofdog_new.blog_post_versions SET title = ?, description = ? WHERE postID = ? AND lang = ?', [
// $postTitle, $postDesc, $postID, $language
// ]);
// $this->db->query('UPDATE kingofdog_new.blog_post_versions SET url = ? WHERE postID = ?', [$postUrl, $postID]);
}
}
private function getPostIDByUrl($url) {
$data = $this->db->query('SELECT postID FROM blog_post_versions WHERE url = ? AND lang = ? AND active ORDER BY edited DESC LIMIT 1', [$url, $_SESSION['site_lang']])->result_array();
return !empty($data) ? $data[0]['postID'] : NULL;
}
function getAllPosts($search, $amount, $offset = 0)
{
$offset *= $amount;
if ($search !== '') {
$search = strtolower($search);
$posts = $this->db->query('
SELECT
p.*,
ca.name categoryName,
ca.display_name categoryDisplayName,
(SELECT count(*)
FROM blog_comments
WHERE post_id = p.postID) commentCount,
(SELECT count(*)
FROM blog_post_likes
WHERE post_id = p.postID) likeCount,
(SELECT wordCount FROM blog_content c WHERE c.postID = p.postID AND isActive = TRUE AND c.language = ? ORDER BY c.contentDate DESC LIMIT 1) wordCount
FROM blog_posts p, blog_categories ca
WHERE ca.id = p.postCategoryID
AND (CONCAT((SELECT t.postTitle FROM blog_translations t WHERE t.postID = p.postID AND language = ?), postUrl, (SELECT t.postDesc FROM blog_translations t WHERE t.postID = p.postID AND language = ?)) RLIKE ?
OR (SELECT content
FROM blog_content
WHERE blog_content.postID = p.postID AND isActive = TRUE
LIMIT 1) RLIKE ?)
AND postState = 1
ORDER BY postPublishDate DESC
LIMIT ? OFFSET ?', [$_SESSION['site_lang'], $_SESSION['site_lang'], $_SESSION['site_lang'], $search, $search, $amount, $offset])->result_array();
SELECT
p.*
FROM blog_post p
WHERE ((SELECT LOWER(title) RLIKE ? OR LOWER(description) RLIKE ? OR LOWER(content) RLIKE ? FROM blog_post_versions WHERE postID = p.ID AND lang = ?)
OR (SELECT LOWER(displayname) RLIKE ? FROM blog_categories c WHERE c.lang = ? AND c.categoryID IN (SELECT categoryID FROM blog_post_categories pc WHERE pc.postID = p.ID)))
AND state = 1
ORDER BY initialRelease DESC
LIMIT ? OFFSET ?', [$search, $search, $search, $_SESSION['site_lang'], $search, $_SESSION['site_lang'], $amount, $offset])->result_array();
} else {
$posts = $this->db->query('
SELECT p.*,
ca.name categoryName,
ca.display_name categoryDisplayName,
(SELECT count(*) FROM blog_comments WHERE post_id = p.postID) commentCount,
(SELECT count(*) FROM blog_post_likes WHERE post_id = p.postID) likeCount,
(SELECT wordCount FROM blog_content c WHERE c.postID = p.postID AND isActive = TRUE AND c.language = ? ORDER BY c.contentDate DESC LIMIT 1) wordCount
FROM blog_posts p, blog_categories ca
WHERE ca.id = p.postCategoryID
AND postState = 1
ORDER BY postPublishDate DESC
LIMIT ? OFFSET ?', [$_SESSION['site_lang'], $amount, $offset])->result_array();
SELECT *
FROM blog_post
WHERE state = 1
ORDER BY initialRelease DESC
LIMIT ? OFFSET ?', [$amount, $offset])->result_array();
}
$posts = $this->mergePostTitleDesc($posts);
$posts = $this->mergePostTranslation($posts);
$posts = $this->mergePostCategories($posts);
$posts = $this->mergePostStats($posts);
$posts = $this->mergePostAuthorData($posts);
return $posts;
}
public function mergePostTranslation($posts, $content = FALSE, $language = NULL, $indexID = 'ID')
{
$language = ($language == NULL ? $_SESSION['site_lang'] : $language);
foreach ($posts as $i => $post) {
$translationData = $this->getPostTranslation($post[$indexID], $content, $language);
if(isset($translationData['error']) && $translationData['error']) {
unset($posts[$i]);
continue;
}
$posts[$i] += $translationData;
}
return $posts;
}
private function mergePostCategories($posts, $language = NULL)
{
$language = $language == NULL ? $_SESSION['site_lang'] : $language;
foreach ($posts as $i => $post) {
$categories = $this->getPostCategories($post['ID'], $language);
$posts[$i]['categories'] = $categories;
}
return $posts;
}
private function getPostCategories($postID, $language)
{
$data = $this->db->query('SELECT ID, name, displayname FROM blog_categories WHERE categoryID IN (SELECT categoryID FROM blog_post_categories WHERE postID = ?) AND lang = ?', [$postID, $language])->result_array();
return $data;
}
private function mergePostStats($posts, $language = NULL)
{
$language = $language == NULL ? $_SESSION['site_lang'] : $language;
foreach ($posts as $i => $post) {
$stats = $this->getPostStats($post['ID'], $language);
$posts[$i] += $stats;
}
return $posts;
}
private function mergePostState($posts) {
$states = [
1 => "Veröffentlicht",
2 => "Entwurf",
3 => "Geplant",
4 => "Im Papierkorb",
];
foreach ($posts as $i => $post) {
$posts[$i]['stateName'] = $states[$post['state']];
}
return $posts;
}
private function getPostStats($postID, $language)
{
$comments = $this->db->query('SELECT COUNT(*) count FROM blog_post_comments WHERE postID = ?', [$postID])->result_array()[0]['count'];
$likes = $this->db->query('SELECT COUNT(*) count FROM blog_post_likes WHERE postID = ?', [$postID])->result_array()[0]['count'];
$words = $this->db->query('SELECT contentWordsCount count FROM blog_post_versions WHERE postID = ? AND active AND lang = ?', [$postID, $language])->result_array();
$words = empty($words) ? 0 : $words[0]['count'];
return [
'commentCount' => $comments,
'likeCount' => $likes,
'wordCount' => $words,
];
}
private function mergePostAuthorData($posts)
{
foreach ($posts as $i => $post) {
$authorData = $this->getAuthorData($post['authorID']);
$posts[$i]['author'] = $authorData;
}
return $posts;
}
public function getAuthorData($authorID)
{
$author = $this->db->query('SELECT u.ID, u.username, u.displayname, u.rank, s.profilePicture, s.headerImage, s.about FROM users u LEFT JOIN user_settings s ON u.ID = s.ID WHERE u.ID = ?', [$authorID])->result_array();
$author = $this->UserModel->setDefaultImages($author);
if (empty($author)) {
return null;
}
return $author[0];
}
public function getPostPageCount($search, $postsPerPage)
{
if ($search !== '') {
$search = strtolower($search);
$data = $this->db->query('
SELECT COUNT(*) pageCount
FROM blog_posts p, blog_categories ca
WHERE ca.id = p.postCategoryID
AND (CONCAT((SELECT t.postTitle FROM blog_translations t WHERE t.postID = p.postID AND language = ?), postUrl, (SELECT t.postDesc FROM blog_translations t WHERE t.postID = p.postID AND language = ?)) RLIKE ?
OR (SELECT content FROM blog_content WHERE blog_content.postID = p.postID AND isActive = TRUE LIMIT 1) RLIKE ?)
AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $search])->result_array();
SELECT COUNT(*) pageCount
FROM blog_post p
WHERE ((SELECT LOWER(title) RLIKE ? OR LOWER(description) RLIKE ? OR LOWER(content) RLIKE ? FROM blog_post_versions v WHERE v.postID = p.ID AND v.lang = ? AND active)
OR (SELECT LOWER(displayname) RLIKE ? FROM blog_categories c WHERE c.lang = ? AND c.categoryID IN (SELECT categoryID FROM blog_post_categories pc WHERE pc.postID = p.ID)))
AND state = 1', [$search, $search, $_SESSION['site_lang'], $search, $_SESSION['site_lang']])->result_array();
} else {
$data = $this->db->query('SELECT COUNT(*) pageCount FROM blog_posts')->result_array();
$data = $this->db->query('SELECT COUNT(*) pageCount FROM blog_post')->result_array();
}
return ($data[0]['pageCount']) / $postsPerPage;
}
function getCategoryPosts($category, $amount, $offset = 0)
{
$category = $this->db->query('SELECT ID FROM blog_categories WHERE name = ? AND lang = ?', [$category, $_SESSION['site_lang']])->result_array();
if(empty($category)) {
return NULL;
}
$offset *= $amount;
$posts = $this->db->query('
SELECT p.*, ca.name categoryName, ca.display_name categoryDisplayName, (SELECT count(*) FROM blog_comments WHERE post_id = p.postID) commentCount, (SELECT count(*) FROM blog_post_likes WHERE post_id = p.postID) likeCount
FROM blog_posts p, blog_categories ca
WHERE ca.id = p.postCategoryID
AND postState = 1
AND ca.name = ?
ORDER BY postPublishDate DESC
LIMIT ? OFFSET ?', [$category, $amount, $offset])->result_array();
$posts = $this->mergePostTitleDesc($posts);
$posts = $this->db->query('SELECT * FROM blog_post p WHERE ID IN (SELECT postID FROM blog_post_categories pc WHERE pc.categoryID = ?) LIMIT ? OFFSET ?', [$category[0]['ID'], $amount, $offset])->result_array();
$posts = $this->mergePostTranslation($posts);
$posts = $this->mergePostCategories($posts);
$posts = $this->mergePostStats($posts);
$posts = $this->mergePostAuthorData($posts);
return $posts;
}
public function getCategoryPostsByID($categoryID, $amount = 3, $postID = NULL)
public function getCategoryPostsByID($categories, $amount = 3, $postID = NULL)
{
$posts = $this->db->query('SELECT * FROM blog_posts WHERE postCategoryID = ? AND postID != ? AND blog_posts.postState = 1 ORDER BY postPublishDate DESC LIMIT ?', [$categoryID, $postID, $amount])->result_array();
return $this->mergePostTitleDesc($posts);
function getIDs($val) {
return $val['ID'];
}
if(empty($categories)) {
return NULL;
}
$categories = array_map('getIDs', $categories);
$posts = $this->db->query('SELECT * FROM blog_post WHERE ID IN (SELECT postID FROM blog_post_categories WHERE categoryID IN ?) AND ID != ? AND state = 1 ORDER BY initialRelease DESC LIMIT ?', [$categories, $postID, $amount])->result_array();
$posts = $this->mergePostTranslation($posts);
return $posts;
}
public function getTagPosts($tag, $amount, $offset = 0) {
public function getTagPosts($tag, $amount, $offset = 0)
{
$offset *= $amount;
$posts = $this->db->query('SELECT p.*, ca.name categoryName, ca.display_name categoryDisplayName, (SELECT count(*) FROM blog_comments WHERE post_id = p.postID) commentCount, (SELECT count(*) FROM blog_post_likes WHERE post_id = p.postID) likeCount FROM blog_posts p LEFT JOIN blog_categories ca ON ca.ID = p.postCategoryID WHERE postState = 1 AND EXISTS(SELECT post_id FROM blog_post_tags WHERE tag_id = (SELECT ID FROM blog_tags t WHERE t.name = ?) AND post_id = p.postID) ORDER BY postPublishDate DESC LIMIT ? OFFSET ?', [$tag, $amount, $offset])->result_array();
$posts = $this->mergePostTitleDesc($posts);
$tag = strtolower($tag);
$tagID = $this->db->query('SELECT ID FROM blog_tags WHERE name = ? AND lang = ?', [$tag, $_SESSION['site_lang']])->result_array();
if(empty($tagID)) {
return;
}
$posts = $this->db->query('SELECT * FROM blog_post p WHERE state = 1 AND ID IN (SELECT postID FROM blog_post_tags WHERE tagID = ?) ORDER BY initialRelease DESC LIMIT ? OFFSET ?', [$tagID[0]['ID'], $amount, $offset])->result_array();
$posts = $this->mergePostTranslation($posts);
$posts = $this->mergePostCategories($posts);
$posts = $this->mergePostStats($posts);
$posts = $this->mergePostAuthorData($posts);
return $posts;
}
function getCategoryIDAfterInsert($name, $display_name)
{
if (!$this->db->simple_query('INSERT INTO blog_categories (name, display_name) VALUES (?, ?)', [$name, $display_name])) {
$return = $this->db->query('SELECT ID FROM blog_categories WHERE name = ? AND display_name = ? LIMIT 1', [$name, $display_name])->result_array()[0];
if (!$this->db->simple_query('INSERT INTO blog_categories (name, displayname) VALUES (?, ?)', [$name, $display_name])) {
$return = $this->db->query('SELECT ID FROM blog_categories WHERE name = ? AND displayname = ? LIMIT 1', [$name, $display_name])->result_array()[0];
$return = $return['ID'];
} else {
$return = $this->db->query('SELECT LAST_INSERT_ID() ID')->result_array()[0]['ID'];
@@ -120,7 +234,9 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
function incrementViews($id)
{
$this->db->query('UPDATE blog_posts SET postViews = postViews+1 WHERE postID = ?', [$id]);
$this->db->query('INSERT IGNORE INTO blog_post_stats (ID) VALUES (?)', [$id]);
$this->db->query('UPDATE blog_post_stats SET views = views + 1 WHERE ID = ?', [$id]);
$this->db->cache_delete('admin', 'blog');
}
@@ -135,172 +251,157 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function getPost($postUrl)
{
$content = $this->db->query('
SELECT p.*,
ca.name categoryName,
ca.display_name categoryDisplayName,
COUNT(co.comment) commentCount,
(SELECT count(*) FROM blog_post_likes l WHERE l.post_id = p.postID) likeCount
FROM blog_posts p
LEFT JOIN blog_categories ca ON p.postCategoryID = ca.ID
LEFT JOIN blog_comments co ON p.postID = co.post_id
LEFT JOIN blog_post_likes l ON p.postID = l.post_id
WHERE postUrl = ? AND postState = 1
GROUP BY p.postID', [$postUrl])->result_array(); //TODO: language integration
SELECT p.*
FROM blog_post p
WHERE (SELECT postID FROM blog_post_versions v WHERE v.postID = p.ID AND (v.lang = ? OR v.lang = "de") AND active AND url = ? ORDER BY edited DESC LIMIT 1) = p.ID AND state = 1
GROUP BY ID', [$_SESSION['site_lang'], $postUrl])->result_array(); //TODO: language integration
$content = $this->mergePostTitleDesc($content);
$content = $this->mergePostTranslation($content, true);
$content = $this->mergePostStats($content);
$content = $this->mergePostCategories($content);
$content = $this->mergePostAuthorData($content);
$content = $this->mergePostContent($content, $_SESSION['site_lang']);
return $content[0];
}
public function getPostDataByID($postID)
{
$data = $this->db->query('
SELECT p.*,
ca.name AS categoryName,
ca.display_name AS categoryDisplayName,
COUNT(co.comment) AS commentCount,
COUNT(l.post_id) AS likeCount
FROM blog_posts p
LEFT JOIN blog_categories ca ON p.postCategoryID = ca.ID
LEFT JOIN blog_comments co ON p.postID = co.post_id
LEFT JOIN blog_post_likes l ON p.postID = l.post_id
WHERE postID = ?
GROUP BY p.postID', [$postID])->result_array();
SELECT *
FROM blog_post
WHERE ID = ?', [$postID])->result_array();
$data = $this->mergePostCategories($data);
return $data;
}
public function getContentDataByID($postID, $contentID, $lang)
{
$data = $this->db->query('SELECT * FROM blog_content WHERE postID = ? AND contentID = ? AND language = ?', [$postID, $contentID, $lang])->result_array();
return $data;
}
public function getTranslationDataByID($postID, $translationID, $lang)
{
$data = $this->db->query('SELECT * FROM blog_translations WHERE postID = ? AND postTranslationID = ? AND language = ?', [$postID, $translationID, $lang])->result_array();
return $data;
}
private function getPostContentByID($postID, $language)
{
$content = $this->db->query('SELECT * FROM blog_content WHERE postID = ? AND isActive = TRUE AND language = ? ORDER BY contentDate DESC LIMIT 1', [$postID, $language])->result_array();
return $content;
}
public function getRandomPosts($postID)
{
$posts = $this->db->query('SELECT * FROM blog_posts WHERE postID <> ? AND postState = 1 ORDER BY RAND() LIMIT 3', [$postID])->result_array();
$posts = $this->mergePostTitleDesc($posts);
$posts = $this->db->query('SELECT * FROM blog_post WHERE ID <> ? AND state = 1 ORDER BY RAND() LIMIT 3', [$postID])->result_array();
$posts = $this->mergePostTranslation($posts);
$posts = $this->mergePostAuthorData($posts);
return $posts;
}
public function mergePostTitleDesc($posts, $language = NULL)
public function getPostTranslation($postID, $showContent, $language)
{
$language = ($language == NULL ? $_SESSION['site_lang'] : $language);
foreach ($posts as $i => $post) {
$titleDesc = $this->getPostTitleDesc($post['postID'], $language);
$posts[$i]['postTitle'] = $titleDesc['title'];
$posts[$i]['postDesc'] = $titleDesc['desc'];
}
return $posts;
}
$data = $this->db->query('SELECT * FROM blog_post_versions WHERE postID = ? AND active ORDER BY lang ASC', [$postID])->result_array();
private function mergePostAuthorData($posts)
{
foreach ($posts as $i => $post) {
$authorData = $this->getAuthorData($post['postAuthorID']);
$posts[$i]['postAuthorDisplayname'] = $authorData['displayname'];
$posts[$i]['postAuthorUsername'] = $authorData['username'];
$posts[$i]['postAuthorProfilePicture'] = $authorData['profile_picture'];
$posts[$i]['postAuthorHeaderImage'] = $authorData['header_image'];
$posts[$i]['postAuthorRank'] = $authorData['rank'];
$posts[$i]['postAuthorAbout'] = $authorData['about'];
}
return $posts;
}
private function mergePostContent($posts, $language)
{
$language = ($language == NULL ? $_SESSION['site_lang'] : $language);
foreach ($posts as $i => $post) {
$content = $this->getPostContentByID($post['postID'], $language);
if (empty($content) && $_SESSION['site_lang'] !== 'de') {
$content = $this->getPostContentByID($post['postID'], 'de');
}
if (!empty($content)) {
$content = $content[0];
$posts[$i]['postContent'] = $content['content'];
$posts[$i]['postWordCount'] = $content['wordCount'];
}
}
return $posts;
}
public function getPostTitleDesc($postID, $language)
{
$data = $this->db->query('SELECT * FROM blog_translations WHERE postID = ? ORDER BY blog_translations.language ASC', [$postID])->result_array();
if (empty($data)) {
return ['title' => 'Nicht vorhandener Post', 'desc' => 'Aus unbekannten Gründen ist dieser Blog-Post nicht vorhanden. Bitte versuche es später erneut oder kontaktiere das Support-Team'];
return ['error' => true, 'title' => 'Nicht vorhandener Post', 'description' => 'Aus unbekannten Gründen ist dieser Blog-Post nicht vorhanden. Bitte versuche es später erneut oder kontaktiere das Support-Team'];
}
$postTitle = $data[0]['postTitle'];
$postDesc = $data[0]['postDesc'];
$url = $data[0]['url'];
$title = $data[0]['title'];
$description = $data[0]['description'];
$content = $data[0]['content'];
foreach ($data as $row) {
if ($row['language'] == $language) {
$postTitle = $row['postTitle'];
$postDesc = $row['postDesc'];
if ($row['lang'] == $language) {
$url = $row['url'];
$title = $row['title'];
$description = $row['description'];
$content = $row['content'];
break;
}
}
return ['title' => $postTitle, 'desc' => $postDesc];
$return = [
'url' => $url,
'title' => $title,
'description' => $description,
];
if($showContent) {
$return['content'] = $content;
}
return $return;
}
public function getAuthorData($authorID)
{
$author = $this->db->query('SELECT ID, username, displayname, rank, profile_picture, header_image, about FROM users WHERE ID = ?', [$authorID])->result_array();
public function getPostTranslationByID($postID, $versionID, $lang) {
$data = $this->db->query('SELECT * FROM blog_post_versions WHERE postID = ? AND ID = ? AND lang = ?', [$postID, $versionID, $lang])->result_array();
return $data;
}
$author = $this->UserModel->setDefaultImages($author);
if(empty($author)) {
return null;
}
return $author[0];
public function getPostTranslationByHashID($versionID) {
$data = $this->db->query('SELECT * FROM blog_post_versions WHERE MD5(ID) = ?', [$versionID])->result_array();
return !empty($data) ? $data[0] : NULL;
}
public function getComments($postID)
{
$comments = $this->db->query('SELECT * FROM blog_comments WHERE post_id = ? ORDER BY date_created DESC', [$postID])->result_array();
$comments = $this->db->query('SELECT * FROM blog_post_comments WHERE postID = ? ORDER BY date DESC', [$postID])->result_array();
return $comments;
}
public function getCommentsByUrl($postUrl)
{
return $this->db->query('SELECT * FROM blog_comments WHERE post_id = (SELECT postID FROM blog_posts WHERE postUrl = ?) ORDER BY date_created DESC', [$postUrl])->result_array();
$ID = $this->getPostIDByUrl($postUrl);
if($ID !== NULL) {
return $this->getComments($ID);
} else {
return NULL;
}
}
public function addComment($postID, $userID, $comment, $reply, $replyTo)
{
$this->db->query('INSERT INTO blog_comments (post_id, user_id, comment, reply, replyTo_id) VALUES (?, ?, ?, ?, ?)', [$postID, $userID, $comment, $reply, $replyTo]);
public function getComment($commentID) {
$comment = $this->db->query('SELECT * FROM blog_post_comments WHERE ID = ?', [$commentID])->result_array();
return !empty($comment) ? $comment[0] : NULL;
}
public function isCommentIDValid($commentID) {
$comment = $this->db->query('SELECT ID FROM blog_post_comments WHERE ID = ?', [$commentID])->result_array();
return !empty($comment);
}
public function addCommentByUrl($postUrl, $userID, $comment, $replyTo)
{
$postID = $this->getPostIDByUrl($postUrl);
if($postID == NULL) {
return null;
}
$this->addComment($postID, $userID, $comment, $replyTo);
return $this->db->query('SELECT * FROM blog_post_comments WHERE postID = ? AND userID = ? ORDER BY ID DESC LIMIT 1', [$postID, $userID])->result_array()[0];
}
public function addComment($postID, $userID, $comment, $replyTo)
{
$this->db->query('INSERT INTO blog_post_comments (postID, userID, comment, replyToID) VALUES (?, ?, ?, ?)', [$postID, $userID, $comment, $replyTo]);
$this->db->cache_delete('user', 'getComments');
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
$this->db->cache_delete('blog', 'comment');
$this->db->cache_delete('blog', 'getComments');
$this->db->cache_delete('blog', 'getReportModal');
$this->db->cache_delete('blog', 'reportModal');
$this->db->cache_delete('blog', 'getDeleteModal');
$this->db->cache_delete('blog', 'deleteComment');
$this->db->cache_delete('admin', 'blog');
}
public function addCommentByUrl($postUrl, $userID, $comment, $reply, $replyTo)
{
$postID = $this->db->query('SELECT postID FROM blog_posts WHERE postUrl = ?', [$postUrl])->result_array();
if(empty($postID)) {
return null;
}
public function reportComment($commentID, $reason, $reasonText) {
$this->db->query('INSERT INTO blog_post_comments_reports (commentID, reason, reasonText) VALUES (?, ?, ?)', [$commentID, $reason, $reasonText]);
$this->addComment($postID[0]['postID'], $userID, $comment, $reply, $replyTo);
$this->db->cache_delete('admin', 'blog');
}
return $this->db->query('SELECT * FROM blog_comments WHERE post_id = ? AND user_id = ? ORDER BY ID DESC LIMIT 1', [$postID[0]['postID'], $userID])->result_array()[0];
public function deleteComment($userID, $commentID) {
$this->db->query('DELETE FROM blog_post_comments WHERE replyToID = ?', [$commentID]);
$this->db->query('DELETE FROM blog_post_comments WHERE userID = ? AND ID = ?', [$userID, $commentID]);
$this->db->cache_delete('user', 'getComments');
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
$this->db->cache_delete('blog', 'comment');
$this->db->cache_delete('blog', 'getComments');
$this->db->cache_delete('blog', 'getReportModal');
$this->db->cache_delete('blog', 'reportModal');
$this->db->cache_delete('blog', 'getDeleteModal');
$this->db->cache_delete('blog', 'deleteComment');
$this->db->cache_delete('admin', 'blog');
}
public function getAllTags()
@@ -310,13 +411,14 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function getTags($postID)
{
$tags = $this->db->query('SELECT t.* FROM blog_tags t WHERE ID IN (SELECT tag_id FROM blog_post_tags WHERE post_id = ?)', [$postID])->result_array();
$tags = $this->db->query('SELECT t.* FROM blog_tags t WHERE ID IN (SELECT tagID FROM blog_post_tags WHERE postID = ?)', [$postID])->result_array();
return $tags;
}
public function mergeTagInfo($tags) {
public function mergeTagInfo($tags)
{
foreach ($tags as $i => $tag) {
$data = $this->db->query('SELECT count(*) countUsed, SUM(postViews) totalViews FROM blog_posts WHERE postID = (SELECT post_id FROM blog_post_tags WHERE tag_id = ? AND post_id = postID)', [$tag['ID']])->result_array();
$data = $this->db->query('SELECT count(*) countUsed, SUM(postViews) totalViews FROM blog_posts WHERE postID = (SELECT postID FROM blog_post_tags WHERE tag_id = ? AND postID = postID)', [$tag['ID']])->result_array();
$data = $data[0];
$tags[$i]['countUsed'] = $data['countUsed'];
$tags[$i]['totalViews'] = $data['totalViews'] != '' ? $data['totalViews'] : 0;
@@ -326,7 +428,7 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function hasAlreadyLiked($postID, $userID)
{
$getLikes = $this->db->query('SELECT * FROM blog_post_likes WHERE post_id = ? AND user_id = ?', [$postID, $userID])->result_array();
$getLikes = $this->db->query('SELECT * FROM blog_post_likes WHERE postID = ? AND userID = ?', [$postID, $userID])->result_array();
if (empty($getLikes)) {
return false;
} else {
@@ -336,53 +438,49 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function addLike($postID, $userID)
{
$this->db->query('INSERT INTO blog_post_likes (post_id, user_id) VALUES (?, ?)', [$postID, $userID]);
$this->db->query('INSERT INTO blog_post_likes (postID, userID) VALUES (?, ?)', [$postID, $userID]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
$this->db->cache_delete('blog', 'like');
$this->db->cache_delete('admin', 'blog');
return $this->db->query('SELECT count(*) likeCount FROM blog_post_likes WHERE post_id = ?', [$postID])->result_array()[0];
return $this->db->query('SELECT count(*) likeCount FROM blog_post_likes WHERE postID = ?', [$postID])->result_array()[0];
}
public function removeLike($postID, $userID)
{
$this->db->query('DELETE FROM blog_post_likes WHERE post_id = ? AND user_id = ?', [$postID, $userID]);
$this->db->query('DELETE FROM blog_post_likes WHERE postID = ? AND userID = ?', [$postID, $userID]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
$this->db->cache_delete('blog', 'like');
$this->db->cache_delete('admin', 'blog');
return $this->db->query('SELECT count(*) likeCount FROM blog_post_likes WHERE post_id = ?', [$postID])->result_array()[0];
return $this->db->query('SELECT count(*) likeCount FROM blog_post_likes WHERE postID = ?', [$postID])->result_array()[0];
}
public function getPostList($onlyTrash)
{
$posts = $this->db->query('SELECT p.*,
ca.name categoryName,
ca.display_name categoryDisplayName,
(SELECT count(*)
FROM blog_comments
WHERE post_id = p.postID) commentCount,
(SELECT count(*)
FROM blog_post_likes
WHERE post_id = p.postID) likeCount,
(SELECT display_name
FROM blog_states
WHERE ID = p.postState) postStateDisplay
FROM blog_posts p
LEFT JOIN blog_categories ca ON ca.ID = p.postCategoryID
WHERE postIsDeleted = ?', [$onlyTrash])->result_array();
$posts = $this->mergePostTitleDesc($posts);
if($onlyTrash) {
$posts = $this->db->query('SELECT p.*, s.views
FROM blog_trash p LEFT JOIN blog_post_stats s ON s.ID = p.ID')->result_array();
} else {
$posts = $this->db->query('SELECT p.*, s.views
FROM blog_post p LEFT JOIN blog_post_stats s ON s.ID = p.ID')->result_array();
}
$posts = $this->mergePostTranslation($posts);
$posts = $this->mergePostCategories($posts);
$posts = $this->mergePostStats($posts);
$posts = $this->mergePostAuthorData($posts);
$posts = $this->mergePostState($posts);
return $posts;
}
public function getAllContentVersions($postID, $lang)
public function getAllPostVersions($postID, $lang)
{
$content = $this->db->query('SELECT * FROM blog_content WHERE postID = ? AND language = ? ORDER BY contentDate DESC', [$postID, $lang])->result_array();
$content = $this->db->query('SELECT *, MD5(ID) hashID FROM blog_post_versions WHERE postID = ? AND lang = ? ORDER BY edited DESC', [$postID, $lang])->result_array();
return $content;
}
@@ -391,7 +489,7 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
$this->db->cache_off();
$tagData = $this->db->query('SELECT ID FROM blog_tags WHERE name = ?', [strtolower($tag)])->result_array();
if (empty($tagData)) {
$this->db->query('INSERT INTO blog_tags (name, display_name) VALUES (?, ?)', [strtolower($tag), $tag]);
$this->db->query('INSERT INTO blog_tags (name, displayname) VALUES (?, ?)', [strtolower($tag), $tag]);
$tagData = $this->db->query('SELECT ID FROM blog_tags WHERE name = ?', [strtolower($tag)])->result_array();
}
$this->db->cache_on();
@@ -401,7 +499,7 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function addPostTagByID($postID, $tagID)
{
$this->db->query('INSERT INTO blog_post_tags (post_id, tag_id) VALUES (?, ?) ON DUPLICATE KEY UPDATE post_id = post_id', [$postID, $tagID]);
$this->db->query('INSERT INTO blog_post_tags (postID, tagID) VALUES (?, ?) ON DUPLICATE KEY UPDATE postID = postID', [$postID, $tagID]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
@@ -411,7 +509,7 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function deleteAllPostTags($postID)
{
$this->db->query('DELETE FROM blog_post_tags WHERE post_id = ?', [$postID]);
$this->db->query('DELETE FROM blog_post_tags WHERE postID = ?', [$postID]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
@@ -419,6 +517,25 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
$this->db->cache_delete('admin', 'blog');
}
public function addPostCategoryByID($postID, $categoryID)
{
$this->db->query('INSERT INTO blog_post_categories (postID, categoryID) VALUES (?, ?) ON DUPLICATE KEY UPDATE postID = postID', [$postID, $categoryID]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
$this->db->cache_delete('blog', 'like');
$this->db->cache_delete('admin', 'blog');
}
public function deleteAllPostCategories($postID)
{
$this->db->query('DELETE FROM blog_post_categories WHERE postID = ?', [$postID]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
$this->db->cache_delete('blog', 'category');
$this->db->cache_delete('admin', 'blog');
}
// TODO: Update
public function prepareContentForRelease($content)
{
@@ -469,7 +586,8 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function deletePost($id)
{
$this->db->query('UPDATE blog_posts SET postIsDeleted = TRUE, postDeletedDate = NOW(), postState = 4 WHERE postID = ? LIMIT 1', [$id]);
$this->db->query('INSERT INTO blog_trash SELECT * FROM blog_post WHERE ID = ?', [$id]);
$this->db->query('DELETE FROM blog_post WHERE ID = ?', [$id]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
@@ -481,7 +599,8 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function restorePost($id)
{
$this->db->query('UPDATE blog_posts SET postIsDeleted = FALSE, postDeletedDate = NULL, postState = 1 WHERE postID = ? LIMIT 1', [$id]);
$this->db->query('INSERT INTO blog_post SELECT * FROM blog_trash WHERE ID = ?', [$id]);
$this->db->query('DELETE FROM blog_trash WHERE ID = ?', [$id]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
@@ -493,11 +612,19 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function deletePostFinally($id)
{
$this->db->query('DELETE FROM blog_content WHERE postID = ? AND (SELECT postIsDeleted FROM blog_posts WHERE postID = ?) = TRUE', [$id, $id]);
$this->db->query('DELETE FROM blog_post_likes WHERE post_id = ? AND (SELECT postIsDeleted FROM blog_posts WHERE postID = ?) = TRUE', [$id, $id]);
$this->db->query('DELETE FROM blog_post_tags WHERE post_id = ? AND (SELECT postIsDeleted FROM blog_posts WHERE postID = ?) = TRUE', [$id, $id]);
$this->db->query('DELETE FROM blog_comments WHERE post_id = ? AND (SELECT postIsDeleted FROM blog_posts WHERE postID = ?) = TRUE', [$id, $id]);
$this->db->query('DELETE FROM blog_posts WHERE postID = ? AND postIsDeleted = TRUE LIMIT 1', [$id]);
$data = $this->db->query('SELECT ID FROM blog_trash WHERE ID = ?', [$id])->result_array();
if(empty($data)) {
return;
}
$this->db->query('DELETE FROM blog_post_categories WHERE postID = ?', [$id]);
$this->db->query('DELETE FROM blog_post_comments WHERE postID = ?', [$id]);
$this->db->query('DELETE FROM blog_post_likes WHERE postID = ?', [$id]);
$this->db->query('DELETE FROM blog_post_stats WHERE ID = ?', [$id]);
$this->db->query('DELETE FROM blog_post_tags WHERE postID = ?', [$id]);
$this->db->query('DELETE FROM blog_post_versions WHERE postID = ?', [$id]);
$this->db->query('DELETE FROM blog_trash WHERE ID = ? LIMIT 1', [$id]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
@@ -507,47 +634,29 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
$this->db->cache_delete('admin', 'blog');
}
public function getPrevPost($id)
public function getPrevPost($initialRelease)
{
$posts = $this->db->query('SELECT postID, postUrl, postImage FROM blog_posts WHERE postPublishDate < (SELECT postPublishDate FROM blog_posts WHERE postID = ?) AND postState = 1 ORDER BY postPublishDate DESC LIMIT 1', [$id])->result_array();
return $this->mergePostTitleDesc($posts);
$posts = $this->db->query('SELECT ID, image FROM blog_post WHERE initialRelease < ? AND state = 1 ORDER BY initialRelease DESC LIMIT 1', [$initialRelease])->result_array();
$posts = $this->mergePostTranslation($posts);
return $posts;
}
public function getNextPost($id)
public function getNextPost($initialRelease)
{
$posts = $this->db->query('SELECT postID, postUrl, postImage FROM blog_posts WHERE postPublishDate > (SELECT postPublishDate FROM blog_posts WHERE postID = ?) AND postState = 1 ORDER BY postPublishDate ASC LIMIT 1', [$id])->result_array();
return $this->mergePostTitleDesc($posts);
$posts = $this->db->query('SELECT ID, image FROM blog_post WHERE initialRelease > ? AND state = 1 ORDER BY initialRelease ASC LIMIT 1', [$initialRelease])->result_array();
$posts = $this->mergePostTranslation($posts);
return $posts;
}
public function getMostRecentPosts($count)
{
$posts = $this->db->query('SELECT postID, postImage, postUrl, postPublishDate FROM blog_posts WHERE postState = 1 ORDER BY postPublishDate DESC LIMIT ?', [$count])->result_array();
return $this->mergePostTitleDesc($posts);
$posts = $this->db->query('SELECT ID, image, initialRelease FROM blog_post WHERE state = 1 ORDER BY initialRelease DESC LIMIT ?', [$count])->result_array();
$posts = $this->mergePostTranslation($posts);
return $posts;
}
private function countWords($text)
public function getReadingTime($wordCount)
{
$text = preg_replace("/<[a-zA-Z0-9\/ .,:;\-_+!?&%=\"]+>/", '', $text);
return str_word_count($text);
}
public function getReadingTime($postID)
{
$data = $this->db->query('SELECT wordCount, language FROM blog_content c WHERE postID = ? AND isActive = TRUE AND (c.language = ? OR c.language = "de") ORDER BY contentDate DESC', [$postID, $_SESSION['site_lang']])->result_array();
if (empty($data)) {
return 0;
}
$wordCount = $data[0]['wordCount'];
foreach ($data as $entry) {
if ($entry['language'] == $_SESSION['site_lang']) {
$wordCount = $entry['wordCount'];
break;
}
}
$wordsPerSecond = 3;
$duration = $wordCount / $wordsPerSecond;
$duration /= 60;
@@ -557,53 +666,46 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
public function createNewPostDraft($authorID)
{
$this->db->query('INSERT INTO blog_posts (postAuthorID, postState) VALUE (?, 2)', [$authorID]);
$data = $this->db->query('SELECT postID FROM blog_posts WHERE postState = 2 ORDER BY postID DESC LIMIT 1')->result_array();
$this->db->query('INSERT INTO blog_post (authorID, state) VALUE (?, 2)', [$authorID]);
$this->db->cache_delete('admin', 'blog');
$data = $this->db->query('SELECT ID FROM blog_post WHERE state = 2 ORDER BY ID DESC LIMIT 1')->result_array();
return intval($data[0]['postID']);
}
public function createNewContentDraft($postID)
{
$this->db->query('INSERT INTO blog_content (postID, isActive) VALUES (?, 0)', [$postID]);
public function createNewTranslationDraft($postID, $authorID, $lang) {
$this->db->query('INSERT INTO blog_post_versions (postID, authorID, active, lang) VALUES (?, ?, 0, ?)', [$postID, $authorID, $lang]);
$this->db->cache_delete('admin', 'blog');
$data = $this->db->query('SELECT contentID FROM blog_content WHERE postID = ? ORDER BY contentID DESC LIMIT 1', [$postID])->result_array();
return intval($data[0]['contentID']);
$data = $this->db->query('SELECT ID FROM blog_post_versions WHERE postID = ? ORDER BY ID DESC LIMIT 1', [$postID])->result_array();
return intval($data[0]['ID']);
}
public function createNewTranslation($postID, $language)
public function updatePostDraft($postID, $initialRelease, $postImage)
{
$data = $this->db->query('SELECT postTranslationID FROM blog_translations WHERE postID = ? AND language = ?', [$postID, $language])->result_array();
if (empty($data)) {
$this->db->query('INSERT INTO blog_translations (postID, language) VALUES (?, ?)', [$postID, $language]);
$data = $this->db->query('SELECT postTranslationID FROM blog_translations WHERE postID = ? AND language = ? ORDER BY postTranslationID DESC', [$postID, $language])->result_array();
}
return intval($data[0]['postTranslationID']);
}
public function updatePostDraft($postID, $postUrl, $postCategory, $postPublishDate, $postImage)
{
$this->db->query('UPDATE blog_posts SET postUrl = ?, postCategoryID = ?, postPublishDate = ?, postImage = ? WHERE postID = ?', [$postUrl, $postCategory, $postPublishDate, $postImage, $postID]);
$this->db->cache_delete('admin', 'edit');
}
public function updateContentDraft($contentID, $postContent, $postLang)
{
$wordCount = $this->countWords($postContent);
$this->db->query('UPDATE blog_content SET content = ?, language = ?, contentDate = NOW(), wordCount = ? WHERE contentID = ?', [$postContent, $postLang, $wordCount, $contentID]);
$this->db->query('UPDATE blog_post SET initialRelease = ?, image = ? WHERE ID = ?', [$initialRelease, $postImage, $postID]);
$this->db->cache_delete('admin', 'blog');
}
public function updateTranslation($translationID, $postTitle, $postDesc)
public function updateTranslationDraft($versionID, $url, $title, $description, $content, $lang)
{
$this->db->query('UPDATE blog_translations SET postTitle = ?, postDesc = ? WHERE postTranslationID = ?', [$postTitle, $postDesc, $translationID]);
$wordCount = $this->countWords($content);
$this->db->query('UPDATE blog_post_versions SET lang = ?, url = ?, title = ?, description = ?, content = ?, contentWordsCount = ?, edited = NOW() WHERE ID = ?', [$lang, $url, $title, $description, $content, $wordCount, $versionID]);
$this->db->cache_delete('admin', 'blog');
}
private function countWords($text)
{
$text = preg_replace("/<[a-zA-Z0-9\/ .,:;\-_+!?&%=\"]+>/", '', $text);
return str_word_count($text);
}
public function publishPostDraft($postID)
{
$this->db->query('UPDATE blog_posts SET postPublishDate = NOW(), postLastEdit = NOW(), postState = 1 WHERE postID = ?', [$postID]);
$this->db->query('UPDATE blog_post SET initialRelease = NOW(), lastEdit = NOW(), state = 1 WHERE ID = ?', [$postID]);
$this->db->query('INSERT INTO blog_post_stats (ID) VALUES (?)', [$postID]);
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'post');
$this->db->cache_delete('blog', 'tag');
@@ -612,54 +714,65 @@ AND postState = 1', [$_SESSION['site_lang'], $_SESSION['site_lang'], $search, $s
$this->db->cache_delete('admin', 'blog');
}
public function publishContentDraft($authorID, $contentID, $postID, $lang)
public function publishTranslationDraft($postID, $versionID, $authorID, $lang)
{
$firstContent = $this->db->query('SELECT contentID FROM blog_content WHERE postID = ? AND contentID != ? AND language = ?', [$postID, $contentID, $lang])->result_array();
$isNative = TRUE;
if(!empty($firstContent)) {
$isNative = FALSE;
$this->db->query('UPDATE blog_post_versions SET active = FALSE WHERE postID = ? AND lang = ?', [$postID, $lang]);
$this->db->query('UPDATE blog_post_versions SET active = TRUE, edited = NOW(), authorID = ? WHERE postID = ? AND ID = ?', [$authorID, $postID, $versionID]);
}
public function getPostVersionIDs($postID) {
$data = $this->db->query('SELECT ID, lang FROM blog_post_versions WHERE postID = ? GROUP BY lang ORDER BY active DESC, edited DESC, ID DESC', [$postID])->result_array();
return $data;
}
public function getPostVersions($postID) {
function getIDs($val) {
return $val['ID'];
}
$this->db->query('UPDATE blog_content SET isActive = FALSE WHERE postID = ?', [$postID]);
$this->db->query('UPDATE blog_content SET isActive = TRUE, isNativePost = ?, contentDate = NOW(), contentAuthorID = ? WHERE contentID = ?', [$isNative, $authorID, $contentID]);
}
$versionIDs = $this->getPostVersionIDs($postID);
$versionIDs = array_map("getIDs", $versionIDs);
$data = $this->db->query('SELECT * FROM blog_post_versions WHERE ID IN ?', [$versionIDs])->result_array();
public function getPostTranslationIDs($postID) {
$data = $this->db->query('SELECT postTranslationID, language FROM blog_translations WHERE postID = ?', [$postID])->result_array();
return $data;
}
public function getPostContentIDs($postID) {
$data = $this->db->query('SELECT (SELECT contentID FROM blog_content WHERE language = c.language ORDER BY contentID DESC LIMIT 1) contentID, language FROM blog_content c WHERE postID = ? AND language IS NOT NULL GROUP BY language ORDER BY contentID DESC', [$postID])->result_array();
return $data;
}
public function getPostTranslations($postID)
{
$data = $this->db->query('SELECT * FROM blog_translations t LEFT JOIN blog_content c ON c.postID = t.postID AND c.language = t.language WHERE t.postID = ?', [$postID])->result_array();
return $data;
}
public function postIDExisting($postID)
{
$data = $this->db->query('SELECT postID FROM blog_posts WHERE postID = ?', [$postID])->result_array();
$data = $this->db->query('SELECT ID FROM blog_post WHERE ID = ?', [$postID])->result_array();
return !empty($data);
}
public function contentIDExisting($postID, $contentID)
public function versionIDExisting($postID, $versionID)
{
$data = $this->db->query('SELECT contentID FROM blog_content WHERE postID = ? AND contentID = ?', [$postID, $contentID])->result_array();
$data = $this->db->query('SELECT ID FROM blog_post_versions WHERE postID = ? AND ID = ?', [$postID, $versionID])->result_array();
return !empty($data);
}
public function translationIDExisting($postID, $translationID)
public function postUrlExisting($postUrl)
{
$data = $this->db->query('SELECT postTranslationID FROM blog_translations WHERE postID = ? AND postTranslationID = ?', [$postID, $translationID])->result_array();
$data = $this->db->query('SELECT url FROM blog_post_versions WHERE url = ?', [$postUrl])->result_array();
return !empty($data);
}
public function postUrlExisting($postUrl) {
$data = $this->db->query('SELECT postUrl FROM blog_posts WHERE postUrl = ?', [$postUrl])->result_array();
return !empty($data);
public function createCategory($name, $displayname, $lang, $categoryID = null) {
$sameName = $this->db->query('SELECT categoryID FROM blog_categories WHERE name = ? AND displayname = ? AND lang = ?', [$name, $displayname, $lang])->result_array();
if(!empty($sameName)) {
return $sameName[0]['categoryID'];
}
if($categoryID == null) {
$highestCategoryID = $this->db->query('SELECT categoryID FROM blog_categories ORDER BY categoryID DESC LIMIT 1')->result_array();
$categoryID = !empty($highestCategoryID) ? $highestCategoryID[0]['categoryID'] + 1 : 1;
}
$this->db->query('INSERT INTO blog_categories (categoryID, lang, name, displayname) VALUES (?, ?, ?, ?)', [$categoryID, $lang, $name, $displayname]);
$this->db->cache_delete('admin', 'blog');
$this->db->cache_delete('blog', 'index');
$this->db->cache_delete('blog', 'category');
$this->db->cache_delete('blog', 'tag');
$this->db->cache_delete('blog', 'search');
$this->db->cache_delete('blog', 'post');
return $categoryID;
}
}