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'));
         }
     }
 }
Beispiel #2
0
function akismet_pingback_forwarded_for($r, $url)
{
    return Akismet::pingback_forwarded_for($r, $url);
}