0 ); return $settings; } function antispam_get_settings() { $antispam_settings = (array) get_option('antispam_settings'); $default_settings = antispam_default_settings(); $antispam_settings = array_merge($default_settings, $antispam_settings); // set empty options with default values return $antispam_settings; } function antispam_counter_stats() { $antispam_stats = get_option('antispam_stats', array()); if (array_key_exists('blocked_total', $antispam_stats)){ $antispam_stats['blocked_total']++; } else { $antispam_stats['blocked_total'] = 1; } update_option('antispam_stats', $antispam_stats); } function antispam_check_for_spam() { $spam_flag = false; $antspm_q = ''; if (isset($_POST['antspm-q'])) { $antspm_q = trim($_POST['antspm-q']); } $antspm_d = ''; if (isset($_POST['antspm-d'])) { $antspm_d = trim($_POST['antspm-d']); } $antspm_e = ''; if (isset($_POST['antspm-e-email-url-website'])) { $antspm_e = trim($_POST['antspm-e-email-url-website']); } if ( $antspm_q != date('Y') ) { // year-answer is wrong - it is spam if ( $antspm_d != date('Y') ) { // extra js-only check: there is no js added input - it is spam $spam_flag = true; if (empty($antspm_q)) { // empty answer - it is spam //$antispam_error_message .= 'Error: empty answer. ['.esc_attr( $antspm_q ).']
'.$rn; } else { //$antispam_error_message .= 'Error: answer is wrong. ['.esc_attr( $antspm_q ).']
'.$rn; } } } if ( ! empty($antspm_e)) { // trap field is not empty - it is spam $spam_flag = true; //$antispam_error_message .= 'Error: field should be empty. ['.esc_attr( $antspm_e ).']
'.$rn; } return $spam_flag; } function antispam_store_comment($commentdata) { global $wpdb; if ( isset( $commentdata['user_ID'] ) ) { $commentdata['user_id'] = $commentdata['user_ID'] = (int) $commentdata['user_ID']; } $prefiltered_user_id = ( isset( $commentdata['user_id'] ) ) ? (int) $commentdata['user_id'] : 0; $commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID']; if ( isset( $commentdata['user_ID'] ) && $prefiltered_user_id !== (int) $commentdata['user_ID'] ) { $commentdata['user_id'] = $commentdata['user_ID'] = (int) $commentdata['user_ID']; } elseif ( isset( $commentdata['user_id'] ) ) { $commentdata['user_id'] = (int) $commentdata['user_id']; } $commentdata['comment_parent'] = isset($commentdata['comment_parent']) ? absint($commentdata['comment_parent']) : 0; $parent_status = ( 0 < $commentdata['comment_parent'] ) ? wp_get_comment_status($commentdata['comment_parent']) : ''; $commentdata['comment_parent'] = ( 'approved' == $parent_status || 'unapproved' == $parent_status ) ? $commentdata['comment_parent'] : 0; if ( ! isset( $commentdata['comment_author_IP'] ) ) { $commentdata['comment_author_IP'] = $_SERVER['REMOTE_ADDR']; } $commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '', $commentdata['comment_author_IP'] ); if ( ! isset( $commentdata['comment_agent'] ) ) { $commentdata['comment_agent'] = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT']: ''; } $commentdata['comment_agent'] = substr( $commentdata['comment_agent'], 0, 254 ); if ( empty( $commentdata['comment_date'] ) ) { $commentdata['comment_date'] = current_time('mysql'); } if ( empty( $commentdata['comment_date_gmt'] ) ) { $commentdata['comment_date_gmt'] = current_time( 'mysql', 1 ); } $commentdata = wp_filter_comment($commentdata); $commentdata['comment_approved'] = wp_allow_comment( $commentdata, $avoid_die ); if ( is_wp_error( $commentdata['comment_approved'] ) ) { return $commentdata['comment_approved']; } $comment_ID = wp_insert_comment($commentdata); if ( ! $comment_ID ) { $fields = array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content' ); foreach ( $fields as $field ) { if ( isset( $commentdata[ $field ] ) ) { $commentdata[ $field ] = $wpdb->strip_invalid_text_for_column( $wpdb->comments, $field, $commentdata[ $field ] ); } } $commentdata = wp_filter_comment( $commentdata ); $commentdata['comment_approved'] = wp_allow_comment( $commentdata, $avoid_die ); if ( is_wp_error( $commentdata['comment_approved'] ) ) { return $commentdata['comment_approved']; } $comment_ID = wp_insert_comment( $commentdata ); if ( ! $comment_ID ) { return false; } } wp_set_comment_status( $comment_ID, 'spam' ); }