<?php
 
declare(strict_types=1);
 
 
/*
 
 * sync*gw SpamBot Bundle
 
 *
 
 * @copyright  https://syncgw.com, 2013 - 2022
 
 * @author     Florian Daeumling, https://syncgw.com
 
 * @license    http://opensource.org/licenses/lgpl-3.0.html
 
 */
 
 
use syncgw\SpamBotBundle\Module\SpamBot;
 
 
class StopForumSpam extends SpamBot {
 
    /*
 
     * @var string
 
     */
 
    protected $Name = 'StopForumSpam';
 
    /*
 
     * @var array
 
     */
 
    protected $Fields = [ 'spambot_stopforumspam_score' => 0 ];
 
 
    /**
 
     * Check data
 
     *
 
     * @param type to check
 
     * @param IP address
 
     * @param mail address
 
     *
 
     * @return array (SpamBot::Status, status message)
 
     */
 
    public function check(int $typ, string $ip, string $mail): array  {
 
 
        $this->ExtInfo = '<fieldset style="padding:3px"><div style="color:blue;">'.
 
                         'Checking <strong>'.(SpamBot::TYP_IP === $typ ? $ip : $mail).'</strong> <br />'.
 
                         'Clipping level is <strong>'.$this->spambot_stopforumspam_score.'</strong><br />';
 
 
        $qry = '/api?'.(SpamBot::TYP_IP === $typ ? 'ip='.$ip : 'email='.urlencode($mail)).'&f=serial&confidence';
 
 
        if (!($fp = $this->openHTTP('www.stopforumspam.com', $qry))) {
 
            $this->ExtInfo .= '</div></fieldset>';
 
 
            return [SpamBot::NOTFOUND, sprintf($GLOBALS['TL_LANG']['SpamBot']['generic']['err'], $this->Name, $this->ErrMsg)];
 
        }
 
 
        $rc = deserialize($this->readHTTP($fp));
 
        fclose($fp);
 
 
        // in data base?
 
        $key = SpamBot::TYP_IP === $typ ? 'ip' : 'email';
 
 
        $this->ExtInfo .= 'Status received is <strong>'.
 
                          'success = '.$rc['success'].'<br />'.
 
                          'lastseen = '.$rc[$key]['lastseen'].'<br />'.
 
                          'frequency = '.$rc[$key]['frequency'].'<br />'.
 
                          'appears = '.$rc[$key]['appears'].'<br />'.
 
                          'confidence = '.$rc[$key]['confidence'].'<br /></strong></div></fieldset>';
 
 
        if (!$rc['success'])
 
            return [SpamBot::NOTFOUND, sprintf($GLOBALS['TL_LANG']['SpamBot']['generic']['err'], $this->Name, $rc['error'])];
 
 
        if (!$rc[$key]['appears'])
 
            return [SpamBot::NOTFOUND, sprintf($GLOBALS['TL_LANG']['SpamBot']['generic']['notfound'], $this->Name)];
 
 
        // check confidence level
 
        if ($rc[$key]['confidence'] < $this->spambot_stopforumspam_score)
 
            $typ = SpamBot::HAM;
 
        else
 
            $typ = SpamBot::SPAM;
 
 
        return [$typ, sprintf($GLOBALS['TL_LANG']['SpamBot']['StopForumSpam']['stat'], $this->Name,
 
                                                $rc[$key]['confidence'], $rc[$key]['frequency'])];
 
    }
 
 
}
 
 
?>
 
 |