我将在全球$ user中获得哪些数据;当drupal 7 cron执行时,在hook_node_update中使用

时间:2014-03-06 11:00:07

标签: drupal drupal-7

我在模块中实现了hook_node_update。我可以通过定义全局用户对象global $user;来访问登录的用户数据。我需要知道 loggedin 用户和内容创建者,以便我处理一些说明。

问题是,如果一个节点被安排到未发布,并且当drupal运行cron时,我会在global $user;中获得什么?在节点或其他地方进行更改的同一用户?有没有办法访问上次更新此节点的用户的数据?

更新

我想我无法解释我需要什么。考虑这种情况。

有两个用户,A和B.创建的内容(节点)说Example。当B更改Example中的某些内容时,我需要向A发送电子邮件通知。因此,当此Example内容计划由用户B归档时,此cron任务将被保存并由cron执行。当cron运行时,那时我怎么知道这是由B安排的?

2 个答案:

答案 0 :(得分:1)

全局$user对象始终是:

  

表示当前访问该网站的用户的对象。

可以是经过身份验证的用户,也可以是匿名用户(uid = 0)(如果适用)。

因此,如果用户通过UI创建/编辑节点,并且您实现了hook_node_update(),则$user对象将是负责创建内容的用户的对象,如您所料。

Drupal以匿名用户身份运行cron,它不会根据不相关的上下文数据创建会话,例如附加到任意节点的用户ID - 这样的工作流程没有意义。

要从节点对象获取用户对象,只需使用user_load()

即可
$account = user_load($node->uid);

答案 1 :(得分:0)

$node对象中有一个属性,它具有上次更新节点的用户ID。

$node->revision_uid