Таблица content_moderation_state
Таблица content_moderation_state является центральным хранилищем данных о состоянии модерации для контентных сущностей Drupal (нод, блоков, пользовательских сущностей и т.д.), которые используют систему workflow. Каждая запись в таблице соответствует определенному состоянию модерации конкретной сущности в определенной ревизии.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
id |
serial |
Уникальный идентификатор записи о состоянии модерации. Первичный ключ таблицы. |
content_entity_type_id |
varchar(32) |
Тип сущности, для которой хранится состояние модерации (например, node, block_content, custom_entity).
|
content_entity_id |
int |
Идентификатор сущности, для которой хранится состояние модерации. Вместе с content_entity_revision_id и content_entity_type_id образует уникальную связку.
|
content_entity_revision_id |
int |
Идентификатор ревизии сущности, для которой хранится состояние модерации. |
moderation_state |
varchar(255) |
Текущее состояние модерации (например, draft, published, archived). Соответствует машинному имени состояния, определенному в workflow.
|
uid |
int |
Идентификатор пользователя, который установил текущее состояние модерации. Внешний ключ к таблице users.
|
created |
int |
UNIX timestamp времени создания записи о состоянии модерации. |
Как это работает
Когда контентная сущность сохраняется с включенным moderation, система создает или обновляет запись в таблице content_moderation_state. Эта запись связывает конкретную ревизию сущности с определенным состоянием workflow.
При загрузке сущности система проверяет таблицу content_moderation_state, чтобы определить текущее состояние модерации и применить соответствующие права доступа. Например, контент в состоянии draft может быть виден только автору и редакторам, а контент в состоянии published доступен всем пользователям.
Каждое изменение состояния модерации создает новую запись в таблице, что позволяет отслеживать историю изменений состояний для каждой ревизии контента.
Таблица связана с другими таблицами Drupal через внешние ключи: uid ссылается на users.uid, а комбинация content_entity_type_id, content_entity_id и content_entity_revision_id ссылается на соответствующие таблицы сущностей (например, node, node_revision).
Пример SQL-запроса
Получить информацию о состояниях модерации для конкретной ноды:
SELECT cms.*, u.name as username, n.title
FROM content_moderation_state cms
JOIN users u ON cms.uid = u.uid
JOIN node n ON cms.content_entity_id = n.nid
WHERE cms.content_entity_type_id = 'node'
AND cms.content_entity_id = 123
ORDER BY cms.created DESC;
Смотрите также
-
таблицу
node,
которая хранит основную информацию о материалах сайта -
таблицу
node_revision,
которая хранит ревизии материалов -
таблицу
users,
которая содержит данные пользователей -
таблицу
workflows,
которая хранит определения workflow