fixes #308
This commit is contained in:
parent
15e62f7aa9
commit
13aaa4fbce
@ -33,25 +33,23 @@
|
|||||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Error constants
|
// Error constants
|
||||||
define("AKISMET_SERVER_NOT_FOUND", 0);
|
define("AKISMET_SERVER_NOT_FOUND", 0);
|
||||||
define("AKISMET_RESPONSE_FAILED", 1);
|
define("AKISMET_RESPONSE_FAILED", 1);
|
||||||
define("AKISMET_INVALID_KEY", 2);
|
define("AKISMET_INVALID_KEY", 2);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Base class to assist in error handling between Akismet classes
|
// Base class to assist in error handling between Akismet classes
|
||||||
class AkismetObject {
|
class AkismetObject {
|
||||||
var $errors = array();
|
|
||||||
|
|
||||||
|
var $errors = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new error to the errors array in the object
|
* Add a new error to the errors array in the object
|
||||||
*
|
*
|
||||||
* @param String $name A name (array key) for the error
|
* @param String $name
|
||||||
* @param String $string The error message
|
* A name (array key) for the error
|
||||||
|
* @param String $string
|
||||||
|
* The error message
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
// Set an error in the object
|
// Set an error in the object
|
||||||
@ -59,11 +57,11 @@ class AkismetObject {
|
|||||||
$this->errors [$name] = $message;
|
$this->errors [$name] = $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a specific error message from the errors array
|
* Return a specific error message from the errors array
|
||||||
*
|
*
|
||||||
* @param String $name The name of the error you want
|
* @param String $name
|
||||||
|
* The name of the error you want
|
||||||
* @return mixed Returns a String if the error exists, a false boolean if it does not exist
|
* @return mixed Returns a String if the error exists, a false boolean if it does not exist
|
||||||
*/
|
*/
|
||||||
function getError($name) {
|
function getError($name) {
|
||||||
@ -74,7 +72,6 @@ class AkismetObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return all errors in the object
|
* Return all errors in the object
|
||||||
*
|
*
|
||||||
@ -84,18 +81,17 @@ class AkismetObject {
|
|||||||
return (array) $this->errors;
|
return (array) $this->errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a certain error exists
|
* Check if a certain error exists
|
||||||
*
|
*
|
||||||
* @param String $name The name of the error you want
|
* @param String $name
|
||||||
|
* The name of the error you want
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
function isError($name) {
|
function isError($name) {
|
||||||
return isset($this->errors [$name]);
|
return isset($this->errors [$name]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if any errors exist
|
* Check if any errors exist
|
||||||
*
|
*
|
||||||
@ -105,23 +101,24 @@ class AkismetObject {
|
|||||||
return (count($this->errors) > 0);
|
return (count($this->errors) > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Used by the Akismet class to communicate with the Akismet service
|
// Used by the Akismet class to communicate with the Akismet service
|
||||||
class AkismetHttpClient extends AkismetObject {
|
class AkismetHttpClient extends AkismetObject {
|
||||||
var $akismetVersion = '1.1';
|
|
||||||
var $con;
|
|
||||||
var $host;
|
|
||||||
var $port;
|
|
||||||
var $apiKey;
|
|
||||||
var $blogUrl;
|
|
||||||
var $errors = array();
|
|
||||||
|
|
||||||
|
var $akismetVersion = '1.1';
|
||||||
|
|
||||||
|
var $con;
|
||||||
|
|
||||||
|
var $host;
|
||||||
|
|
||||||
|
var $port;
|
||||||
|
|
||||||
|
var $apiKey;
|
||||||
|
|
||||||
|
var $blogUrl;
|
||||||
|
|
||||||
|
var $errors = array();
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
function __construct($host, $blogUrl, $apiKey, $port = 80) {
|
function __construct($host, $blogUrl, $apiKey, $port = 80) {
|
||||||
@ -131,21 +128,12 @@ class AkismetHttpClient extends AkismetObject {
|
|||||||
$this->apiKey = $apiKey;
|
$this->apiKey = $apiKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Use the connection active in $con to get a response from the server and return that response
|
// Use the connection active in $con to get a response from the server and return that response
|
||||||
function getResponse($request, $path, $type = "post", $responseLength = 1160) {
|
function getResponse($request, $path, $type = "post", $responseLength = 1160) {
|
||||||
$this->_connect();
|
$this->_connect();
|
||||||
|
|
||||||
if ($this->con && !$this->isError(AKISMET_SERVER_NOT_FOUND)) {
|
if ($this->con && !$this->isError(AKISMET_SERVER_NOT_FOUND)) {
|
||||||
$request =
|
$request = strToUpper($type) . " /{$this->akismetVersion}/$path HTTP/1.0\r\n" . "Host: " . ((!empty($this->apiKey)) ? $this->apiKey . "." : null) . "{$this->host}\r\n" . "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n" . "Content-Length: " . strlen($request) . "\r\n" . "User-Agent: Akismet PHP4 Class\r\n" . "\r\n" . $request;
|
||||||
strToUpper($type)." /{$this->akismetVersion}/$path HTTP/1.0\r\n" .
|
|
||||||
"Host: ".((!empty($this->apiKey)) ? $this->apiKey."." : null)."{$this->host}\r\n" .
|
|
||||||
"Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n" .
|
|
||||||
"Content-Length: ".strlen($request)."\r\n" .
|
|
||||||
"User-Agent: Akismet PHP4 Class\r\n" .
|
|
||||||
"\r\n" .
|
|
||||||
$request
|
|
||||||
;
|
|
||||||
$response = "";
|
$response = "";
|
||||||
|
|
||||||
@fwrite($this->con, $request);
|
@fwrite($this->con, $request);
|
||||||
@ -163,7 +151,6 @@ class AkismetHttpClient extends AkismetObject {
|
|||||||
$this->_disconnect();
|
$this->_disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Connect to the Akismet server and store that connection in the instance variable $con
|
// Connect to the Akismet server and store that connection in the instance variable $con
|
||||||
function _connect() {
|
function _connect() {
|
||||||
if (!($this->con = @fsockopen($this->host, $this->port))) {
|
if (!($this->con = @fsockopen($this->host, $this->port))) {
|
||||||
@ -171,25 +158,23 @@ class AkismetHttpClient extends AkismetObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Close the connection to the Akismet server
|
// Close the connection to the Akismet server
|
||||||
function _disconnect() {
|
function _disconnect() {
|
||||||
@fclose($this->con);
|
@fclose($this->con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// The controlling class. This is the ONLY class the user should instantiate in
|
// The controlling class. This is the ONLY class the user should instantiate in
|
||||||
// order to use the Akismet service!
|
// order to use the Akismet service!
|
||||||
class Akismet extends AkismetObject {
|
class Akismet extends AkismetObject {
|
||||||
|
|
||||||
var $apiPort = 80;
|
var $apiPort = 80;
|
||||||
|
|
||||||
var $akismetServer = 'rest.akismet.com';
|
var $akismetServer = 'rest.akismet.com';
|
||||||
|
|
||||||
var $akismetVersion = '1.1';
|
var $akismetVersion = '1.1';
|
||||||
|
|
||||||
var $http;
|
var $http;
|
||||||
|
|
||||||
var $ignore = array(
|
var $ignore = array(
|
||||||
@ -209,18 +194,22 @@ class Akismet extends AkismetObject {
|
|||||||
);
|
);
|
||||||
|
|
||||||
var $blogUrl = "";
|
var $blogUrl = "";
|
||||||
var $apiKey = "";
|
|
||||||
var $comment = array();
|
|
||||||
|
|
||||||
|
var $apiKey = "";
|
||||||
|
|
||||||
|
var $comment = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* Set instance variables, connect to Akismet, and check API key
|
* Set instance variables, connect to Akismet, and check API key
|
||||||
*
|
*
|
||||||
* @param String $blogUrl The URL to your own blog
|
* @param String $blogUrl
|
||||||
* @param String $apiKey Your wordpress API key
|
* The URL to your own blog
|
||||||
* @param String[] $comment A formatted comment array to be examined by the Akismet service
|
* @param String $apiKey
|
||||||
|
* Your wordpress API key
|
||||||
|
* @param String[] $comment
|
||||||
|
* A formatted comment array to be examined by the Akismet service
|
||||||
* @return Akismet
|
* @return Akismet
|
||||||
*/
|
*/
|
||||||
function __construct($blogUrl, $apiKey, $comment = array()) {
|
function __construct($blogUrl, $apiKey, $comment = array()) {
|
||||||
@ -240,7 +229,6 @@ class Akismet extends AkismetObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query the Akismet and determine if the comment is spam or not
|
* Query the Akismet and determine if the comment is spam or not
|
||||||
*
|
*
|
||||||
@ -252,7 +240,6 @@ class Akismet extends AkismetObject {
|
|||||||
return ($response == "true");
|
return ($response == "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Submit this comment as an unchecked spam to the Akismet server
|
* Submit this comment as an unchecked spam to the Akismet server
|
||||||
*
|
*
|
||||||
@ -262,7 +249,6 @@ class Akismet extends AkismetObject {
|
|||||||
$this->http->getResponse($this->_getQueryString(), 'submit-spam');
|
$this->http->getResponse($this->_getQueryString(), 'submit-spam');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Submit a false-positive comment as "ham" to the Akismet server
|
* Submit a false-positive comment as "ham" to the Akismet server
|
||||||
*
|
*
|
||||||
@ -272,7 +258,6 @@ class Akismet extends AkismetObject {
|
|||||||
$this->http->getResponse($this->_getQueryString(), 'submit-ham');
|
$this->http->getResponse($this->_getQueryString(), 'submit-ham');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manually set the comment value of the instantiated object.
|
* Manually set the comment value of the instantiated object.
|
||||||
*
|
*
|
||||||
@ -287,7 +272,6 @@ class Akismet extends AkismetObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current value of the object's comment array.
|
* Returns the current value of the object's comment array.
|
||||||
*
|
*
|
||||||
@ -297,12 +281,12 @@ class Akismet extends AkismetObject {
|
|||||||
return $this->comment;
|
return $this->comment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check with the Akismet server to determine if the API key is valid
|
* Check with the Akismet server to determine if the API key is valid
|
||||||
*
|
*
|
||||||
* @access Protected
|
* @access Protected
|
||||||
* @param String $key The Wordpress API key passed from the constructor argument
|
* @param String $key
|
||||||
|
* The Wordpress API key passed from the constructor argument
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
function _isValidApiKey($key) {
|
function _isValidApiKey($key) {
|
||||||
@ -311,7 +295,6 @@ class Akismet extends AkismetObject {
|
|||||||
return ($keyCheck == "valid");
|
return ($keyCheck == "valid");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format the comment array in accordance to the Akismet API
|
* Format the comment array in accordance to the Akismet API
|
||||||
*
|
*
|
||||||
@ -335,7 +318,6 @@ class Akismet extends AkismetObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fill any values not provided by the developer with available values.
|
* Fill any values not provided by the developer with available values.
|
||||||
*
|
*
|
||||||
@ -356,7 +338,6 @@ class Akismet extends AkismetObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build a query string for use with HTTP requests
|
* Build a query string for use with HTTP requests
|
||||||
*
|
*
|
||||||
@ -377,12 +358,12 @@ class Akismet extends AkismetObject {
|
|||||||
$query_string = '';
|
$query_string = '';
|
||||||
|
|
||||||
foreach ($this->comment as $key => $data) {
|
foreach ($this->comment as $key => $data) {
|
||||||
|
$data = isset($data) ? $data : ''; // make sure $data is a string
|
||||||
$query_string .= $key . '=' . urlencode(stripslashes($data)) . '&';
|
$query_string .= $key . '=' . urlencode(stripslashes($data)) . '&';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $query_string;
|
return $query_string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
Loading…
x
Reference in New Issue
Block a user