непромодерированные */ protected $emulateAdmCommentsModeration = false; /** * @var mixed удалять текст комментария при удалении комментария: * false - не удалять * true - удалять с заменой на пустую строку ('') * "текст" - удалять с заменой на "текст" */ protected $eraseMessageOnDelete = false; # тип комментариев protected $commentsTree = true; # древовидные protected $commentsTree2Levels = false; # древовидные (не более 2 уровней вложенности) # счетчики комментариев # общий счетчик непромодерированных комментариев всех записей (config-ключ) protected $counterKey_UnmoderatedAll = ''; # счетчик комментариев записи (промодерированных, если включена премодерация) (имя поля в таблице записей) protected $counterKey_ItemComments = ''; # флаги, определяющие инициатора удаления комментария либо причину его скрытия public const commentDeletedByModerator = 1; # удален модератором public const commentDeletedByCommentOwner = 2; # удален автором комментария public const commentDeletedByItemOwner = 3; # удален автором записи public const commentFromBlockedUser = 4; # не отображается по причине блокировки аккаунта /** * Текстовки объясняющие удаление(скрытие) комментария * @var array */ protected $commentHideReasons = array( self::commentDeletedByModerator => 'Удален модератором', self::commentDeletedByCommentOwner => 'Удален автором комментария', self::commentDeletedByItemOwner => 'Удален автором записи', self::commentFromBlockedUser => 'Комментарий от заблокированного пользователя', ); protected $urlListing = ''; /** @example: $this->adminLink('{edit&tab=comments}&id=', '{module}') */ protected $urlListingAjax = ''; /** @example: $this->adminLink('{comments_ajax}', '{module}') */ /** @var int ID Группы комментариев */ protected $groupID = 0; /** * Конструктор */ public function __construct() { } abstract protected function initSettings(); /** * Установка ID группы записей * @param int $nGroupID */ public function setGroupID($nGroupID = 0) { } /** * Используются ли группы записей * @return bool */ public function isGroupUsed() { } /** * Включена ли премодерация комментариев * @return bool */ public function isPreModeration() { } /** * Список комментариев * @param int $nItemID ID записи (к которой прикрепляется комментарий) * @param string|bool $mUrlListingAjax ajax URL или FALSE * @return string HTML */ public function admListing($nItemID, $mUrlListingAjax = false) { } /** * Общий список комментариев (к разным записям) на модерацию * @param int $nLimit кол-во на страницу * @param bool $tabs выводить табы * @return mixed */ public function admListingModerate($nLimit = 15, $tabs = false) { } /** * Обработка ajax-запросов от js компонента работы с комментариями */ public function admAjax() { } /** * Подключаем js файлы, необходимые для работы со списком комментариев в админ. панели */ public function admListingIncludes() { } /** * Обновляем общий счетчик непромодерированных комментариев * @param int|bool|null $mIncrement инкремент: * > 1, -1 - +/- к текущему значению * > false - получаем текущее значение счетчика * > NULL - пересчитываем(актуализируем) текущее значение */ public function updateUnmoderatedAllCounter($mIncrement = false) { } /** * Получение данных обо всех комментариях к записи * - в случае с frontend'ом и включенной preModeration: исключаем непромодерированные * @param int $nItemID ID записи или 0 (все комментарии группы, если группы задействованы) * @param int $nCommentLastID ID комментария, с которого следует начать выборку * @param bool $bSimpleTree простое дерево (выполняем только transformRowsToTree) * @return array */ public function commentsData($nItemID, $nCommentLastID = 0, $bSimpleTree = false) { return array('aComments' => array(), 'nMaxIdComment' => 0, 'total' => 0); } /** * Получение данных комментария * @param int $nItemID ID записи * @param int $nCommentID ID комментария * @return array */ public function commentData($nItemID, $nCommentID) { } /** * Сохранение комментария в базу * @param int $nItemID ID записи * @param array $aData данные * @param int $nParentCommentID ID parent-комментария * @return mixed ID добавленного комментария или FALSE */ public function commentInsert($nItemID, $aData, $nParentCommentID = 0) { } /** * Удаление комментария * @param int $nItemID ID записи * @param int $nCommentID ID комментария * @param int $nDeletedBy инициатор удаления (владелец, модератор...) * @return bool */ public function commentDelete($nItemID, $nCommentID, $nDeletedBy) { } /** * Подсчет кол-ва комментариев у записи * @param int $nItemID ID записи * @return mixed */ public function commentsTotal($nItemID) { } /** * Обработчик события модерации комментариев * @param array $aCommentsID ID промодерированных комментариев * @param string $sAction тип действия: moderate-one, moderate-many, add, add-admin */ public function onCommentsModerated(array $aCommentsID, $sAction) { } /** * Возвращаем список текстовых описаний возможных причин объясняющих скрытие комментария * @return array */ public function getHideReasons() { } /** * Валидация текста комментария * @param string $sMessage текст сообщения * @param bool $bActivateLinks активировать ссылки * @return string */ public function validateMessage($sMessage, $bActivateLinks = true) { } }