예제 #1
0
 /**
  * check
  * @param string $akismet_author
  * @param string $akismet_author_email
  * @param string $akismet_author_url
  * @param MW_WP_Form_Data $Data
  * @return bool
  */
 public function check($akismet_author, $akismet_author_email, $akismet_author_url, $Data)
 {
     global $akismet_api_host, $akismet_api_port;
     if (!$this->is_enable()) {
         return false;
     }
     $doAkismet = false;
     $author = '';
     if ($Data->getValue($akismet_author)) {
         $author = $Data->getValue($akismet_author);
         $doAkismet = true;
     }
     $author_email = '';
     if ($Data->getValue($akismet_author_email)) {
         $author_email = $Data->getValue($akismet_author_email);
         $doAkismet = true;
     }
     $author_url = '';
     if ($Data->getValue($akismet_author_url)) {
         $author_url = $Data->getValue($akismet_author_url);
         $doAkismet = true;
     }
     if ($doAkismet) {
         $content = '';
         foreach ($Data->getValues() as $key => $value) {
             $value = $Data->get($key);
             $content .= $value . "\n\n";
         }
         $permalink = get_permalink();
         $akismet = array();
         $akismet['blog'] = get_option('home');
         $akismet['blog_lang'] = get_locale();
         $akismet['blog_charset'] = get_option('blog_charset');
         $akismet['user_ip'] = preg_replace('/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR']);
         $akismet['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
         $akismet['referrer'] = $_SERVER['HTTP_REFERER'];
         $akismet['comment_type'] = MWF_Config::NAME;
         if ($permalink) {
             $akismet['permalink'] = $permalink;
         }
         if ($author) {
             $akismet['comment_author'] = $author;
         }
         if ($author_email) {
             $akismet['comment_author_email'] = $author_email;
         }
         if ($author_url) {
             $akismet['comment_author_url'] = $author_url;
         }
         if ($content) {
             $akismet['comment_content'] = $content;
         }
         foreach ($_SERVER as $key => $value) {
             if (!in_array($key, array('HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW'))) {
                 $akismet[$key] = $value;
             }
         }
         $query_string = http_build_query($akismet, null, '&');
         if (is_callable(array('Akismet', 'http_post'))) {
             $response = Akismet::http_post($query_string, 'comment-check');
         } else {
             $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
         }
         $response = apply_filters('mwform_akismet_responce', $response);
         return $response[1] == 'true' ? true : false;
     }
 }