Akismet
This is a PHP5 library that provides Akismet Spam Protection service functionality in your application.
The easiest way to install Akismet Library is via composer.
Create the following composer.json
file and run the php composer.phar install
command to install it.
{
"require": {
"openclassrooms/akismet": "*"
}
}
<?php
require 'vendor/autoload.php';
use OpenClassrooms\Akismet\Services\AkismetService;
//do things
The AkismetServiceImpl
class needs to set a client to communicate with Akismet Spam Protection service. This library provides a client based on GuzzleHttp\Client, though you can implement your own client. Then, you can set the client using the AkismetServiceImpl::setClient()
method.
This Library defines a "Comment" interface which must be passed as an argument into the different AkismetService methods.
use OpenClassrooms\Akismet\Models\Comment;
$comment = new CommentImpl();
This library provides a Builder to create the Comment:
use OpenClassrooms\Akismet\Models\CommentBuilder;
$comment = $commentBuilder->create()
->withUserIp(CommentStub::USER_IP)
->withUserAgent(CommentStub::USER_AGENT)
->withReferrer(CommentStub::REFERRER)
->withPermalink(CommentStub::PERMALINK)
->withAuthorName(CommentStub::AUTHOR_NAME)
->withAuthorEmail(CommentStub::AUTHOR_EMAIL)
->withContent(CommentStub::CONTENT)
->build();
Use OpenClassrooms\Akismet\Services\Impl\AkismetServiceImpl;
$akismetService = new AkismetServiceImpl();
// commentCheck method needs only one parameter, which has to be the Comment object
if ($akismetService->commentCheck($comment)) {
// store the comment and mark it as spam (in case of a misdiagnosis).
} else {
// store the comment normally
}
to submit misdiagnosed spam and ham, which improves the system for everybody.
$akismetService->submitSpam($comment);
And
$akismetService->submitHam($comment);
If you plan to use Akismet Library in a Symfony2 project, check out the AkismetBundle. The bundle provides an easy configuration option for this library.