Таблица actions
Таблица actions является системной таблицей Drupal, которая хранит определения всех доступных действий. Действия - это произвольные задачи, которые могут быть настроены администратором и выполняться автоматически при наступлении определенных событий (через триггеры) или вручную (например, пакетное выполнение над несколькими объектами).
Поля
| Поле | Тип данных | Описание |
|---|---|---|
aid |
varchar(255) |
Машинное имя действия. Должно быть уникальным. Обычно формируется по шаблону module_action_name.
|
type |
varchar(32) |
Тип объекта, к которому применяется действие. Например: node, user, comment, system.
|
callback |
varchar(255) |
PHP-функция обратного вызова, которая выполняется при запуске действия. Может быть статическим методом класса или функцией. |
parameters |
blob |
Сериализованный массив параметров, которые передаются функции обратного вызова. Параметры могут быть настроены администратором при создании продвинутого действия. |
label |
varchar(255) |
Человекочитаемое название действия, которое отображается в интерфейсе администратора. |
Как это работает
Модули Drupal могут объявлять действия, реализуя hook_action_info(). При очистке кеша или установке модуля эти определения регистрируются в таблице actions. Существует два типа действий: базовые (без настраиваемых параметров) и продвинутые (с параметрами, которые настраивает администратор).
Когда происходит событие, на которое настроен триггер (например, публикация материала), система проверяет, какое действие связано с этим событием, находит соответствующую запись в таблице actions и выполняет указанную callback-функцию, передавая ей контекст объекта и параметры из поля parameters.
Действия также широко используются в Views для пакетных операций и в системах правил (Rules) и рабочих процессах (Workflow). Данные в таблице в основном статичны и изменяются только при обновлении информации о действиях из кода модулей.
Пример SQL-запроса
Получить список всех действий для типа объекта node:
SELECT aid, label, callback
FROM actions
WHERE type = 'node'
ORDER BY label;
Смотрите также
-
таблицу
trigger_assignments,
которая связывает действия с событиями -
таблицу
batch,
которая управляет фоновыми пакетными операциями -
таблицу
queue,
которая хранит задачи в очереди -
таблицу
system,
которая хранит информацию о модулях и темах