/** * 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; } }