====== 💻 Разработчикам ====== ===== 🏗️ Архитектура ===== ==== Принцип работы ==== ┌─────────────────────────────────────────────────────────────┐ │ Пользовательский интерфейс │ │ (Компоненты: 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