我在模块中实现了hook_node_update
。我可以通过定义全局用户对象global $user;
来访问登录的用户数据。我需要知道 loggedin 用户和内容创建者,以便我处理一些说明。
问题是,如果一个节点被安排到未发布,并且当drupal运行cron时,我会在global $user;
中获得什么?在节点或其他地方进行更改的同一用户?有没有办法访问上次更新此节点的用户的数据?
更新
我想我无法解释我需要什么。考虑这种情况。
有两个用户,A和B.创建的内容(节点)说Example
。当B更改Example
中的某些内容时,我需要向A发送电子邮件通知。因此,当此Example
内容计划由用户B归档时,此cron任务将被保存并由cron执行。当cron运行时,那时我怎么知道这是由B安排的?
答案 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