Назначение прав доступа и сохранение ноды

Главные вкладки

Аватар пользователя talgar@drupal.org talgar@drupal.org 8 мая 2009 в 10:48

Задача: оповестить пользователей через jabber о создании новой ноды.
Написал модуль, который позволяет отправлять xmpp сообщения пользователям. Поставил модуль Rules (http://drupal.org/project/rules) и на событие "After saving new content" добавил выполнение собственного php кода, откуда и отправляю сообщения.
Для управления доступом к нодам использую модуль http://drupal.org/project/taxonomy_access

Столкнулся с такой проблемой:
При выполнении php кода для события (Rules) можно работать с созданной нодой, но права на нее еще не расставлены. Т.е. примерный ход событий такой:
1. Создание ноды
2. Отлавливается событие (Rules) -> обработка события (php)
3. Выставление прав на ноду

Как сделать так, чтобы уже в обработке события расставить права на ноду? Это надо чтобы отправлять оповещение только имеющим доступ к ноде пользователям.

Комментарии

Аватар пользователя talgar@drupal.org talgar@drupal.org 14 мая 2009 в 6:25

Решил проблему следующим образом.
На событие "after saving new content" делаю "redirect to page" на собственную страницу, в которой вызываю необходимый мне скрипт. При этом в урле передаю nid созданного нода. После того как скрипт отрабатывается я через него делаю обратный переход на страницу созданного объекта.

<?php
  
global $base_url;
  
$nid $_GET['nid'];
  
$node node_load($nid);
  if (
$node) {
    
$result db_query_range('SELECT DISTINCT u.* FROM {users} u ORDER BY u.access DESC'0100);
    while (
$data db_fetch_object($result)) {
      
$account user_load(array('uid' => $data->uid));
      if (
node_access('view'$node$account) && ($data->uid != $node->uid) && ($data->name != 'root')){
        
$message t('author создал type <titleurl', array('author=> $node->name'type=> t($node->type),'owner=> $owner->name'title=> $node->title'url=> $base_url '/node/' $node->nid));
        
xmpp_sendmessage($data->name$message);
      }
    }
    
drupal_goto('node/' $nid);
  }
?>
Аватар пользователя LadyLana LadyLana 6 мая 2010 в 11:06

Подскажите, пож-та!)
Не могу найти, как правильно задать путь при action "redirect page". Мне после создания ноды надо перенаправить на страницу редактирования ноды, т.е необходимо передать nid