public static function pre_check_pingback($method)
 {
     if ($method !== 'pingback.ping') {
         return;
     }
     global $wp_xmlrpc_server;
     if (!is_object($wp_xmlrpc_server)) {
         return false;
     }
     // Lame: tightly coupled with the IXR class.
     $args = $wp_xmlrpc_server->message->params;
     if (!empty($args[1])) {
         $post_id = url_to_postid($args[1]);
         // If this gets through the pre-check, make sure we properly identify the outbound request as a pingback verification
         Akismet::pingback_forwarded_for(null, $args[0]);
         add_filter('http_request_args', array('Akismet', 'pingback_forwarded_for'), 10, 2);
         $comment = array('comment_author_url' => $args[0], 'comment_post_ID' => $post_id, 'comment_author' => '', 'comment_author_email' => '', 'comment_content' => '', 'comment_type' => 'pingback', 'akismet_pre_check' => '1', 'comment_pingback_target' => $args[1]);
         $comment = Akismet::auto_check_comment($comment);
         if (isset($comment['akismet_result']) && 'true' == $comment['akismet_result']) {
             // Lame: tightly coupled with the IXR classes. Unfortunately the action provides no context and no way to return anything.
             $wp_xmlrpc_server->error(new IXR_Error(0, 'Invalid discovery target'));
         }
     }
 }
示例#2
0
function akismet_auto_check_comment($commentdata)
{
    return Akismet::auto_check_comment($commentdata);
}
示例#3
0
function akismet_auto_check_comment($commentdata)
{
    _deprecated_function(__FUNCTION__, '3.0', 'Akismet::auto_check_comment()');
    return Akismet::auto_check_comment($commentdata);
}
 /**
  * Verify the $_POST using Akismet
  *
  * @filter akismet_comment_nonce
  * @link http://akismet.com/development/api/#comment-check
  * @uses akismet_init()
  * @uses akismet_auto_check_comment()
  *
  */
 function akismetCheck($Contact)
 {
     global $akismet_api_host, $akismet_api_port;
     // Disable using a filter
     if (apply_filters('disable_constant_contact_akismet', false)) {
         return true;
     }
     // Akismet not activated
     if (!class_exists('Akismet')) {
         do_action('ctct_activity', 'The Akismet class does not exist. Please upgrade to Version 3+ of Akismet.');
         return true;
     }
     $key = Akismet::get_api_key();
     if (empty($key)) {
         do_action('ctct_activity', 'Empty Akismet API key. Not processing.');
         return true;
     }
     /** Disable nonce verification */
     add_filter('akismet_comment_nonce', function () {
         return 'inactive';
     });
     ob_start();
     $comment_data = array('user_ID' => get_current_user_id(), 'comment_post_ID' => isset($_POST['cc_referral_post_id']) ? intval($_POST['cc_referral_post_id']) : NULL, 'comment_author' => $Contact->get('name'), 'comment_author_email' => $Contact->get('email'), 'is_test' => apply_filters('constant_contact_akismet_is_test', false));
     $check = Akismet::auto_check_comment($comment_data);
     ob_clean();
     if (empty($check) || empty($check['akismet_result'])) {
         do_action('ctct_activity', 'There was an issue with Akismet: the response was invalid.', $check);
     } else {
         switch ($check['akismet_result']) {
             case 'true':
                 do_action('ctct_activity', __('Akismet caught this entry as spam'), $check);
                 return new WP_Error('akismet', __('Your entry was flagged as spam.'), $check);
                 break;
             case 'false':
                 do_action('ctct_activity', __('Akismet cleared this comment'), $check);
                 break;
             default:
                 do_action('ctct_error', sprintf(__('Akismet was unable to check this entry (response: %s), will automatically retry again later.'), substr($check['akismet_result'], 0, 50)), $check);
         }
     }
     return true;
 }