silentz / akismet
Provides Akismet spam filter for form submissions
Fund package maintenance!
edalzell
Installs: 7 358
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 2
Open Issues: 1
Type:statamic-addon
Requires
- php: ^8.2
- edalzell/forma: ^3.0
- laravel/framework: ^10.0 || ^11.0
- nickurt/laravel-akismet: ^1.8
- pixelfear/composer-dist-plugin: ^0.1.4
- statamic/cms: ^5.0
Requires (Dev)
- jasonmccreary/laravel-test-assertions: ^2.0
- mockery/mockery: ^1.3.1
- nunomaduro/collision: ^7.0 || ^8.0
- orchestra/testbench: ^8.0 || ^9.0
- phpunit/phpunit: ^10.0 || ^11.0
- spatie/laravel-ray: *
README
This package provides an easy way stop submission spam via Akismet.
Requirements
- PHP 8.2+
- Statamic v4
- Laravel 9+
Installation
You can install this package via composer using:
composer require silentz/akismet
The package will automatically register itself.
Migration from < 3+
Previous versions of Akismet stored the spam in a serialized file. Version 3 stores it in the same format as Statamic form submissions. The previous spam needs to be converted to the new format/naming. To do so, run two commmands:
php artisan spam:convert
php artisan spam:add-extension
Those two commands will unserialize the data and add the correct extension (.yaml
) to any spam that needs it.
Configuration
.env
Set your Akismet API Key in your .env
file. You can get it from: https://akismet.com/account/.
AKISMET_API_KEY=your-key-here
Permission
In order to manage your spam, you'll either have to be a super user or have the manage spam
permission:
Settings
Publish the config:
php artisan vendor:publish --tag="akismet-config"
This will publish a file akismet.php
in your config directory with the following contents:
return [ 'api_key' => env('AKISMET_API_KEY'), // these are the form handles you'd like to check for spam 'forms' => [ // the handle of your form 'contact_us' => [ // use `name_field` if you store both first and last name 'name_field' => 'name', // `name` in this case is the field in your form // use `first_name_field` & `last_name_field` if you store them separately 'first_name_field' => 'first_name', 'last_name_field' => 'last_name', // field in the form for email and content 'email_field' => 'email', 'content_field' => 'message', ], 'other_form' => [], ], ];
You can also update your settings from the config page:
Usage
Create your Statamic forms as usual. When a submission is created it is checked for spam.
If it is spam, it gets put into that form's spam queue.
From there you can delete it, or mark it ham (not spam). Marking it as ham it will put it back into the normal submissions and tell Akismet that it is not spam (to help with learning).
If you find a submission that is spam, you can mark it as spam. This will put it in the spam queue and tell Akismet it is spam.
Both of those can be done one at a time, or in bulk via the bulk selection.
Testing Akismet Locally
To confirm Akismet is working, use either akismet-guaranteed-spam@example.com
as the email on a test submission, or viagra-test-123
as the name. Submissions with that in it will always be flagged as spam.
Testing
Run the tests with:
vendor/bin/phpunit
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email addon-security@silentz.co instead of using the issue tracker.
License
This is commercial software. You may use the package for your sites. Each site requires it's own license.