Таблица trigger_assignments
Таблица trigger_assignments является ключевым компонентом системы триггеров в Drupal. Она связывает конкретные события (такие как сохранение узла, комментария, пользователя) с определенными действиями, которые должны быть выполнены при наступлении этих событий.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
hid |
int |
Уникальный идентификатор назначения действия. Первичный ключ с автоинкрементом. |
aid |
varchar(255) |
Идентификатор действия (action), которое должно быть выполнено. Ссылается на таблицу actions.
|
hook |
varchar(32) |
Имя хука (события), для которого назначено действие. Например: node_insert, user_update, comment_delete.
|
op |
varchar(32) |
Операция, связанная с хуком. Часто соответствует последней части имени хука (например, insert, update, delete).
|
type |
varchar(32) |
Тип объекта, к которому применяется действие. Например: node, user, comment.
|
weight |
int |
Вес назначения, определяющий порядок выполнения действий для одного и того же события. Действия с меньшим весом выполняются раньше. |
Как это работает
Модуль Trigger в Drupal предоставляет интерфейс для назначения действий на различные системные события. Когда администратор назначает действие через пользовательский интерфейс (Администрирование > Структура > Триггеры), в таблицу trigger_assignments добавляется новая запись.
При возникновении события в системе (например, создание нового материала) Drupal ищет в этой таблице все записи, где поле hook соответствует имени произошедшего события (например, node_insert). Для каждой найденной записи загружается и выполняется соответствующее действие из таблицы actions.
Порядок выполнения действий определяется полем weight. Действия выполняются последовательно, от меньшего веса к большему. Это позволяет контролировать очередность выполнения, когда на одно событие назначено несколько действий.
Система триггеров особенно полезна для автоматизации рутинных задач, таких как отправка уведомлений при публикации нового контента, изменение ролей пользователей при определенных условиях или публикация материалов по расписанию.
Пример SQL-запроса
Получить все действия, назначенные на события, связанные с узлами:
SELECT ta.hook, ta.op, a.type, a.label, ta.weight
FROM trigger_assignments ta
JOIN actions a ON ta.aid = a.aid
WHERE ta.type = 'node'
ORDER BY ta.hook, ta.weight;
Смотрите также
-
таблицу
actions,
которая хранит доступные действия в системе -
таблицу
trigger_assignments,
которая содержит назначения триггеров -
таблицу
trigger_assignments,
которая содержит назначения триггеров -
таблицу
trigger_assignments,
которая содержит назначения триггеров