forum_field_storage_pre_update
function forum_field_storage_pre_update
forum_field_storage_pre_update($entity_type, $entity, &$skip_fields)
Implements hook_field_storage_pre_update().
File
- modules/forum/forum.module, line 550
- Provides discussion forums.
Code
function forum_field_storage_pre_update($entity_type, $entity, &$skip_fields) { $first_call = &drupal_static(__FUNCTION__, array()); if ($entity_type == 'node' && _forum_node_check_node_type($entity)) { // If the node is published, update the forum index. if ($entity->status) { // We don't maintain data for old revisions, so clear all previous values // from the table. Since this hook runs once per field, per object, make // sure we only wipe values once. if (!isset($first_call[$entity->nid])) { $first_call[$entity->nid] = FALSE; db_delete('forum_index')->condition('nid', $entity->nid)->execute(); } $query = db_insert('forum_index')->fields(array('nid', 'title', 'tid', 'sticky', 'created', 'comment_count', 'last_comment_timestamp')); foreach ($entity->taxonomy_forums as $language) { foreach ($language as $item) { $query->values(array( 'nid' => $entity->nid, 'title' => $entity->title, 'tid' => $item['tid'], 'sticky' => $entity->sticky, 'created' => $entity->created, 'comment_count' => 0, 'last_comment_timestamp' => $entity->created, )); } } $query->execute(); // The logic for determining last_comment_count is fairly complex, so // call _forum_update_forum_index() too. _forum_update_forum_index($entity->nid); } // When a forum node is unpublished, remove it from the forum_index table. else { db_delete('forum_index')->condition('nid', $entity->nid)->execute(); } } }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/modules!forum!forum.module/function/forum_field_storage_pre_update/7.x