====== 💻 Разработчикам ======
===== 🏗️ Архитектура =====
==== Принцип работы ====
┌─────────────────────────────────────────────────────────────┐
│ Пользовательский интерфейс │
│ (Компоненты: form, list для отзывов, комментариев, рейтинг)│
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Контроллеры (AJAX) │
│ (Action-контроллеры для save, get, delete) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Бизнес-логика (Models) │
│ (Comment, Review, Rating, Channels, MailEvents) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ ORM Таблицы │
│ (CommentsTable, ReviewsTable, RatingsTable, ChannelsTable) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ База данных │
│ (chililab_comments_* таблицы) │
└─────────────────────────────────────────────────────────────┘
==== Компоненты ====
^ Компонент ^ Описание ^ Параметры |
| chililab:page.reviews.form | Форма добавления отзыва | IBLOCK_ID, ELEMENT_ID, CACHE_TIME |
| chililab:page.reviews.list | Список отзывов | IBLOCK_ID, ELEMENT_ID, CACHE_TIME |
| chililab:page.comments.form | Форма добавления комментария | IBLOCK_ID, ELEMENT_ID, CACHE_TIME |
| chililab:page.comments.list | Список комментариев | IBLOCK_ID, ELEMENT_ID, CACHE_TIME |
| chililab:page.ratings | Рейтинг страницы | IBLOCK_ID, ELEMENT_ID, CACHE_TIME |
==== Основные классы ====
^ Компонент ^ Файл ^ Описание |
| Comment | lib/classes/Comment.php | Управление комментариями |
| Review | lib/classes/Review.php | Управление отзывами |
| Rating | lib/classes/Rating.php | Управление рейтингами |
| Channels | lib/classes/Channels.php | Управление Telegram каналами |
| MailEvents | lib/classes/MailEvents.php | Отправка почтовых событий |
| TelegramChannel | lib/classes/TelegramChannel.php | Взаимодействие с Telegram API |
| User | lib/classes/User.php | Работа с пользователями |
| Page | lib/classes/Page.php | Управление страницами и кэшированием |
| Site | lib/classes/Site.php | Работа с сайтами (мультисайтовость) |
| Tools | lib/classes/Tools.php | Утилиты (plural, mb_str_pad) |
| CsvHelper | lib/classes/CsvHelper.php | Экспорт/импорт CSV |
==== Таблицы БД ====
^ Таблица ^ Описание ^ Основные поля |
| chililab_comments_comments | Комментарии | ID, NAME, TEXT, USER_ID, PARENT_ID, DEPTH_LEVEL |
| chililab_comments_reviews | Отзывы | ID, NAME, TEXT, RATING, LIKES, DISLIKES, ANSWER |
| chililab_comments_ratings | Рейтинги | ID, USER_ID, RATING, ELEMENT_ID, IBLOCK_ID |
| chililab_comments_channels | Telegram каналы | ID, CHANNEL_CODE, SECURE_CODE, STATUS |
| chililab_comments_channel_events | События каналов | ID, CODE, EVENT_TYPE |
Не у всех сущности можно редактировать привязку к URL и к элементам. Например, у комментария это сделать нельзя, так как правка одного комментария должна приводить к каскадной правки других комментариев в цепочке (на комментарии же можно отвечать). Подробнее про это в задаче:
https://desk.chilihelp.ru/tasks/view/29553#comment-244187