Drupal 6. Если для ограничения доступа используется модуль User Relationship Node Access, то функция node_save() неожиданным образом эти ограничения снимает. Это связано с тем что модуль UR Node Access сам снимает эти права во время обработки операции update в своем hook_nodeapi(). Чтобы эти права восстанавливались во время обработки других операций пришлось перед каждым использованием node_save() добавлять несколько строк дополнительного кода:
$array_keys = array_keys($node->user_relationship_node_access);
foreach ($array_keys as $key => $value) {
$node->user_relationship_node_access['view'][$value] = TRUE;
}node_save($node);
Ничего не поделаешь, так уж устроен на сегодня User Relationship Node Access.
P.S. Использовать drupal_execute() вместо node_save(), как предлагалось в одном из комментариев к публикации с вышеприведенным англоязычным заголовком, не удалось. Похоже, функция drupal_execute() в новой версии Drupal была изменена. И находится не там, и аргументы другие, и работать отказывается.
- Войдите или зарегистрируйтесь, чтобы оставлять комментарии
Online Status