You are here

function photos_access_node_access_records in Album Photos 7.3

Same name and namespace in other branches
  1. 8.5 photos_access/photos_access.module \photos_access_node_access_records()
  2. 8.4 photos_access/photos_access.module \photos_access_node_access_records()
  3. 6.0.x photos_access/photos_access.module \photos_access_node_access_records()

Implements hook_node_access_records().

File

photos_access/photos_access.module, line 446

Code

function photos_access_node_access_records($node) {
  global $user;
  if (variable_get('photos_access_' . $node->type, 0)) {
    if (isset($node->privacy['vid'])) {

      // @todo cleanup?
      $acc['updateid'] = isset($node->privacy['eid']) ? $node->privacy['eid'] : 0;
      $acc['viewid'] = isset($node->privacy['viewid']) ? $node->privacy['viewid'] : 0;
      $acc['vid'] = $node->privacy['vid'];
    }
    else {
      $acc = isset($_SESSION['photos_access_ac_' . $node->nid]) ? $_SESSION['photos_access_ac_' . $node->nid] : '';
    }
    if (isset($acc['vid']) || isset($acc['updateid'])) {

      // Author has full access to all albums they create.
      $grants[] = array(
        'realm' => 'photos_access_author',
        'gid' => $node->uid,
        'grant_view' => 1,
        'grant_update' => 1,
        'grant_delete' => 1,
        'priority' => 0,
      );

      // If viewid is 1:locked, only author can view it.
      if ($acc['viewid'] != 1) {

        // Open is 0.
        $photos_access_gid = 0;
        if ($acc['viewid'] != 0) {

          // If not open use {node}.nid.
          $photos_access_gid = $node->nid;
        }
        $grants[] = array(
          'realm' => 'photos_access',
          'gid' => $photos_access_gid,
          'grant_view' => 1,
          'grant_update' => 0,
          'grant_delete' => 0,
          'priority' => 0,
        );
      }

      // Access for collaborators.
      if (isset($acc['updateid']) && !empty($acc['updateid'])) {
        $grants[] = array(
          'realm' => 'photos_access_update',
          'gid' => $node->nid,
          'grant_view' => 1,
          'grant_update' => 1,
          'grant_delete' => 0,
          'priority' => 0,
        );
      }
      return $grants;
    }
    if (isset($_SESSION['photos_access_ac_' . $node->nid])) {
      unset($_SESSION['photos_access_ac_' . $node->nid]);
    }
  }
}