Files
comment/module.php
T

180 lines
7.4 KiB
PHP

<?php
/**
* AVE.cms - Модуль Комментарии
*
* @package AVE.cms
* @subpackage module_Comment
* @filesource
*/
if(!defined('BASE_DIR')) exit;
/**
* Функция, предназначенная для вывода списка комментариев к данному документу.
* Она будет выполнена при парсинге шаблона вместо системного тега [mod_comment].
*/
function mod_comment($param = '')
{
global $AVE_Template;
// 1. Подключаем класс
require_once(BASE_DIR . '/modules/comment/class/comment.php');
$comment = new Comment;
// 2. Проверяем: если в теге передана цифра [mod_comment:5]
// $param может прийти в виде ":5" или просто "5" в зависимости от парсера
$limit = (int)str_replace(':', '', $param);
if ($limit > 0) {
// --- РЕЖИМ "ПОСЛЕДНИЕ ОТЗЫВЫ" ---
$tpl_dir = BASE_DIR . '/modules/comment/templates/';
// Загружаем переводы (даты, заголовки)
$lang_file = BASE_DIR . '/modules/comment/lang/' . ($_SESSION['user_language'] ?? 'ru') . '.txt';
if (file_exists($lang_file)) $AVE_Template->config_load($lang_file, 'module');
// Берем данные из метода
$items = $comment->getLatestComments($limit);
$AVE_Template->assign('last_comments_items', $items);
// Выводим специальный шаблон для виджета
echo $AVE_Template->fetch($tpl_dir . 'last_comments.tpl');
return; // Выходим, чтобы под виджетом не вылез список комментов статьи
}
// --- СТАНДАРТНЫЙ РЕЖИМ (список под статьей) ---
// Если параметров нет или это обычный [mod_comment]
$tpl_dir = BASE_DIR . '/modules/comment/templates/';
$lang_file = BASE_DIR . '/modules/comment/lang/' . ($_SESSION['user_language'] ?? 'ru') . '.txt';
if (file_exists($lang_file)) $AVE_Template->config_load($lang_file, 'module');
$comment->commentListShow($tpl_dir);
}
/**
* Следующий раздел описывает правила поведения модуля и его функциональные возможности
* только при работе в Публичной части сайта.
*/
// Определяем, что мы не находимся в Панели управления и в строке запроса происходит обращение именно к данному модулю
if (!defined('ACP') && isset($_REQUEST['module']) && $_REQUEST['module'] == 'comment' && isset($_REQUEST['action']))
{
// Подключаем основной класс и создаем объект
require_once(BASE_DIR . '/modules/comment/class/comment.php');
$comment = new Comment;
// Определяем директори, где хранятся файлы с шаблонами модуля и подключаем языковые переменные
$tpl_dir = BASE_DIR . '/modules/comment/templates/';
$lang_file = BASE_DIR . '/modules/comment/lang/' . $_SESSION['user_language'] . '.txt';
$AVE_Template->config_load($lang_file, 'module');
// Определяем, какой параметр пришел из строки запроса браузера
switch($_REQUEST['action'])
{
// Если form, тогда отображаем форму для добавления нового комментария
case 'form':
$comment->commentPostFormShow($tpl_dir);
break;
// Если comment, тогда производим запись нового комментария в БД
case 'comment':
$comment->commentPostNew($tpl_dir);
break;
// --- НОВОЕ: ОБРАБОТКА ГОЛОСОВАНИЯ (РЕЙТИНГ) ---
case 'vote':
$comment->commentVote();
break;
// Если edit, тогда открываем форму для редактирования текста комментария
case 'edit':
if (!empty(UGROUP))
{
$comment->commentPostEdit((int)$_REQUEST['Id']);
}
break;
// Если delete, тогда удаляем комментарий
case 'delete':
if (!empty(UGROUP))
{
$comment->commentPostDelete((int)$_REQUEST['Id']);
}
break;
// Если postinfo, тогда отображаем окно с информацией об авторе комментария
case 'postinfo':
$comment->commentPostInfoShow($tpl_dir);
break;
// Если lock или unlock, тогда запрещаем или разрешаем оставлять ответы для имеющихся комментариев
case 'lock':
case 'unlock':
if (UGROUP==1)
{
$comment->commentReplyStatusSet((int)$_REQUEST['Id'], $_REQUEST['action']);
}
break;
// Если open или close, тогда разрешаем или запрещаем полное комментирование документа
case 'open':
case 'close':
if (UGROUP==1)
{
$comment->commentStatusSet((int)$_REQUEST['docid'], $_REQUEST['action']);
}
break;
}
}
/**
* Следующий раздел описывает правила поведения модуля и его функциональные возможности
* только при работе в Административной части сайта.
*/
if (defined('ACP') && !empty($_REQUEST['moduleaction']))
{
// Подключаем основной класс и создаем объект
require_once(BASE_DIR . '/modules/comment/class/comment.php');
$comment = new Comment;
// Определяем директори, где хранятся файлы с шаблонами модуля и подключаем языковые переменные
$tpl_dir = BASE_DIR . '/modules/comment/templates/';
$lang_file = BASE_DIR . '/modules/comment/lang/' . $_SESSION['admin_language'] . '.txt';
$AVE_Template->config_load($lang_file, 'admin');
// Определяем, какой параметр пришел из строки запроса браузера
switch ($_REQUEST['moduleaction'])
{
// Если 1, тогда отображаем список всех комментариев с постраничной навигацией
case '1':
$comment->commentAdminListShow($tpl_dir);
break;
// Если admin_edit, тогда открываем форму для редактирования выбранного комментария
case 'admin_edit':
$comment->commentAdminPostEdit($tpl_dir);
break;
// Если settings, тогда открываем страницу с настройками данного модуля
case 'settings':
// Подключаем файл класса для работы с пользователями, создаем объект и получаем список
// всех групп пользователей, имеющихся в системе.
require_once(BASE_DIR . '/class/class.user.php');
$AVE_User = new AVE_User;
$AVE_Template->assign('groups', $AVE_User->userGroupListGet());
$comment->commentAdminSettingsEdit($tpl_dir);
break;
case 'admin_del':
$comment->commentAdminDelete((int)$_REQUEST['Id']);
break;
}
}
?>