You are here

function simple_access_node_load in Simple Access 7.2

Same name and namespace in other branches
  1. 8.3 simple_access.module \simple_access_node_load()

Implements hook_node_load().

File

./simple_access.module, line 162
This module allows administrators to make nodes viewable by specific 'access groups'. Each access group can contain any number of roles. If a node is not assigned to any access groups, it will remain viewable by all users.

Code

function simple_access_node_load($nodes, $types) {
  $nids = array();
  foreach ($nodes as $nid => $node) {
    $nids[] = $nid;
    $node->simple_access = array();
    $node->simple_access_profiles = array();
  }
  $owners = db_select('simple_access_owner', 'o')
    ->fields('o', array(
    'nid',
    'sa_view',
    'sa_update',
    'sa_delete',
  ))
    ->condition('nid', $nids)
    ->execute()
    ->fetchAllAssoc('nid', PDO::FETCH_ASSOC);
  $access = db_select('simple_access_node', 'na')
    ->fields('na', array(
    'nid',
    'gid',
    'sa_view',
    'sa_update',
    'sa_delete',
  ))
    ->condition('nid', $nids)
    ->execute()
    ->fetchAll(PDO::FETCH_ASSOC);
  $profiles = db_select('simple_access_profiles_node', 'pn')
    ->fields('pn', array(
    'nid',
    'pid',
  ))
    ->condition('nid', $nids)
    ->execute()
    ->fetchAll(PDO::FETCH_ASSOC);
  foreach ($nodes as $nid => $node) {
    if (isset($owners[$nid])) {
      $node->simple_access_owner = $owners[$nid];
    }
    else {
      $node->simple_access_owner = array(
        'sa_view' => 0,
        'sa_update' => 0,
        'sa_delete' => 0,
      );
    }
  }
  foreach ($access as $row) {
    $nodes[$row['nid']]->simple_access[$row['gid']] = $row;
  }
  foreach ($profiles as $row) {
    $nodes[$row['nid']]->simple_access_profiles[$row['pid']] = $row['pid'];
  }
}