如何更改节点保存的修订版UID -- entities 领域 和 hooks 领域 和 nodes 领域 drupal 相关 的问题

How to change the revision uid on node save


5
vote

问题

中文

我需要在网站上更改7000个节点的Revison UID。所以我正在使用视图批量操作来执行此操作,通过发布或保存有关7000个节点来执行此操作。然后我使用 hook_node_preesave 更新所有内容。但遗憾的是,Field Revionion_UID未正确更新。缺点,字段日志已正确更新..

  $field_uid = field_get_items('node', $node, 'uid');     if($field_uid){          $node->log = $node->uid;                  $node->revision_uid = $node->uid;     }   

修订ID仍然是我正在使用的那个操作(1到admin ..)。如何解决这个问题?

英文原文

I need to change the revison uid of 7000 nodes on a site. So I am using Views Bulk Operations to perform this action, by publishing or saving the the 7000 nodes concerned. Then I use the hook_node_presave to update all contents. But unfortunately, the field revision_uid isn't properly updated. By cons the field log is properly updated..

$field_uid = field_get_items('node', $node, 'uid');     if($field_uid){          $node->log = $node->uid;                  $node->revision_uid = $node->uid;     } 

The revision id is still the one I'm using to make this operation (1 to admin..). How can get around this problem??

        

回答列表

5
 
vote

在执行操作时,您必须模拟用户:

  <?php //Save current user data/session global $user; $original_user = $user; $old_state = drupal_save_session(FALSE);  $field_uid = field_get_items('node', $node, 'uid');     if($field_uid){          // Load new $user data          $user = user_load($node->uid);           $node->log = $node->uid;                  $node->revision_uid = $user->uid;     }  // Fail safe - if your code fails session won't be saved $user = $original_user; //Rever to old user and save session drupal_save_session($old_state); ?>   

参考:

  • http://drupal.org/node/1082292
  • http:// firedev。 RO /博客/ node-redion-whine-dode-nodesave-get-cnet-logged-users-uid
 

You'll have to impersonate a user while performing your operation:

<?php //Save current user data/session global $user; $original_user = $user; $old_state = drupal_save_session(FALSE);  $field_uid = field_get_items('node', $node, 'uid');     if($field_uid){          // Load new $user data          $user = user_load($node->uid);           $node->log = $node->uid;                  $node->revision_uid = $user->uid;     }  // Fail safe - if your code fails session won't be saved $user = $original_user; //Rever to old user and save session drupal_save_session($old_state); ?> 

References:

  • http://drupal.org/node/1082292
  • http://firedev.ro/blog/node-revision-when-doing-nodesave-gets-currently-logged-users-uid
 
 
 
 
3
 
vote

我能够通过使用直接的db_update来解决我的问题,这是我的简单代码:

  function hook_node_update($node) {    $node->log = $node->uid;   $node->revision_uid = $node->uid;    $revision_uid_updated = db_update('node_revision')   ->fields(array(     'uid' => $node->uid,   ))   ->condition('nid', $node->nid, '=')   ->execute();  }   
有了这个,我能够将修订版权重新分配给每个内容的作者
 

I was able to solve my problem by using a direct db_update, here is my simple code:

function hook_node_update($node) {    $node->log = $node->uid;   $node->revision_uid = $node->uid;    $revision_uid_updated = db_update('node_revision')   ->fields(array(     'uid' => $node->uid,   ))   ->condition('nid', $node->nid, '=')   ->execute();  } 

With this, I was able to reassign the revision ownership to the author of each content

 
 

相关问题

1  在视图中获取来自实体参考关系的多个结果  ( Get multiple results from entity reference relationship in views ) 
在显示使用实体参考的类型的内容的视图中,我添加了该关系,但即使多个用户可以由内容引用我只获得其中一个。我缺少某种配置吗? 在关系描述中:"通过Field_Users引用的用户实体的桥梁" 编辑:所以在与@anil sagar进行私人讨论后,您似乎不能单独使用实体 - 在视图显示的实体一行中显示引用实体的多个结果。 ...

1  仅访问特定用户的内容类型的几个字段  ( Access to only few fields of a content type for specific user ) 
我正在使用drupal 6.我创建了一个内容类型'视频',其中我有许多字段,如URL,语言,位置等。我已经创建了1个角色,现在我只是想为该特定角色提供权限他只能添加URL,位置等字段。他不应该能够使用其他领域。 任何建议, ...

0  自定义节点类型模板问题  ( Custom node type template issue ) 
我有一个创建的内容类型,其中一些字段,如标题,日期,描述等。我的问题是节点块模板文件正在工作。 内容类型(机器名称)是 - 事件 我还为此页面创建了一个特殊的模板文件 - event.tpl.php <div id="container"> <div id="leftright_left"><?...

0  从日期行逐年无法进行组  ( Cant group by year from a date row ) 
我有一个日期时间类型的字段。我将此字段添加到视图中,并格式化日期时间字段以仅显示年份。当我在视图上切换"聚合" 并尝试将此字段组分组时,它不起作用,因为我期望并再次显示所有日期。我看到了vies查询,没有任何预制性。它仅通过DIS领域进行分组。我希望修改查询以获取此字段格式化,因为我需要(仅限年)。任何建议都将受到赞...

2  在所有字段类型上更改标签最大长度  ( Change label max length on all field types ) 
所有字段类型的所有标签的默认最大长度为128. DB可以处理255.因此没有模式更改。如何将默认最大长度更改为250? ...

2  在自定义字段中填充nid  ( Populating nid in a custom field ) 
创建新节点时,我需要使用当前节点ID的值填充/填充自定义字段。我应该用什么钩子用新创建的nid($ node-&gt; nid)填充我的自定义字段? 我试图使用 hook_node_presave ,但它是null,目前我正在考虑使用 hook_node_insert ,但由于文档说: 节点在数据库中的节点表中插入...

2  任何批量翻译节点的方式?  ( Any way to mass translate nodes ) 
我尝试使用entity_metadata_wrapper,但大多数字段都无法导入。大多数时间仅导入标题。 if (isset($result['node'])) { $exclude_fields = array...

0  自定义字段“节点引用+文本”  ( Custom field node reference text ) 
我有一个名为"nbt_text" 的捆绑包(内容类型)和捆绑"NBT_Book" 。 nbt_books 代表书籍节点类型, nbt_text - 用于文本node_type。 在 nbt_text 中有一个"实体引用" 类型的字段,它可以保留有关当前 nbt_text 节点相关的书籍的信息。 一切都很好,但现...

3  现实的实体问题  ( Fieldable entity issue ) 
我目前有一个事实实体,它是现场的。我的问题是,如何使它出现在admin /结构下,以及如何从管理员菜单访问管理字段页面?这是一个教程吗?由于我找不到任何相关的任何相关的任何帮助。 ...

3  实体参考使用服务的REST服务器创建问题  ( Entity reference create problem with rest server using services ) 
我正在构建一个Web服务,现在我正在编写移动开发人员的文档。 当我想创建/修改实体参考服务3时,请询问这样的结构 "field_organization": { "und":[{ "target_id":"Organization name (69)" }] } 是这样的...

11  alter hook_field_formatter_view?  ( Alter hook field formatter view ) 
更改字段输出的最佳方法是什么?我找到了" hook_field_formatter_view " 但似乎没有像" hook_field_formatter_view_alter"存在。在我的情况下,我有一个地址字段(地址菲尔德模块),它在 drupalcommerce 的结帐页面上。我想向这些字段添加一些js,优选使...

1  如何仅显示块中的内容类型字段,或者如何在块中调用添加内容类型页面  ( How can i show only content type fields in block or how can i call a add content ) 
如何在块中调用添加节点"内容类型" 。 我在图1中上传了图像1。 我有一个内容类型: Upload Resume IE upload_resume 异常用户也可以仅 create 这个内容类型。 我希望在一个块中的这个字段,其中用户可以上载恢复,而不是在页面样式中,下面的图像的BCO显示其他因素,即im...

1  以编程方式操作内容类型选择列表  ( Programmatically manipulate content type select list ) 
我有一个名为CAR的内容类型,其中有几个字段中的两个是选择列表,我想要对它们进行一些操作。当用户选择一个值表格的第一个选择列表时,应该在另一个选择列表中填充大部分值,我的问题是在以编程方式执行此操作以及如何执行此操作的提示?我希望我的问题清楚地清楚 最好 ...

0  将字段的传递值传递到Drupal 7中的其他内容类型  ( Pass value of a field to another content type in drupal 7 ) 
我有一个内容类型'展品,具有字段'uuid'(文本,单值),'name'(带单个值的文本),'description'(long text和summary),'部分'(文本'(无限制)价值观)。我使用了视图以表格格式显示"展览" 。 现在,当我单击"添加" 部分时。我希望展览视图中的字段部分是Content类型中...

7  如果文件是图像,则将文件字段显示为缩略图?  ( Show file field as thumbnail if file is an image ) 
我已添加一个字段来评论,以允许用户上传文件。我希望用户能够上传不同类型的文件,但如果它是一个图像,则显示缩略图。可以在使用1个字段时完成吗? ...

0  为没有带有节点引用的用户隐藏CCK字段  ( Hide cck fields for users without references with node ) 
我有一个角色"工人" 。 我有一个内容类型"任务" ,可以仅由"工人" 查看。 "任务" 有3个字段: 字段-A:用户参考字段选择"工作者" 用户; 字段-b:一个可以从任何"工人" 视图的一个文本字段; 字段-c:一个文本字段,可以从使用字段-a与节点相关的"工人" 查看。 如何设置权限以让用户查看它们被...

0  节点引用仅显示节点的作者  ( Node reference to show only author of node ) 
我创建了两个内容类型作为游戏和视频。对于视频内容类型,我创建了一个节点参考字段,它将指的是游戏类型。 假设我网站上有2个用户(例如User1和User2)。 User1创建了以下节点: Game1(内容类型:游戏) game2 game3 用户2创建了以下节点: game4 game5 假设...

0  计算的字段模块:创建新内容时的字段值  ( Computed field module value of field when creating new content ) 
对于我的内容类型我有这个计算的字段代码,当我更新现有节点时,所有内容都可以确定,但是当我创建新节点时,menu_get_object返回空值和drupal显示此错误消息"EntityMalomformedException:缺少类型的姓名捆绑包节点。在entity_extract_ids()(/var/www/dev...

1  如何将实体引用添加到具有规则的节点的列表实体文档?  ( How can i add an entity reference to a list entity refences of a node with rules ) 
我有一个带有多个值的实体参考字段的节点。 如何使用规则添加实体引用此列表? ...

3  仅选中一个术语时,只显示编辑页面上的特定字段  ( Show only specific fields on edit page when a term is selected ) 
如何显示(内容类型)编辑页面特定字段? 例如,如果我选择了笔记本电脑术语,那么我应该看到procesor,RAM和HDD字段,如果我选择电视术语,那么我应该看到屏幕尺寸,品牌,屏幕类型字段。 ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.