function pmproject_build_node_index in Drupal PM (Project Management) 8
Same name and namespace in other branches
- 7.3 pmproject/pmproject.module \pmproject_build_node_index()
Builds and inserts pmproject index entries for a given node.
The index lists all terms that are related to a given node entity, and is therefore maintained at the entity level.
Parameters
object $node: The node object.
Related topics
3 calls to pmproject_build_node_index()
- pmproject_node_insert in pmproject/pmproject.module 
- Implements hook_node_insert().
- pmproject_node_update in pmproject/pmproject.module 
- Implements hook_node_update().
- pmproject_update_7301 in pmproject/pmproject.install 
- Build pmproject_index for all nodes.
File
- pmproject/pmproject.module, line 241 
- Main module file for the PM Project module.
Code
function pmproject_build_node_index($node) {
  // We maintain a denormalized table of term/node relationships, containing
  // only data for current, published nodes.
  $status = NULL;
  if (variable_get('pmproject_maintain_index_table', TRUE)) {
    // If a node property is not set in the node object when node_save() is
    // called, the old value from $node->original is used.
    if (!empty($node->original)) {
      $status = (int) (!empty($node->status) || !isset($node->status) && !empty($node->original->status));
    }
    else {
      $status = (int) (!empty($node->status));
    }
  }
  // We only maintain the pmproject index for published nodes.
  if ($status) {
    // Hunt for PM Organization.
    $pmproject_nid = pm_permission_get_parent_nid_of_node($node, 'pmproject');
    // Insert index entries for all the node's terms.
    if (!empty($pmproject_nid)) {
      $query = db_insert('pmproject_index')
        ->fields(array(
        'nid',
        'pmproject_nid',
        'created',
      ));
      $query
        ->values(array(
        'nid' => $node->nid,
        'pmproject_nid' => $pmproject_nid,
        'created' => $node->created,
      ));
      $query
        ->execute();
    }
  }
}