WordPress.org

Make WordPress Core

Ticket #1262: bug1262_functions-post.php

File bug1262_functions-post.php, 2.6 KB (added by coffee2code, 16 years ago)
Line 
1Index: wp-includes/functions-post.php
2===================================================================
3--- wp-includes/functions-post.php      (revision 2551)
4+++ wp-includes/functions-post.php      (working copy)
5@@ -480,24 +480,33 @@
6        $now     = current_time('mysql');
7        $now_gmt = current_time('mysql', 1);
8 
9-       // Simple flood-protection
10-       if ( $lasttime = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_author_IP = '$user_ip' OR comment_author_email = '$email' ORDER BY comment_date DESC LIMIT 1") ) {
11-               $time_lastcomment = mysql2date('U', $lasttime);
12-               $time_newcomment  = mysql2date('U', $now_gmt);
13-               if ( ($time_newcomment - $time_lastcomment) < 15 ) {
14-                       do_action('comment_flood_trigger', $time_lastcomment, $time_newcomment);
15-                       die( __('Sorry, you can only post a new comment once every 15 seconds. Slow down cowboy.') );
16+       // If user is admin or the post author, never moderate or throttle
17+       if ( $user_id ) {
18+               $userdata = get_userdata($user_id);
19+               $post_author = $wpdb->get_var("SELECT post_author FROM $wpdb->posts WHERE ID = '$comment_post_ID' LIMIT 1");
20+       }
21+       if ( $userdata && ($user_id == $post_author || $userdata['user_level'] >= 9) ) {
22+               $approved = 1;
23+       } else {
24+               // Simple flood-protection
25+               if ( $lasttime = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_author_IP = '$user_ip' OR comment_author_email = '$email' ORDER BY comment_date DESC LIMIT 1") ) {
26+                       $time_lastcomment = mysql2date('U', $lasttime);
27+                       $time_newcomment  = mysql2date('U', $now_gmt);
28+                       if ( ($time_newcomment - $time_lastcomment) < 15 ) {
29+                               do_action('comment_flood_trigger', $time_lastcomment, $time_newcomment);
30+                               die( __('Sorry, you can only post a new comment once every 15 seconds. Slow down cowboy.') );
31+                       }
32                }
33-       }
34 
35-       if ( check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $comment_type) )
36-               $approved = 1;
37-       else
38-               $approved = 0;
39-       if ( wp_blacklist_check($author, $email, $url, $comment, $user_ip, $user_agent) )
40-               $approved = 'spam';
41+               if ( check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $comment_type) )
42+                       $approved = 1;
43+               else
44+                       $approved = 0;
45+               if ( wp_blacklist_check($author, $email, $url, $comment, $user_ip, $user_agent) )
46+                       $approved = 'spam';
47       
48-       $approved = apply_filters('pre_comment_approved', $approved);
49+               $approved = apply_filters('pre_comment_approved', $approved);
50+       }
51 
52        $result = $wpdb->query("INSERT INTO $wpdb->comments
53        (comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_approved, comment_agent, comment_type, user_id)