Seditio Source
Root |
./othercms/dotclear-2.22/plugins/antispam/inc/class.dc.spamfilter.php
<?php
/**
 * @brief antispam, a plugin for Dotclear 2
 *
 * @package Dotclear
 * @subpackage Plugins
 *
 * @copyright Olivier Meunier & Association Dotclear
 * @copyright GPL-2.0-only
 */
if (!defined('DC_RC_PATH')) {
    return;
}

class
dcSpamFilter
{
    public
$name;
    public
$description;
    public
$active      = true;
    public
$order       = 100;
    public
$auto_delete = false;
    public
$help        = null;

    protected
$has_gui = false;
    protected
$gui_url = null;

    protected
$core;

   
/**
     * Constructs a new instance.
     *
     * @param      dcCore  $core   The core
     */
   
public function __construct(dcCore $core)
    {
       
$this->core = &$core;
       
$this->setInfo();

        if (!
$this->name) {
           
$this->name = get_class($this);
        }

        if (isset(
$core->adminurl)) {
           
$this->gui_url = $core->adminurl->get('admin.plugin.antispam', ['f' => get_class($this)], '&');
        }
    }

   
/**
    This method is called by the constructor and allows you to change some
    object properties without overloading object constructor.
     */
   
protected function setInfo()
    {
       
$this->description = __('No description');
    }

   
/**
     * This method should return if a comment is a spam or not. If it returns true
     * or false, execution of next filters will be stoped. If should return nothing
     * to let next filters apply.
     *
     * Your filter should also fill $status variable with its own information if
     * comment is a spam.
     *
     * @param      string  $type     The comment type (comment / trackback)
     * @param      string  $author   The comment author
     * @param      string  $email    The comment author email
     * @param      string  $site     The comment author site
     * @param      string  $ip       The comment author IP
     * @param      string  $content  The comment content
     * @param      integer $post_id  The comment post_id
     * @param      integer $status   The comment status
     */
   
public function isSpam($type, $author, $email, $site, $ip, $content, $post_id, &$status)
    {
    }

   
/**
     * { function_description }
     *
     * @param      string  $status   The comment status
     * @param      string  $filter   The filter
     * @param      string  $type     The comment type
     * @param      string  $author   The comment author
     * @param      string  $email    The comment author email
     * @param      string  $site     The comment author site
     * @param      string  $ip       The comment author IP
     * @param      string  $content  The comment content
     * @param      record  $rs       The comment record
     */
   
public function trainFilter($status, $filter, $type, $author, $email, $site, $ip, $content, $rs)
    {
    }

   
/**
     * This method returns filter status message. You can overload this method to
     * return a custom message. Message is shown in comment details and in
     * comments list.
     *
     * @param      string  $status      The status
     * @param      integer $comment_id  The comment identifier
     *
     * @return     string  The status message.
     */
   
public function getStatusMessage($status, $comment_id)
    {
        return
sprintf(__('Filtered by %1$s (%2$s)'), $this->guiLink(), $status);
    }

   
/**
     * This method is called when you enter filter configuration. Your class should
     * have $has_gui property set to "true" to enable GUI.
     *
     * @param      string  $url    The GUI url
     */
   
public function gui($url)
    {
    }

    public function
hasGUI()
    {
        if (!
$this->core->auth->check('admin', $this->core->blog->id)) {
            return
false;
        }

        if (!
$this->has_gui) {
            return
false;
        }

        return
true;
    }

    public function
guiURL()
    {
        if (!
$this->hasGui()) {
            return
false;
        }

        return
$this->gui_url;
    }

   
/**
     * Returns a link to filter GUI if exists or only filter name if has_gui
     * property is false.
     *
     * @return     string
     */
   
public function guiLink()
    {
        if ((
$url = $this->guiURL()) !== false) {
           
$url  = html::escapeHTML($url);
           
$link = '<a href="%2$s">%1$s</a>';
        } else {
           
$link = '%1$s';
        }

        return
sprintf($link, $this->name, $url);
    }

    public function
help()
    {
    }
}