不能使用drupal_execute作为另一个用户创建新的drupal 6节点

时间:2013-10-03 09:10:58

标签: php drupal drupal-6

我正在尝试使用drupal_execute创建Drupal节点,它工作正常。 唯一的问题是我无法将新节点添加为除登录用户之外的其他用户。

好像$ form_state ['values'] ['name']无效!

这甚至可能吗?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

参见https://drupal.org/node/178506#comment-726479 - 虽然它最初提到了Drupal 5.7,但它也适用于Drupal 6。它的要点是,你必须(safely) impersonate another user。通过这样做,您可以访问用户可以访问的任何功能。

冒充用户就像

一样简单
global $user;
$original_user = $user;
$old_state = session_save_session();
session_save_session(FALSE);
$user = user_load(array('uid' => 1));

// Take your action here where you pretend to be the user with UID = 1 (typically the admin user on a site)
// If your code fails, it's not a problem because the session will not be saved
$user = $original_user;
session_save_session($old_state);

// From here on the $user is back to normal so it's OK for the session to be saved

然后您必须采取的操作是使用您拥有的表单数组运行drupal_execute()