Орла
Области
Компаний
Пользователи
Галерея
Фиксированные новости
Орла
Отзывы о фирмах
Тарифы
Пользователи
Области
Банкоматы
Торговые точки
Доска объявлений
Курсы валют
Скидки
организации Орла
организации области
товары
сайты
сайты Орел
Данные
Разделы
Поиск
Поиск запросы
Статистика
Показы каталога организаций
Статистика клиенты
Пользователи
Сайты
Управление сайтом
Анкета
Аптеки
Афиша
Афиша новая
Баннеры
Бизнес >
Викторина
Голосование
Гость на сайте
Истории
Календарь событий
Каталоги >
Конкурс красоты
Конкурс аудио
Консультации
Меню
Новое на сайте
Новости >
Организации >
Программа ТВ
Публикации
Разделы сайта
Рассылка
Рестораны
Секрет фирмы >
Сервисы >
Ссылки
Тесты
Файловый менеджер
Форум
Фотогалерея
Обратная связь
Недвижимость
Новый год
Тексты
Пользователи
Юридический рейтинг
Отзывы на товары
Бан пользователей
Жалобы
Новые тесты
Коронавирус
Файловый менеджер
Имя файла
AddCommentForm.php
Содержимое
<?php namespace app\comments\forms; use app\comments\Comments; use app\comments\ForumObjects; use app\comments\helpers\ForumThemeHelper; use app\comments\images\SaveImagesService; use app\core\external\censure\Censure; use app\core\models\Form; use app\forum\Access; use app\forum\action\ForumArticleImagesSaverAction; use app\forum\entity\ForumArticleImage; use app\forum\Forum; use App; use app\forum\ForumArticleRepository; class AddCommentForm extends Form { public $id; public $parentId = 0; public $entity; public $message; public $images = []; private $_forumId; private $_date; private $_userId; private $_validateUserGuest = true; private $_validateIp = true; private $_validateTimeAccess = true; private $saveImagesService; /** * Сюда попадет идентификатор комментария после сохранения. * @var int */ private $_afterSaveArticleId = 0; public function __construct($userId = null) { $this->_userId = $userId == null ? App::$user->getId() : $userId; $this->saveImagesService = new SaveImagesService(); } /** * Если использовать этот метод, то валидация пользователя на то вошел он или нет отключается. * @return $this */ public function disableUserGuestValidator() { $this->_validateUserGuest = false; return $this; } /** * Если использовать этот метод, то валидация IP адреса будет отключена * @return $this */ public function disableIpValidator() { $this->_validateIp = false; return $this; } public function disableTimeAccessValidator() { $this->_validateTimeAccess = false; return $this; } public function rules() { $rules = [ ['id', 'required', 'message' => 'Не указан материал, к которому будет оставлен комментарий'], ['entity', 'required', 'message' => 'Невозможно оставить комментарий'], ['message', 'required', 'message' => 'Укажите ваше сообщение'], ['parentId', 'required', 'message' => 'Не все данные переданы'] ]; return $rules; } private function prepareText($body) { return $body; } public function setUserId($userId) { $this->_userId = (int) $userId; return $this; } public function setDate($date) { $this->_date = $date; } public function save() { $this->_forumId = ForumObjects::getForumId($this->entity, $this->id); if ($this->_validateUserGuest && App::$user->isGuest() == true) { $this->addError('message', 'Вам запрещено оставлять комментарии. Необходимо авторизоваться.'); return false; } // проверяем доступ пользователя к форуму $access = new Access(); if ($this->_validateIp && $access->isForumIpBanned(\App::$request->getIp())) { $this->addError('message', 'Ваш IP был забанен. Вы не можете добавлять комментарии к новости.'); return false; } if ($this->_validateTimeAccess && $access->isAllowTimeToSendMessage() == false) { $this->addError('message', App::$config['messages']['allow_time_to_posting']); return false; } if ($access->isUserForumBanned($this->_userId, 3)) { $this->addError('message', 'Вам запрещено оставлять комментарии.'); return false; } // проверяем, есть ли форум и есть ли к нему доступ if ($this->_forumId == null || Forum::isForumExist($this->_forumId) == false) { $this->addError('message', 'Раздел форума не существует. Писать комментарий запрещено'); return false; } if (Forum::isClosed($this->_forumId) == true) { $this->addError('message', 'Раздел форума закрыт. Писать комментарии запрещено'); return false; } $censure = new Censure(); $this->id = (int)$this->id; $this->message = htmlspecialchars($this->message); $this->message = $this->prepareText($this->message); $this->message = $censure->go($this->message); $comment = new Comments($this->entity); $forumThemeHelper = new ForumThemeHelper($this->entity, $this->id); $theme = $forumThemeHelper->getTheme(); if ($theme == null) { $this->addError('message', 'Невозможно оставить комментарий к этой записи.'); return false; } if ($comment->isDiscussById($this->id) == false) { $discussId = $comment->startDiscuss($this->id, $this->_userId, $this->_forumId, $theme, $this->message, $this->_date); if ($discussId) { Forum::articleHot(); $this->_afterSaveArticleId = $discussId; } else { $this->addError("message", "Во время сохранения комментария произошла ошибка. Попробуйте позже"); return false; } } else { $messageId = $comment->addMessage($comment->getDiscussId($this->id), $this->_userId, $this->_forumId, $this->parentId, $this->message, $this->_date); if ($messageId == false) { $this->addError("message", "Во время добавления комментария произошла ошибка. Попробуйте позже"); return false; } $this->_afterSaveArticleId = $messageId; Forum::articleHot(); } $this->saveImagesService->save($this->getArticleId(), $this->images); return true; } public function getArticleId() { return $this->_afterSaveArticleId; } }
/app/comments/forms/
Имя
Дата
Размер
..
2021-09-02
AddCommentForm.php
2021-09-02
6 кб.
AddCommentForm.php~
2020-11-05
6 кб.
DeleteCommentForm.php
2017-07-11
1 кб.
EditCommendForm.php
2021-09-02
2 кб.
EditCommendForm.php~
2017-07-11
1 кб.
/app/comments/forms
Загрузить файлы
Файл 1
Файл 2
Файл 3