]> git.mjollnir.org Git - s9y.git/commitdiff
Fix decreasing comment count when tracbkack is deleted
authorgarvinhicking <garvinhicking>
Thu, 30 Mar 2006 09:18:07 +0000 (09:18 +0000)
committergarvinhicking <garvinhicking>
Thu, 30 Mar 2006 09:18:07 +0000 (09:18 +0000)
docs/NEWS
include/functions_comments.inc.php

index 63cefb43004f663d138f3af8f293eb2d6d666f10..280e0a39ea4877cd6681dcd134aa22910838c568 100644 (file)
--- a/docs/NEWS
+++ b/docs/NEWS
@@ -3,6 +3,9 @@
 Version 1.0 ()
 ------------------------------------------------------------------------
 
+   * Fix messing up comment count when deleting a trackback from admin
+     panel (garvinhicking)
+
    * Fix missing UTF-8 encoding of date locales on Windows setups
      (garvinhicking)
 
index 3003d3c6d546d2d576e3e2c3a8a1b41630452577..bf4d6080a735554f6613fc81b99db81a0d521ef4 100644 (file)
@@ -296,6 +296,12 @@ function serendipity_printComments($comments, $parentid = 0, $depth = 0, $trace
 function serendipity_deleteComment($id, $entry_id, $type='comments') {
     global $serendipity;
 
+    $id       = (int)$id;
+    $entry_id = (int)$entry_id;
+    if ($id < 1 OR $entry_id < 1) {
+        return false;
+    }
+
     if ($_SESSION['serendipityAuthedUser'] === true) {
         $admin = '';
         if (!serendipity_checkPermission('adminEntriesMaintainOthers')) {
@@ -304,21 +310,24 @@ function serendipity_deleteComment($id, $entry_id, $type='comments') {
 
         /* We have to figure out if the comment we are about to delete, is awaiting approval,
            if so - we should *not* subtract it from the entries table */
-        $sql = serendipity_db_query("SELECT status, parent_id FROM {$serendipity['dbPrefix']}comments
-                                            WHERE entry_id = '". (int)$entry_id ."'
-                                                    AND id = '". (int)$id ."'
-                                                    $admin", true);
+        $sql = serendipity_db_query("SELECT type, status, parent_id FROM {$serendipity['dbPrefix']}comments
+                                            WHERE entry_id = ". $entry_id ."
+                                                    AND id = ". $id , true);
 
         serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}comments
-                                    WHERE entry_id = '". (int)$entry_id ."'
-                                            AND id = '". (int)$id ."'
-                                            $admin");
+                                    WHERE entry_id = ". $entry_id ."
+                                            AND id = ". $id );
 
         if ($sql['status'] !== 'pending') {
-            serendipity_db_query("UPDATE {$serendipity['dbPrefix']}entries SET $type = $type-1 WHERE id = '". (int)$entry_id ."' $admin");
+            if (!empty($sql['type']) && $sql['type'] != 'NORMAL') {
+                $type = 'trackbacks';
+            } else {
+                $type = 'comments';
+            }
+            serendipity_db_query("UPDATE {$serendipity['dbPrefix']}entries SET $type = $type-1 WHERE id = ". $entry_id);
         }
 
-        serendipity_db_query("UPDATE {$serendipity['dbPrefix']}comments SET parent_id = " . (int)$sql['parent_id'] . " WHERE parent_id = '" . (int)$id . "'");
+        serendipity_db_query("UPDATE {$serendipity['dbPrefix']}comments SET parent_id = " . (int)$sql['parent_id'] . " WHERE parent_id = " . $id);
 
         return true;
     } else {