# =========================================================================== #
# NG CMS // Плагины // Информирование о проблемах                             #
# =========================================================================== #
# Версия: 0.08 (30.01.2026)
# Требования: NGCMS 0.9.2+, PHP 7.0+, ng-helpers v0.2.2+
# =========================================================================== #
 Плагин complain добавляет новый вид обратной связи с посетителями:
посетитель может оставить отчёт о проблеме, обнаруженной в новости.
Основное применение плагина: на сайтах, содержащих ссылки на внешние ресурсы.
Технические улучшения v0.08
---------------------------
✓ Модернизирован с использованием ng-helpers v0.2.2
✓ Безопасный доступ к данным через array_get() (17 замен $_REQUEST)
✓ Расширенное логирование всех операций в complain.log
✓ Полный аудит действий с IP-адресами (logger + get_ip)
✓ Улучшенная валидация и очистка входных данных (sanitize, validate_email)
✓ Устранены все PHP Notice: Undefined index
Логируются события:
  • Создание жалоб (пользователь, тип ошибки, IP)
  • Изменение статуса и владельца жалоб
  • Отправка email уведомлений
  • Сохранение конфигурации плагина
  • Попытки с невалидными данными
Настройка плагина
-----------------
Для начала Вам необходимо определиться со "списком ошибок", о которых может
сообщить пользователь.
Пример заполнения:
==cut==
1|Неверная ссылка
2|Ссылка удалена
3|Другая ошибка
==cut==
Далее - выберите кто и как будет информироваться об ошибках и укажите смогут
ли незарегистрированные пользователи оставлять отчёты об ошибках.
Подключение шаблонов
--------------------
Плагин теперь доступен на всех страницах: кнопка или ссылка с классом `complain-open`
открывает модальное окно через AJAX. В полном шаблоне новости вы по-прежнему
можете вывести блок с ссылкой, вставив переменную {% if pluginIsActive('complain') %}{{ plugin_complain }} {% endif %}.
Ссылка на админский список жалоб доступна из пользовательского меню (см. `templates/*/usermenu.tpl`).
<a href="{{ p.complain.link|default(home ~ '/plugin/complain/?ajax=1') }}" class="complain-open" data-modal="true">
   Жалобы ({{ p.complain.new_count|default(0) }})
</a>
 Счётчик «Жалобы (N)» обновляется автоматически и сразу после действий в модалке.
Управление отчётами пользователей
---------------------------------
