From 39f42fda6ba21bb467cb433c018176e67e11dfff 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[]. I am quite not sure about this line (which I removed): echo 'NOT FOUND!'; I can not see a reason for this echo, and why an empty return in the next step? Most calls of this function postDelete() expect true/false or they dont care. There is only one function that does something with the return value, it is the function forumDeletePost() in the forum_mod.php. It builds a string with the returned value, which leads to: "CANCEL and Forum Options". So the return could be: "CANCEL and true Forum Options" "CANCEL and false Forum Options" "CANCEL and Forum Options" Not one of the three lines makes sense to me. Any suggestions? --- 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 7fa410d2ea..c80793ca37 100644 --- a/e107_plugins/forum/forum_class.php +++ b/e107_plugins/forum/forum_class.php @@ -2527,27 +2527,24 @@ function threadDelete($threadId, $updateForumLastpost = true) * Delete a Post * @param $postId integer * @param $updateCounts boolean - * + * @return 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 $deleted; } - - - $row = $sql->fetch(); //delete attachments if they exist - if($row['post_attachments']) + if($postInfo['post_attachments']) { $this->postDeleteAttachments('post', $postId); } @@ -2563,24 +2560,24 @@ function postDelete($postId, $updateCounts = true) 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; }