From e2789872a5381a6a4125bef11d8d94651fe17141 Mon Sep 17 00:00:00 2001 From: phibel Date: Fri, 5 Oct 2018 00:32:33 +0200 Subject: [PATCH] FIX the database was not updated when a post was deleted Looks like someone was interrupted during work and than it was merged into the repo? Anyway, the needed information are stored in $postInfo[] and not in $row[]. --- e107_plugins/forum/forum_class.php | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/e107_plugins/forum/forum_class.php b/e107_plugins/forum/forum_class.php index 7fa410d2e..41c101e85 100644 --- a/e107_plugins/forum/forum_class.php +++ b/e107_plugins/forum/forum_class.php @@ -2527,27 +2527,24 @@ class e107forum * Delete a Post * @param $postId integer * @param $updateCounts boolean - * + * @return "null" if this post does not exist, "true" if post could deleted, otherwise "false" */ function postDelete($postId, $updateCounts = true) { $postId = (int)$postId; - $e107 = e107::getInstance(); + $sql = e107::getDb(); $deleted = false; $postInfo = $sql->retrieve('forum_post', '*', 'post_id = '.$postId); - //if(!$sql->select('forum_post', '*', 'post_id = '.$postId)) + if(!is_array($postInfo) || empty($postInfo)) { - echo 'NOT FOUND!'; return; + return null; } - - - $row = $sql->fetch(); //delete attachments if they exist - if($row['post_attachments']) + if($postInfo['post_attachments']) { $this->postDeleteAttachments('post', $postId); } @@ -2563,24 +2560,24 @@ class e107forum if($updateCounts) { // decrement user post counts - if ($row['post_user']) + if ($postInfo['post_user']) { - $sql->update('user_extended', 'user_plugin_forum_posts=GREATEST(user_plugin_forum_posts-1,0) WHERE user_extended_id='.$row['post_user']); + $sql->update('user_extended', 'user_plugin_forum_posts=GREATEST(user_plugin_forum_posts-1,0) WHERE user_extended_id='.$postInfo['post_user']); } // update thread with correct reply counts - $sql->update('forum_thread', "thread_total_replies=GREATEST(thread_total_replies-1,0) WHERE thread_id=".$row['post_thread']); + $sql->update('forum_thread', "thread_total_replies=GREATEST(thread_total_replies-1,0) WHERE thread_id=".$postInfo['post_thread']); // update forum with correct thread/reply counts - $sql->update('forum', "forum_replies=GREATEST(forum_replies-1,0) WHERE forum_id=".$row['post_forum']); + $sql->update('forum', "forum_replies=GREATEST(forum_replies-1,0) WHERE forum_id=".$postInfo['post_forum']); // update thread lastpost info - $this->forumUpdateLastpost('thread', $row['post_thread']); + $this->forumUpdateLastpost('thread', $postInfo['post_thread']); // update forum lastpost info - $this->forumUpdateLastpost('forum', $row['post_forum']); + $this->forumUpdateLastpost('forum', $postInfo['post_forum']); } - return $deleted; // return boolean. $threadInfo['thread_total_replies']; + return $deleted; }