# fluentform/3.6.50/app/Modules/Form/AkismetHandler.php

Fluent Forms – Customizable Contact Forms, Survey, Quiz, &amp; Conversational Form Builder, version 3.6.50. 84 lines.

- Page: https://pluginprobe.com/plugins/fluentform/3.6.50/code/app/Modules/Form/AkismetHandler.php
- Raw: https://pluginprobe.com/plugins/fluentform/3.6.50/raw/app/Modules/Form/AkismetHandler.php
- Modified: 2020-03-30T16:38:56+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/fluentform/3.6.50/code/app/Modules/Form/AkismetHandler.php#L10-L20`.

```php
<?php

namespace FluentForm\App\Modules\Form;

use FluentForm\App\Helpers\Helper;
use FluentForm\App\Modules\Acl\Acl;
use FluentForm\Framework\Helpers\ArrayHelper;

class AkismetHandler
{
    public static function isEnabled()
    {
        if (!self::isPluginEnabled()) {
            return false;
        }

        $settings = get_option('_fluentform_global_form_settings');
        return $settings && ArrayHelper::get($settings, 'misc.akismet_status') == 'yes';
    }

    public static function isPluginEnabled()
    {
        $exists = method_exists('Akismet', 'http_post');
        if ($exists) {
            return !!\Akismet::get_api_key();
        }
        return false;
    }

    public static function isSpamSubmission($formData, $form)
    {
        global $akismet_api_host, $akismet_api_port;
        $fields = self::getAkismetFields($formData, $form);
        $response = \Akismet::http_post( $fields, 'comment-check' );

        return ArrayHelper::get($response, 1) == 'true';
    }

    protected static function getAkismetFields($data, $form)
    {
        $app = wpFluentForm();
        $ip = $app->request->getIp();

        $info = [
            'comment_type' => 'contact-form',
            'comment_author' => '',
            'comment_author_email' => '',
            'comment_content' => '',
            'contact_form_subject' => $form->title,
            'comment_author_IP' => $ip,
            'permalink' => urlencode($data['_wp_http_referer']),
            'user_ip' => preg_replace('/[^0-9., ]/', '', $ip),
            'user_agent' => $app->request->header('USER_AGENT'),
            'blog' => get_option('home')
        ];

        $maps = [
            'input_name' => 'comment_author',
            'input_email' => 'comment_author_email',
            'textarea' => 'comment_content'
        ];
        $inputs = FormFieldsParser::getInputs($form, ['attributes']);

        foreach ($inputs as $input) {
            $element = ArrayHelper::get($input, 'element');
            $key = ArrayHelper::get($input, 'attributes.name');
            if (isset($maps[$element]) && !$info[$maps[$element]]) {
                $value = ArrayHelper::get($data, $key);
                if ($value) {
                    if (is_array($value)) {
                        $value = implode(' ', $value);
                    }
                    $info[$maps[$element]] = $value;
                }
            }
        }

        $info = apply_filters('fluentform_akismet_fields', $info, $data, $form);

        return http_build_query($info);

    }

}
```
