Изменить автора узла автоматически

Анонимный пользователь может размещать узлы. После публикации узла пользователь перенаправляется на регистрацию. После регистрации ранее представленный узел должен быть связан с вновь зарегистрированным пользователем. Я играл с правилами и сущностями, но не смог заставить их работать должным образом. Есть идеи?


person user506259    schedule 08.02.2011    source источник


Ответы (3)


Я бы написал собственный модуль (но это я). Модуль должен реализовать hook_node_insert и сохранить nid в SESSION. Затем на hook_user_insert он может внести изменения. Непроверенный код:

function foo_node_insert($node) {
  $_SESSION['mynodes'][] = $node->nid;
}

function foo_user_insert($edit, $account) {
  if (!empty($_SESSION['mynodes'])) {
    foreach ($_SESSION['mynodes'] as $nid) {
      $node = node_load($nid);
      $node->uid = $account->uid;
      // This saves the revision as the current user uid but that's just what we wanted.
      node_save($node);
    }
  }
}

Изменить: не забудьте unset($_SESSION['mynodes']);

person chx    schedule 08.02.2011

Сохраните данные узла до момента регистрации и затем опубликуйте их.

person Chad    schedule 08.02.2011

Существует модуль Создание анонимных узлов.

Модуль позволяет анонимным пользователям создавать узлы. Но «анонимность» в этом модуле сомнительна. Этот модуль изменяет форму узла для анонимных пользователей, добавляя две группы полей в конце перед кнопкой сохранения.

Первая группа полей содержит поля, которые позволяют пользователям создавать новую учетную запись. Эта новая учетная запись является автором созданного нового узла.

person keva    schedule 09.02.2011