Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


CakePHP Amazon Associates Data Source

A CakePHP datasource for interacting with the Akismet spam protection API.

If you don’t have an Akismet API key you can get one here: Get Akismet API key

Usage / Docs

1. Copy akismet_source.php to app/models/datasources/
2. Open your app/config/database.php and add the following:

var $akismet = array(
	'datasource' => 'akismet',
	'blog' => '',
	'key' => 'your-api-key-here',
	'map' => array(
		'comment_author' => 'author_name',
		'comment_author_email' => 'author_email',
		'comment_author_url' => 'author_url',
		'user_ip' => 'author_ip',
		'user_agent' => 'author_agent',
		'comment_type' => 'type',
		'comment_content' => 'text',

The map key above tells the API what model fields of yours map to what fields the API expects to receive. If you use this API with multiple models you can dynamically pass different maps upon each request, or perform the normalization yourself before passing your data to the datasource.

3. Add this validation logic to your Comment model:

class Comment extends AppModel{
	var $validate = array(
		'text' => array(
				'rule' => array('notSpam'),
				'message' => 'This comment appears to be spam. Please contact us if the problem persists.',
				'required' => true,

	function notSpam($fields) {
		$akismet = ConnectionManager::getDataSource('akismet');
		return !$akismet->isSpam($this->data['Comment'], Post::url($this->data['Comment']['post_id']));


Known Bugs


Something went wrong with that request. Please try again.