split file
parent
c86aa8f8ae
commit
88e2d6c3b2
37
_prepend.php
37
_prepend.php
|
@ -14,20 +14,33 @@ if (!defined('DC_RC_PATH')) {
|
|||
return null;
|
||||
}
|
||||
|
||||
$d = __DIR__ . '/inc/lib.whitelistcom.php';
|
||||
|
||||
Clearbricks::lib()->autoload([
|
||||
'whiteListCom' => $d,
|
||||
'whiteListComBehaviors' => $d,
|
||||
'whiteListComReservedFilter' => $d,
|
||||
'whiteListComModeratedFilter' => $d,
|
||||
'whiteListCom' => __DIR__ . '/inc/Core.php',
|
||||
'whiteListComReservedFilter' => __DIR__ . '/inc/ReservedFilter.php',
|
||||
'whiteListComModeratedFilter' => __DIR__ . '/inc/ModeratedFilter.php',
|
||||
]);
|
||||
|
||||
dcCore::app()->spamfilters[] = 'whiteListComModeratedFilter';
|
||||
|
||||
dcCore::app()->addBehavior(
|
||||
'publicAfterCommentCreate',
|
||||
['whiteListComBehaviors', 'switchStatus']
|
||||
);
|
||||
|
||||
dcCore::app()->spamfilters[] = 'whiteListComReservedFilter';
|
||||
|
||||
dcCore::app()->addBehavior('publicAfterCommentCreate', function ($cur, $id) {
|
||||
if (dcCore::app()->blog === null
|
||||
|| dcCore::app()->blog->settings->get('system')->get('comments_pub')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($cur->__get('comment_spam_filter') == 'whiteListComModeratedFilter'
|
||||
&& $cur->__get('comment_spam_status') == 'unmoderated') {
|
||||
dcCore::app()->con->writeLock(dcCore::app()->prefix . dcBlog::COMMENT_TABLE_NAME);
|
||||
|
||||
$cur->__set('comment_status', 1);
|
||||
$cur->__set('comment_spam_status', 0);
|
||||
$cur->__set('comment_spam_filter', 0);
|
||||
$cur->update('WHERE comment_id = ' . $id . ' ');
|
||||
|
||||
dcCore::app()->con->unlock();
|
||||
|
||||
dcCore::app()->blog->triggerComment($id);
|
||||
dcCore::app()->blog->triggerBlog();
|
||||
}
|
||||
});
|
||||
|
|
277
inc/Core.php
277
inc/Core.php
|
@ -14,223 +14,6 @@ if (!defined('DC_RC_PATH')) {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup DC_PLUGIN_WHITELISTCOM
|
||||
* @brief Filter for unmoderated authors.
|
||||
* @since 2.6
|
||||
*
|
||||
* This filter is used only if comments are moderates
|
||||
*/
|
||||
class whiteListComModeratedFilter extends dcSpamFilter
|
||||
{
|
||||
public $name = 'Unmoderated authors';
|
||||
public $has_gui = true;
|
||||
|
||||
protected function setInfo()
|
||||
{
|
||||
$this->name = __('Unmoderated authors');
|
||||
$this->description = __('Whitelist of unmoderated authors');
|
||||
}
|
||||
|
||||
public function isSpam($type, $author, $email, $site, $ip, $content, $post_id, &$status)
|
||||
{
|
||||
if ($type != 'comment'
|
||||
|| dcCore::app()->blog === null
|
||||
|| dcCore::app()->blog->settings->system->comments_pub) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
$wlc = new whiteListCom();
|
||||
if ($wlc->isUnmoderated($email)) {
|
||||
$status = 'unmoderated';
|
||||
|
||||
# return true in order to change comment_status after
|
||||
return true;
|
||||
}
|
||||
|
||||
return null;
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
}
|
||||
|
||||
public function gui(string $url): string
|
||||
{
|
||||
try {
|
||||
$wlc = new whiteListCom();
|
||||
|
||||
if (!empty($_POST['update_unmoderated'])) {
|
||||
$wlc->emptyUnmoderated();
|
||||
foreach ($_POST['unmoderated'] as $email) {
|
||||
$wlc->addUnmoderated($email);
|
||||
}
|
||||
$wlc->commit();
|
||||
}
|
||||
$posts = $wlc->getPostsUsers();
|
||||
$comments = $wlc->getCommentsUsers();
|
||||
} catch (Exception $e) {
|
||||
dcCore::app()->error->add($e->getMessage());
|
||||
}
|
||||
|
||||
$res = '';
|
||||
|
||||
if (dcCore::app()->blog->settings->system->comments_pub) {
|
||||
$res .= '<p class="message">' .
|
||||
__('This filter is used only if comments are moderates') .
|
||||
'</p>';
|
||||
}
|
||||
|
||||
$res .= '<form action="' . html::escapeURL($url) . '" method="post">' .
|
||||
'<p>' . __('Check the users who can make comments without being moderated.') . '</p>' .
|
||||
'<div class="two-cols">' .
|
||||
'<div class="col">' .
|
||||
'<p>' . __('Posts authors list') . '</p>' .
|
||||
'<table class="clear">' .
|
||||
'<thead><tr><th>' . __('Name') . '</th><th>' . __('Email') . '</th></tr></thead>' .
|
||||
'<tbody>';
|
||||
|
||||
foreach ($posts as $user) {
|
||||
$res .= '<tr class="line">' .
|
||||
'<td class="nowrap">' .
|
||||
form::checkbox(
|
||||
['unmoderated[]'],
|
||||
$user['email'],
|
||||
$wlc->isUnmoderated($user['email'])
|
||||
) .
|
||||
' ' . $user['name'] . '</td>' .
|
||||
'<td class="nowrap">' . $user['email'] . '</td>' .
|
||||
'</tr>';
|
||||
}
|
||||
|
||||
$res .= '</tbody>' .
|
||||
'</table>' .
|
||||
'</div>' .
|
||||
'<div class="col">' .
|
||||
'<p>' . __('Comments authors list') . '</p>' .
|
||||
'<table class="clear">' .
|
||||
'<thead><tr><th>' . __('Author') . '</th><th>' . __('Email') . '</th></tr></thead>' .
|
||||
'<tbody>';
|
||||
|
||||
foreach ($comments as $user) {
|
||||
$res .= '<tr class="line">' .
|
||||
'<td class="nowrap">' .
|
||||
form::checkbox(
|
||||
['unmoderated[]'],
|
||||
$user['email'],
|
||||
$wlc->isUnmoderated($user['email'])
|
||||
) .
|
||||
' ' . $user['name'] . '</td>' .
|
||||
'<td class="nowrap">' . $user['email'] . '</td>' .
|
||||
'</tr>';
|
||||
}
|
||||
|
||||
$res .= '</tbody>' .
|
||||
'</table>' .
|
||||
'</div>' .
|
||||
'</div>' .
|
||||
'<p><input type="submit" name="update_unmoderated" value="' . __('Save') . '" />' .
|
||||
dcCore::app()->formNonce() . '</p>' .
|
||||
'</form>';
|
||||
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup DC_PLUGIN_WHITELISTCOM
|
||||
* @brief Filter for reserved names.
|
||||
* @since 2.6
|
||||
*/
|
||||
class whiteListComReservedFilter extends dcSpamFilter
|
||||
{
|
||||
public $name = 'Reserved names';
|
||||
public $has_gui = true;
|
||||
|
||||
protected function setInfo()
|
||||
{
|
||||
$this->name = __('Reserved names');
|
||||
$this->description = __('Whitelist of reserved names of users');
|
||||
}
|
||||
|
||||
public function isSpam($type, $author, $email, $site, $ip, $content, $post_id, &$status)
|
||||
{
|
||||
if ($type != 'comment') {
|
||||
return null;
|
||||
}
|
||||
|
||||
$throw = false;
|
||||
|
||||
try {
|
||||
$wlc = new whiteListCom();
|
||||
|
||||
if (true === $wlc->isReserved($author, $email)) {
|
||||
$status = 'reserved name';
|
||||
//return true;
|
||||
$throw = true;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
# This message is show to author even if comments are moderated, comment is not saved
|
||||
if ($throw) {
|
||||
throw new Exception(__('This name is reserved to an other user.'));
|
||||
}
|
||||
}
|
||||
|
||||
public function getStatusMessage($status, $comment_id)
|
||||
{
|
||||
return __('This name is reserved to an other user.');
|
||||
}
|
||||
|
||||
public function gui(string $url): string
|
||||
{
|
||||
try {
|
||||
$wlc = new whiteListCom();
|
||||
|
||||
if (!empty($_POST['update_reserved'])) {
|
||||
$wlc->emptyReserved();
|
||||
foreach ($_POST['reserved'] as $email => $name) {
|
||||
$wlc->addReserved($name, $email);
|
||||
}
|
||||
$wlc->commit();
|
||||
}
|
||||
$comments = $wlc->getCommentsUsers();
|
||||
} catch (Exception $e) {
|
||||
dcCore::app()->error->add($e->getMessage());
|
||||
}
|
||||
|
||||
$res = '<form action="' . html::escapeURL($url) . '" method="post">' .
|
||||
'<p>' . __('Check the users who can make comments without being moderated.') . '</p>' .
|
||||
'<p>' . __('Comments authors list') . '</p>' .
|
||||
'<table class="clear">' .
|
||||
'<thead><tr><th>' . __('Author') . '</th><th>' . __('Email') . '</th></tr></thead>' .
|
||||
'<tbody>';
|
||||
|
||||
foreach ($comments as $user) {
|
||||
$res .= '<tr class="line">' .
|
||||
'<td class="nowrap">' .
|
||||
form::checkbox(
|
||||
['reserved[' . $user['email'] . ']'],
|
||||
$user['name'],
|
||||
(null === $wlc->isReserved($user['name'], $user['email']))
|
||||
) .
|
||||
' ' . $user['name'] . '</td>' .
|
||||
'<td class="nowrap">' . $user['email'] . '</td>' .
|
||||
'</tr>';
|
||||
}
|
||||
|
||||
$res .= '</tbody>' .
|
||||
'</table>' .
|
||||
'<p><input type="submit" name="update_reserved" value="' . __('Save') . '" />' .
|
||||
dcCore::app()->formNonce() . '</p>' .
|
||||
'</form>';
|
||||
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup DC_PLUGIN_WHITELISTCOM
|
||||
* @brief White list filters methods
|
||||
|
@ -247,17 +30,13 @@ class whiteListCom
|
|||
|
||||
public function __construct()
|
||||
{
|
||||
$this->con = dcCore::app()->con;
|
||||
$this->blog = dcCore::app()->con->escape(dcCore::app()->blog->id);
|
||||
|
||||
dcCore::app()->blog->settings->addNamespace('whiteListCom');
|
||||
$this->settings = dcCore::app()->blog->settings->whiteListCom;
|
||||
|
||||
$this->con = dcCore::app()->con;
|
||||
$this->blog = dcCore::app()->con->escape(dcCore::app()->blog->id);
|
||||
$this->settings = dcCore::app()->blog->settings->whiteListCom;
|
||||
$unmoderated = $this->settings->whiteListCom_unmoderated;
|
||||
$this->unmoderated = self::decode($unmoderated);
|
||||
|
||||
$reserved = $this->settings->whiteListCom_reserved;
|
||||
$this->reserved = self::decode($reserved);
|
||||
$reserved = $this->settings->whiteListCom_reserved;
|
||||
$this->reserved = self::decode($reserved);
|
||||
}
|
||||
|
||||
public function commit()
|
||||
|
@ -341,14 +120,14 @@ class whiteListCom
|
|||
$rs = dcCore::app()->blog->getPostsUsers();
|
||||
while ($rs->fetch()) {
|
||||
$name = dcUtils::getUserCN(
|
||||
$rs->user_id,
|
||||
$rs->user_name,
|
||||
$rs->user_firstname,
|
||||
$rs->user_displayname
|
||||
$rs->__get('user_id'),
|
||||
$rs->__get('user_name'),
|
||||
$rs->__get('user_firstname'),
|
||||
$rs->__get('user_displayname')
|
||||
);
|
||||
$users[] = [
|
||||
'name' => $name,
|
||||
'email' => $rs->user_email,
|
||||
'email' => $rs->__get('user_email'),
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -367,8 +146,8 @@ class whiteListCom
|
|||
);
|
||||
while ($rs->fetch()) {
|
||||
$users[] = [
|
||||
'name' => $rs->comment_author,
|
||||
'email' => $rs->comment_email,
|
||||
'name' => $rs->__get('comment_author'),
|
||||
'email' => $rs->__get('comment_email'),
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -389,35 +168,3 @@ class whiteListCom
|
|||
return is_array($y) ? $y : [];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup DC_PLUGIN_WHITELISTCOM
|
||||
* @brief White list behaviors
|
||||
* @since 2.6
|
||||
*/
|
||||
class whiteListComBehaviors
|
||||
{
|
||||
# from behavior publicAfterCommentCreate
|
||||
public static function switchStatus($cur, $id)
|
||||
{
|
||||
if (dcCore::app()->blog === null
|
||||
|| dcCore::app()->blog->settings->system->comments_pub) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($cur->comment_spam_filter == 'whiteListComModeratedFilter'
|
||||
&& $cur->comment_spam_status == 'unmoderated') {
|
||||
dcCore::app()->con->writeLock(dcCore::app()->prefix . dcBlog::COMMENT_TABLE_NAME);
|
||||
|
||||
$cur->comment_status = 1;
|
||||
$cur->comment_spam_status = 0;
|
||||
$cur->comment_spam_filter = 0;
|
||||
$cur->update('WHERE comment_id = ' . $id . ' ');
|
||||
|
||||
dcCore::app()->con->unlock();
|
||||
|
||||
dcCore::app()->blog->triggerComment($id);
|
||||
dcCore::app()->blog->triggerBlog();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,138 @@
|
|||
<?php
|
||||
/**
|
||||
* @brief whiteListCom, a plugin for Dotclear 2
|
||||
*
|
||||
* @package Dotclear
|
||||
* @subpackage Plugin
|
||||
*
|
||||
* @author Jean-Christian Denis and Contributors
|
||||
*
|
||||
* @copyright Jean-Christian Denis
|
||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||
*/
|
||||
if (!defined('DC_RC_PATH')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup DC_PLUGIN_WHITELISTCOM
|
||||
* @brief Filter for unmoderated authors.
|
||||
* @since 2.6
|
||||
*
|
||||
* This filter is used only if comments are moderates
|
||||
*/
|
||||
class whiteListComModeratedFilter extends dcSpamFilter
|
||||
{
|
||||
public $name = 'Unmoderated authors';
|
||||
public $has_gui = true;
|
||||
|
||||
protected function setInfo()
|
||||
{
|
||||
$this->name = __('Unmoderated authors');
|
||||
$this->description = __('Whitelist of unmoderated authors');
|
||||
}
|
||||
|
||||
public function isSpam($type, $author, $email, $site, $ip, $content, $post_id, &$status)
|
||||
{
|
||||
if ($type != 'comment'
|
||||
|| dcCore::app()->blog === null
|
||||
|| dcCore::app()->blog->settings->system->comments_pub) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
$wlc = new whiteListCom();
|
||||
if ($wlc->isUnmoderated($email)) {
|
||||
$status = 'unmoderated';
|
||||
|
||||
# return true in order to change comment_status after
|
||||
return true;
|
||||
}
|
||||
|
||||
return null;
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
}
|
||||
|
||||
public function gui(string $url): string
|
||||
{
|
||||
$wlc = new whiteListCom();
|
||||
$posts = $comments = [];
|
||||
|
||||
try {
|
||||
if (!empty($_POST['update_unmoderated'])) {
|
||||
$wlc->emptyUnmoderated();
|
||||
foreach ($_POST['unmoderated'] as $email) {
|
||||
$wlc->addUnmoderated($email);
|
||||
}
|
||||
$wlc->commit();
|
||||
}
|
||||
$posts = $wlc->getPostsUsers();
|
||||
$comments = $wlc->getCommentsUsers();
|
||||
} catch (Exception $e) {
|
||||
dcCore::app()->error->add($e->getMessage());
|
||||
}
|
||||
|
||||
$res = '';
|
||||
|
||||
if (dcCore::app()->blog->settings->system->comments_pub) {
|
||||
$res .= '<p class="message">' .
|
||||
__('This filter is used only if comments are moderates') .
|
||||
'</p>';
|
||||
}
|
||||
|
||||
$res .= '<form action="' . html::escapeURL($url) . '" method="post">' .
|
||||
'<p>' . __('Check the users who can make comments without being moderated.') . '</p>' .
|
||||
'<div class="two-cols">' .
|
||||
'<div class="col">' .
|
||||
'<p>' . __('Posts authors list') . '</p>' .
|
||||
'<table class="clear">' .
|
||||
'<thead><tr><th>' . __('Name') . '</th><th>' . __('Email') . '</th></tr></thead>' .
|
||||
'<tbody>';
|
||||
|
||||
foreach ($posts as $user) {
|
||||
$res .= '<tr class="line">' .
|
||||
'<td class="nowrap">' .
|
||||
form::checkbox(
|
||||
['unmoderated[]'],
|
||||
$user['email'],
|
||||
$wlc->isUnmoderated($user['email'])
|
||||
) .
|
||||
' ' . $user['name'] . '</td>' .
|
||||
'<td class="nowrap">' . $user['email'] . '</td>' .
|
||||
'</tr>';
|
||||
}
|
||||
|
||||
$res .= '</tbody>' .
|
||||
'</table>' .
|
||||
'</div>' .
|
||||
'<div class="col">' .
|
||||
'<p>' . __('Comments authors list') . '</p>' .
|
||||
'<table class="clear">' .
|
||||
'<thead><tr><th>' . __('Author') . '</th><th>' . __('Email') . '</th></tr></thead>' .
|
||||
'<tbody>';
|
||||
|
||||
foreach ($comments as $user) {
|
||||
$res .= '<tr class="line">' .
|
||||
'<td class="nowrap">' .
|
||||
form::checkbox(
|
||||
['unmoderated[]'],
|
||||
$user['email'],
|
||||
$wlc->isUnmoderated($user['email'])
|
||||
) .
|
||||
' ' . $user['name'] . '</td>' .
|
||||
'<td class="nowrap">' . $user['email'] . '</td>' .
|
||||
'</tr>';
|
||||
}
|
||||
|
||||
$res .= '</tbody>' .
|
||||
'</table>' .
|
||||
'</div>' .
|
||||
'</div>' .
|
||||
'<p><input type="submit" name="update_unmoderated" value="' . __('Save') . '" />' .
|
||||
dcCore::app()->formNonce() . '</p>' .
|
||||
'</form>';
|
||||
|
||||
return $res;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
/**
|
||||
* @brief whiteListCom, a plugin for Dotclear 2
|
||||
*
|
||||
* @package Dotclear
|
||||
* @subpackage Plugin
|
||||
*
|
||||
* @author Jean-Christian Denis and Contributors
|
||||
*
|
||||
* @copyright Jean-Christian Denis
|
||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||
*/
|
||||
if (!defined('DC_RC_PATH')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup DC_PLUGIN_WHITELISTCOM
|
||||
* @brief Filter for reserved names.
|
||||
* @since 2.6
|
||||
*/
|
||||
class whiteListComReservedFilter extends dcSpamFilter
|
||||
{
|
||||
public $name = 'Reserved names';
|
||||
public $has_gui = true;
|
||||
|
||||
protected function setInfo()
|
||||
{
|
||||
$this->name = __('Reserved names');
|
||||
$this->description = __('Whitelist of reserved names of users');
|
||||
}
|
||||
|
||||
public function isSpam($type, $author, $email, $site, $ip, $content, $post_id, &$status)
|
||||
{
|
||||
if ($type != 'comment') {
|
||||
return null;
|
||||
}
|
||||
|
||||
$throw = false;
|
||||
|
||||
try {
|
||||
$wlc = new whiteListCom();
|
||||
|
||||
if (true === $wlc->isReserved($author, $email)) {
|
||||
$status = 'reserved name';
|
||||
//return true;
|
||||
$throw = true;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
# This message is show to author even if comments are moderated, comment is not saved
|
||||
if ($throw) {
|
||||
throw new Exception(__('This name is reserved to an other user.'));
|
||||
}
|
||||
}
|
||||
|
||||
public function getStatusMessage($status, $comment_id)
|
||||
{
|
||||
return __('This name is reserved to an other user.');
|
||||
}
|
||||
|
||||
public function gui(string $url): string
|
||||
{
|
||||
$wlc = new whiteListCom();
|
||||
$comments = [];
|
||||
|
||||
try {
|
||||
if (!empty($_POST['update_reserved'])) {
|
||||
$wlc->emptyReserved();
|
||||
foreach ($_POST['reserved'] as $email => $name) {
|
||||
$wlc->addReserved($name, $email);
|
||||
}
|
||||
$wlc->commit();
|
||||
}
|
||||
$comments = $wlc->getCommentsUsers();
|
||||
} catch (Exception $e) {
|
||||
dcCore::app()->error->add($e->getMessage());
|
||||
}
|
||||
|
||||
$res = '<form action="' . html::escapeURL($url) . '" method="post">' .
|
||||
'<p>' . __('Check the users who can make comments without being moderated.') . '</p>' .
|
||||
'<p>' . __('Comments authors list') . '</p>' .
|
||||
'<table class="clear">' .
|
||||
'<thead><tr><th>' . __('Author') . '</th><th>' . __('Email') . '</th></tr></thead>' .
|
||||
'<tbody>';
|
||||
|
||||
foreach ($comments as $user) {
|
||||
$res .= '<tr class="line">' .
|
||||
'<td class="nowrap">' .
|
||||
form::checkbox(
|
||||
['reserved[' . $user['email'] . ']'],
|
||||
$user['name'],
|
||||
(null === $wlc->isReserved($user['name'], $user['email']))
|
||||
) .
|
||||
' ' . $user['name'] . '</td>' .
|
||||
'<td class="nowrap">' . $user['email'] . '</td>' .
|
||||
'</tr>';
|
||||
}
|
||||
|
||||
$res .= '</tbody>' .
|
||||
'</table>' .
|
||||
'<p><input type="submit" name="update_reserved" value="' . __('Save') . '" />' .
|
||||
dcCore::app()->formNonce() . '</p>' .
|
||||
'</form>';
|
||||
|
||||
return $res;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
/**
|
||||
* @package Dotclear
|
||||
*
|
||||
* @copyright Olivier Meunier & Association Dotclear
|
||||
* @copyright GPL-2.0-only
|
||||
*/
|
||||
#
|
||||
# DOT NOT MODIFY THIS FILE !
|
||||
#
|
||||
|
||||
l10n::$locales['Unmoderated authors'] = 'Auteurs non modérés';
|
||||
l10n::$locales['Whitelist of unmoderated authors'] = 'Liste blanche des auteurs non modérés';
|
||||
l10n::$locales['This filter is used only if comments are moderates'] = 'Ce filtre est utilisé seulement si les commentaires sont modérés.';
|
||||
l10n::$locales['Check the users who can make comments without being moderated.'] = 'Cocher les utilisateurs qui peuvent faire des commentaires sans être modérés.';
|
||||
l10n::$locales['Posts authors list'] = 'Liste des auteurs de billets';
|
||||
l10n::$locales['Comments authors list'] = 'Liste des auteurs de commentaires';
|
||||
l10n::$locales['Reserved names'] = 'Noms réservés';
|
||||
l10n::$locales['Whitelist of reserved names of users'] = 'Liste blanche des noms d\'utilisateurs réservés';
|
||||
l10n::$locales['This name is reserved to an other user.'] = 'Ce nom est réservé à un autre utilisateur.';
|
||||
l10n::$locales['Whitelists for comments moderation'] = 'Listes blanches pour la modération de commentaires';
|
||||
l10n::$locales['Whitelist comments'] = 'Liste blanche des commentaires';
|
Loading…
Reference in New Issue