вынесены в настройки время редактирования и время кукиса
This commit is contained in:
@@ -102,7 +102,7 @@ class Comment
|
||||
/**
|
||||
* Настройки времени (в секундах)
|
||||
*/
|
||||
public $conf_edit_time = 60; // 10 минут на редактирование/удаление
|
||||
public $conf_edit_time = 600; // 10 минут на редактирование/удаление
|
||||
public $conf_cookie_life = 30; // 30 дней жизни куки для анонима
|
||||
private $_anon_cookie_name = 'ave_anon_comment_key';
|
||||
|
||||
@@ -127,38 +127,41 @@ class Comment
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для получения основных настроек модуля,которые задаются в Панели управления.
|
||||
*
|
||||
* @param string $param название параметра
|
||||
* @return mixed значение настройки
|
||||
*/
|
||||
function _commentSettingsGet($param = '')
|
||||
{
|
||||
global $AVE_DB;
|
||||
function _commentSettingsGet($param = '')
|
||||
{
|
||||
global $AVE_DB;
|
||||
|
||||
// Определяем статическую переменную, которая будет хранить полученные настройки на протяжении всего
|
||||
// срока жизни объекта.
|
||||
static $settings = null;
|
||||
static $settings = null;
|
||||
|
||||
// Если переменная $settings еще не имеет значений, тогда выполняем запрос к БД на получение данных
|
||||
if ($settings === null)
|
||||
{
|
||||
$settings = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_module_comments
|
||||
WHERE Id = '" . $this->_config_id . "'
|
||||
")->FetchAssocArray();
|
||||
}
|
||||
if ($settings === null)
|
||||
{
|
||||
$settings = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_module_comments
|
||||
WHERE Id = '" . $this->_config_id . "'
|
||||
")->FetchAssocArray();
|
||||
|
||||
if ($param == '')
|
||||
return $settings;
|
||||
// ОБНОВЛЯЕМ ПЕРЕМЕННЫЕ КЛАССА ЗНАЧЕНИЯМИ ИЗ БАЗЫ
|
||||
if ($settings) {
|
||||
// Если в базе есть настройка, перезаписываем стандартные 60 секунд
|
||||
if (isset($settings['comment_edit_time'])) {
|
||||
$this->conf_edit_time = (int)$settings['comment_edit_time'];
|
||||
}
|
||||
|
||||
// Если в базе есть настройка куки, перезаписываем стандартные 30 дней
|
||||
if (isset($settings['comment_cookie_life'])) {
|
||||
$this->conf_cookie_life = (int)$settings['comment_cookie_life'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// В противном случае возвращаем уже имеющиеся значения
|
||||
return (isset($settings[$param])
|
||||
? $settings[$param]
|
||||
: null);
|
||||
}
|
||||
if ($param == '')
|
||||
return $settings;
|
||||
|
||||
return (isset($settings[$param])
|
||||
? $settings[$param]
|
||||
: null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для получения количества комментариев для определенного документа.
|
||||
@@ -1229,9 +1232,11 @@ function commentPostDelete($comment_id)
|
||||
*/
|
||||
function commentAdminSettingsEdit($tpl_dir)
|
||||
{
|
||||
global $AVE_DB, $AVE_Template, $sess; // Добавили $sess в global для редиректа
|
||||
global $AVE_DB, $AVE_Template, $sess;
|
||||
|
||||
$request_sub = $_REQUEST['sub'] ?? '';
|
||||
|
||||
// Получаем основные настройки
|
||||
$post_max_chars = $_POST['comment_max_chars'] ?? 0;
|
||||
$post_user_groups = $_POST['comment_user_groups'] ?? array();
|
||||
$post_user_groups_read = $_POST['comment_user_groups_read'] ?? array();
|
||||
@@ -1242,6 +1247,7 @@ function commentAdminSettingsEdit($tpl_dir)
|
||||
$post_use_page_nav = $_POST['comment_use_page_nav'] ?? 0;
|
||||
$post_page_nav_count = $_POST['comment_page_nav_count'] ?? 0;
|
||||
|
||||
// Настройки рейтинга и файлов
|
||||
$post_allow_files = $_POST['comment_allow_files'] ?? 0;
|
||||
$post_allow_files_anon = $_POST['comment_allow_files_anon'] ?? 0;
|
||||
$post_rating_type = $_POST['comment_rating_type'] ?? 0;
|
||||
@@ -1249,6 +1255,11 @@ function commentAdminSettingsEdit($tpl_dir)
|
||||
$post_rating_anon_vote = $_POST['comment_rating_anon_vote'] ?? 0;
|
||||
$post_rating_anon_set = $_POST['comment_rating_anon_set'] ?? 0;
|
||||
|
||||
// Новые настройки времени и куки
|
||||
$post_edit_time = $_POST['comment_edit_time'] ?? 60;
|
||||
$post_cookie_life = $_POST['comment_cookie_life'] ?? 30;
|
||||
|
||||
// Дополнительные поля
|
||||
$post_show_f1 = $_POST['comment_show_f1'] ?? 0;
|
||||
$post_req_f1 = $_POST['comment_req_f1'] ?? 0;
|
||||
$post_name_f1 = $_POST['comment_name_f1'] ?? '';
|
||||
@@ -1257,10 +1268,12 @@ function commentAdminSettingsEdit($tpl_dir)
|
||||
$post_req_f2 = $_POST['comment_req_f2'] ?? 0;
|
||||
$post_name_f2 = $_POST['comment_name_f2'] ?? '';
|
||||
|
||||
// Обработка сохранения (и для AJAX 'apply', и для формы 'save')
|
||||
// Обработка сохранения
|
||||
if ($request_sub == 'save' || $request_sub == 'apply')
|
||||
{
|
||||
$max_chars = (empty($post_max_chars) || $post_max_chars < 50) ? 50 : $post_max_chars;
|
||||
|
||||
// Подготовка имен полей (оставляем твою логику с htmlspecialchars)
|
||||
$clean_name_f1 = htmlspecialchars(stripslashes($post_name_f1), ENT_QUOTES);
|
||||
$clean_name_f2 = htmlspecialchars(stripslashes($post_name_f2), ENT_QUOTES);
|
||||
|
||||
@@ -1281,6 +1294,11 @@ function commentAdminSettingsEdit($tpl_dir)
|
||||
comment_show_user_rating = '" . (int)$post_show_user_rating . "',
|
||||
comment_rating_anon_vote = '" . (int)$post_rating_anon_vote . "',
|
||||
comment_rating_anon_set = '" . (int)$post_rating_anon_set . "',
|
||||
|
||||
/* Новые поля времени и куки */
|
||||
comment_edit_time = '" . (int)$post_edit_time . "',
|
||||
comment_cookie_life = '" . (int)$post_cookie_life . "',
|
||||
|
||||
comment_show_f1 = '" . (int)$post_show_f1 . "',
|
||||
comment_req_f1 = '" . (int)$post_req_f1 . "',
|
||||
comment_name_f1 = '" . addslashes($clean_name_f1) . "',
|
||||
@@ -1291,21 +1309,21 @@ function commentAdminSettingsEdit($tpl_dir)
|
||||
Id = 1
|
||||
");
|
||||
|
||||
// Если это AJAX запрос "Применить"
|
||||
if ($request_sub == 'apply') {
|
||||
@ob_clean();
|
||||
echo "success";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Если это обычное "Сохранить" - уходим на главную модулей
|
||||
if ($request_sub == 'save') {
|
||||
header("Location: index.php?do=modules&cp=" . $sess);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Получаем данные для отображения в шаблоне
|
||||
$row = $this->_commentSettingsGet();
|
||||
|
||||
$row['comment_user_groups'] = explode(',', $row['comment_user_groups']);
|
||||
$row['comment_user_groups_read'] = explode(',', $row['comment_user_groups_read']);
|
||||
|
||||
|
||||
69
sql.php
69
sql.php
@@ -3,11 +3,9 @@
|
||||
/**
|
||||
* AVE.cms - Модуль Комментарии
|
||||
*
|
||||
* Обновленная структура с поддержкой выбора типа рейтинга (звезды/лайки),
|
||||
* идентификации анонимных пользователей, загрузки файлов и защиты по IP.
|
||||
* Добавлена поддержка "Авторских звезд" (user_rating) и настройки их отображения.
|
||||
* ДОБАВЛЕНО: Настройка разрешения голосования для анонимов, выставления ими звезд
|
||||
* и ПРАВА НА ЗАГРУЗКУ ИЗОБРАЖЕНИЙ ДЛЯ АНОНИМОВ.
|
||||
* Обновленная структура с поддержкой выбора типа рейтинга,
|
||||
* идентификации анонимов, загрузки файлов и защиты по IP.
|
||||
* ДОБАВЛЕНО: Настройки времени редактирования и жизни куки анонима.
|
||||
*/
|
||||
|
||||
$module_sql_install = array();
|
||||
@@ -39,14 +37,18 @@ $module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_comments` (
|
||||
`comment_name_f2` varchar(255) NOT NULL default '',
|
||||
`comment_allow_files` tinyint(1) NOT NULL default '0',
|
||||
`comment_file_max_size` int(10) NOT NULL default '2048',
|
||||
`comment_rating_type` tinyint(1) NOT NULL default '0', /* 0 - звезды, 1 - лайки, 2 - выключен */
|
||||
`comment_show_user_rating` tinyint(1) NOT NULL default '0', /* ВКЛ/ВЫКЛ авторских звезд */
|
||||
`comment_rating_anon_vote` tinyint(1) NOT NULL default '0', /* РАЗРЕШИТЬ АНОНИМАМ ГОЛОСОВАТЬ */
|
||||
`comment_rating_anon_set` tinyint(1) NOT NULL default '0', /* РАЗРЕШИТЬ АНОНИМАМ СТАВИТЬ ЗВЕЗДЫ */
|
||||
`comment_allow_files_anon` tinyint(1) NOT NULL default '0', /* РАЗРЕШИТЬ АНОНИМАМ ЗАГРУЖАТЬ ФАЙЛЫ */
|
||||
`comment_rating_type` tinyint(1) NOT NULL default '0',
|
||||
`comment_show_user_rating` tinyint(1) NOT NULL default '0',
|
||||
`comment_rating_anon_vote` tinyint(1) NOT NULL default '0',
|
||||
`comment_rating_anon_set` tinyint(1) NOT NULL default '0',
|
||||
`comment_allow_files_anon` tinyint(1) NOT NULL default '0',
|
||||
/* НОВЫЕ ПОЛЯ */
|
||||
`comment_edit_time` int(11) NOT NULL default '60',
|
||||
`comment_cookie_life` int(11) NOT NULL default '30',
|
||||
PRIMARY KEY (`Id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
|
||||
|
||||
// ... (таблицы info и votes остаются без изменений) ...
|
||||
$module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_comment_info` (
|
||||
`Id` int(10) unsigned NOT NULL auto_increment,
|
||||
`parent_id` int(10) unsigned NOT NULL default '0',
|
||||
@@ -64,8 +66,7 @@ $module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_comment_info` (
|
||||
`comment_status` tinyint(1) unsigned NOT NULL default '1',
|
||||
`comments_close` tinyint(1) unsigned NOT NULL default '0',
|
||||
`comment_file` varchar(255) NOT NULL default '',
|
||||
`user_rating` tinyint(1) NOT NULL default '0', /* ЛИЧНАЯ ОЦЕНКА АВТОРА (1-5) */
|
||||
/* ПОЛЯ ОБЩЕГО РЕЙТИНГА (ГОЛОСОВАНИЕ) */
|
||||
`user_rating` tinyint(1) NOT NULL default '0',
|
||||
`rating_sum` int(10) NOT NULL default '0',
|
||||
`rating_count` int(10) NOT NULL default '0',
|
||||
PRIMARY KEY (`Id`),
|
||||
@@ -90,52 +91,24 @@ $module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_comment_votes` (
|
||||
KEY `remote_addr` (`remote_addr`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
|
||||
|
||||
/* Настройки по умолчанию (добавлен 0 для comment_allow_files_anon в конце) */
|
||||
$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_comments` VALUES (1, 1000, '1,3', '1,2,3,4', '0', '1', '1' , '0', '', 1, 0, '', 1, 0, '', 0, 2048, 0, 1, 0, 0, 0);";
|
||||
/* Настройки по умолчанию (добавлены 60 и 30 в конце) */
|
||||
$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_comments` VALUES (1, 1000, '1,3', '1,2,3,4', '0', '1', '1' , '0', '', 1, 0, '', 1, 0, '', 0, 2048, 0, 1, 0, 0, 0, 60, 30);";
|
||||
|
||||
// =================================================================================
|
||||
// 2. ОБНОВЛЕНИЕ МОДУЛЯ (ALTER TABLE)
|
||||
// =================================================================================
|
||||
|
||||
$module_sql_update[] = "
|
||||
UPDATE `%%PRFX%%_module`
|
||||
SET
|
||||
ModuleAveTag = '" . $modul['ModuleAveTag'] . "',
|
||||
ModulePHPTag = '" . $modul['ModulePHPTag'] . "',
|
||||
ModuleVersion = '" . $modul['ModuleVersion'] . "'
|
||||
WHERE ModuleSysName = '" . $modul['ModuleSysName'] . "'
|
||||
LIMIT 1;
|
||||
";
|
||||
// ... (предыдущие запросы обновления ModuleAveTag и прочего) ...
|
||||
|
||||
/* Добавляем настройки рейтинга и файлов в таблицу конфигурации */
|
||||
/* Добавляем новые настройки времени, если их еще нет */
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_edit_time` INT(11) NOT NULL DEFAULT '60';";
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_cookie_life` INT(11) NOT NULL DEFAULT '30';";
|
||||
|
||||
/* (Остальные ALTER TABLE из твоего списка остаются ниже без изменений) */
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_rating_type` TINYINT(1) NOT NULL DEFAULT '0';";
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_show_user_rating` TINYINT(1) NOT NULL DEFAULT '0';";
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_rating_anon_vote` TINYINT(1) NOT NULL DEFAULT '0';";
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_rating_anon_set` TINYINT(1) NOT NULL DEFAULT '0';";
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_allow_files_anon` TINYINT(1) NOT NULL DEFAULT '0';";
|
||||
|
||||
/* Добавляем поля для оценки и голосования в таблицу инфо */
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comment_info` ADD COLUMN IF NOT EXISTS `user_rating` TINYINT(1) NOT NULL DEFAULT '0' AFTER `comment_file`;";
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comment_info` ADD COLUMN IF NOT EXISTS `rating_sum` INT(10) NOT NULL DEFAULT '0';";
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comment_info` ADD COLUMN IF NOT EXISTS `rating_count` INT(10) NOT NULL DEFAULT '0';";
|
||||
|
||||
/* Обновляем типы полей */
|
||||
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comment_info` MODIFY `comment_author_ip` VARCHAR(45) NOT NULL;";
|
||||
|
||||
/* Создаем таблицу голосов, если обновляемся со старой версии */
|
||||
$module_sql_update[] = "CREATE TABLE IF NOT EXISTS `%%PRFX%%_module_comment_votes` (
|
||||
`id` int(10) unsigned NOT NULL auto_increment,
|
||||
`comment_id` int(10) unsigned NOT NULL,
|
||||
`user_id` int(10) unsigned DEFAULT '0',
|
||||
`anon_key` varchar(32) DEFAULT '',
|
||||
`remote_addr` varchar(45) DEFAULT '',
|
||||
`vote_value` tinyint(1) NOT NULL,
|
||||
`date_voted` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `comment_id` (`comment_id`),
|
||||
KEY `anon_key` (`anon_key`),
|
||||
KEY `user_id` (`user_id`),
|
||||
KEY `remote_addr` (`remote_addr`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
|
||||
|
||||
?>
|
||||
@@ -56,6 +56,19 @@
|
||||
<td><input name="comment_max_chars" type="text" id="comment_max_chars" value="{$comment_max_chars}" size="5" maxlength="5" style="width: 50px;" /></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Время на редактирование:</td>
|
||||
<td style="border-right: 1px solid #ddd;">
|
||||
<input name="comment_edit_time" type="text" value="{$comment_edit_time}" size="5" style="width: 50px;" />
|
||||
<span style="color: #888; font-size: 11px; margin-left: 5px;">сек.</span>
|
||||
</td>
|
||||
<td>Жизнь куки анонима:</td>
|
||||
<td>
|
||||
<input name="comment_cookie_life" type="text" value="{$comment_cookie_life}" size="5" style="width: 50px;" />
|
||||
<span style="color: #888; font-size: 11px; margin-left: 5px;">дн.</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="vertical-align: top; padding-top: 15px;">{#COMMENT_FOR_GROUPS#}</td>
|
||||
<td style="vertical-align: top; padding-top: 10px;">
|
||||
|
||||
Reference in New Issue
Block a user