WordPress Version: 3.8
/**
* Check whether comment flooding is occurring.
*
* Won't run, if current user can manage options, so to not block
* administrators.
*
* @since 2.3.0
* @uses $wpdb
* @uses apply_filters() Calls 'comment_flood_filter' filter with first
* parameter false, last comment timestamp, new comment timestamp.
* @uses do_action() Calls 'comment_flood_trigger' action with parameters with
* last comment timestamp and new comment timestamp.
*
* @param string $ip Comment IP.
* @param string $email Comment author email address.
* @param string $date MySQL time string.
*/
function check_comment_flood_db($ip, $email, $date)
{
global $wpdb;
if (current_user_can('manage_options')) {
return;
}
// don't throttle admins
$hour_ago = gmdate('Y-m-d H:i:s', time() - HOUR_IN_SECONDS);
if ($lasttime = $wpdb->get_var($wpdb->prepare("SELECT `comment_date_gmt` FROM `{$wpdb->comments}` WHERE `comment_date_gmt` >= %s AND ( `comment_author_IP` = %s OR `comment_author_email` = %s ) ORDER BY `comment_date_gmt` DESC LIMIT 1", $hour_ago, $ip, $email))) {
$time_lastcomment = mysql2date('U', $lasttime, false);
$time_newcomment = mysql2date('U', $date, false);
/**
* Filter the comment flood status.
*
* @since 2.1.0
*
* @param bool $bool Whether a comment flood is occurring. Default false.
* @param int $time_lastcomment Timestamp of when the last comment was posted.
* @param int $time_newcomment Timestamp of when the new comment was posted.
*/
$flood_die = apply_filters('comment_flood_filter', false, $time_lastcomment, $time_newcomment);
if ($flood_die) {
/**
* Fires before the comment flood message is triggered.
*
* @since 1.5.0
*
* @param int $time_lastcomment Timestamp of when the last comment was posted.
* @param int $time_newcomment Timestamp of when the new comment was posted.
*/
do_action('comment_flood_trigger', $time_lastcomment, $time_newcomment);
if (defined('DOING_AJAX')) {
die(__('You are posting comments too quickly. Slow down.'));
}
wp_die(__('You are posting comments too quickly. Slow down.'), '', array('response' => 403));
}
}
}