Seditio Source
Root |
./othercms/dotclear-2.22/plugins/antispam/_admin.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_CONTEXT_ADMIN')) {
    return;
}

if (!
defined('DC_ANTISPAM_CONF_SUPER')) {
   
define('DC_ANTISPAM_CONF_SUPER', false);
}

$_menu['Plugins']->addItem(
   
__('Antispam'),
   
$core->adminurl->get('admin.plugin.antispam'),
    [
dcPage::getPF('antispam/icon.svg'), dcPage::getPF('antispam/icon-dark.svg')],
   
preg_match('/' . preg_quote($core->adminurl->get('admin.plugin.antispam')) . '(&.*)?$/', $_SERVER['REQUEST_URI']),
   
$core->auth->check('admin', $core->blog->id)
);

$core->addBehavior('coreAfterCommentUpdate', ['dcAntispam', 'trainFilters']);
$core->addBehavior('adminAfterCommentDesc', ['dcAntispam', 'statusMessage']);
$core->addBehavior('adminDashboardHeaders', ['dcAntispam', 'dashboardHeaders']);

$core->addBehavior(
   
'adminDashboardFavorites',
    function (
$core, $favs) {
       
$favs->register(
           
'antispam',
            [
               
'title'       => __('Antispam'),
               
'url'         => $core->adminurl->get('admin.plugin.antispam'),
               
'small-icon'  => [dcPage::getPF('antispam/icon.svg'), dcPage::getPF('antispam/icon-dark.svg')],
               
'large-icon'  => [dcPage::getPF('antispam/icon.svg'), dcPage::getPF('antispam/icon-dark.svg')],
               
'permissions' => 'admin', ]
        );
    }
);
$core->addBehavior(
   
'adminDashboardFavsIcon',
    function (
$core, $name, $icon) {
       
// Check if it is comments favs
       
if ($name == 'comments') {
           
// Hack comments title if there is at least one spam
           
$str = dcAntispam::dashboardIconTitle($core);
            if (
$str != '') {
               
$icon[0] .= $str;
            }
        }
    }
);

if (!
DC_ANTISPAM_CONF_SUPER || $core->auth->isSuperAdmin()) {   // @phpstan-ignore-line
   
$core->addBehavior('adminBlogPreferencesForm', ['antispamBehaviors', 'adminBlogPreferencesForm']);
   
$core->addBehavior('adminBeforeBlogSettingsUpdate', ['antispamBehaviors', 'adminBeforeBlogSettingsUpdate']);
   
$core->addBehavior('adminCommentsSpamForm', ['antispamBehaviors', 'adminCommentsSpamForm']);
   
$core->addBehavior('adminPageHelpBlock', ['antispamBehaviors', 'adminPageHelpBlock']);
}

class
antispamBehaviors
{
    public static function
adminPageHelpBlock($blocks)
    {
       
$found = false;
        foreach (
$blocks as $block) {
            if (
$block == 'core_comments') {
               
$found = true;

                break;
            }
        }
        if (!
$found) {
            return;
        }
       
$blocks[] = 'antispam_comments';
    }

    public static function
adminCommentsSpamForm($core)
    {
       
$ttl = $core->blog->settings->antispam->antispam_moderation_ttl;
        if (
$ttl != null && $ttl >= 0) {
            echo
'<p>' . sprintf(__('All spam comments older than %s day(s) will be automatically deleted.'), $ttl) . ' ' .
           
sprintf(__('You can modify this duration in the %s'), '<a href="' . $core->adminurl->get('admin.blog.pref') .
               
'#antispam_moderation_ttl"> ' . __('Blog settings') . '</a>') .
               
'.</p>';
        }
    }

    public static function
adminBlogPreferencesForm($core, $settings)
    {
       
$ttl = $settings->antispam->antispam_moderation_ttl;
        echo
       
'<div class="fieldset"><h4 id="antispam_params">Antispam</h4>' .
       
'<p><label for="antispam_moderation_ttl" class="classic">' . __('Delete junk comments older than') . ' ' .
       
form::number('antispam_moderation_ttl', -1, 999, $ttl) .
       
' ' . __('days') .
       
'</label></p>' .
       
'<p class="form-note">' . __('Set -1 to disabled this feature ; Leave empty to use default 7 days delay.') . '</p>' .
       
'<p><a href="' . $core->adminurl->get('admin.plugin.antispam') . '">' . __('Set spam filters.') . '</a></p>' .
           
'</div>';
    }

    public static function
adminBeforeBlogSettingsUpdate($settings)
    {
       
$settings->addNamespace('antispam');
       
$settings->antispam->put('antispam_moderation_ttl', (int) $_POST['antispam_moderation_ttl']);
    }
}