You are here

function nodeaccess_userreference_add_grant in Node access user reference 7.3

Same name and namespace in other branches
  1. 6.3 nodeaccess_userreference.module \nodeaccess_userreference_add_grant()

Add node grants in a way that prevents overriding previous iterations.

Parameters

&$grants: The grants array where the grant will be added.

$realm: The realm of this grant.

$gid: The grant ID.

$priority: The grant priority.

$settings: An settings array of boolean equivalent values with keys 'view', 'edit', and 'delete'.

1 call to nodeaccess_userreference_add_grant()
nodeaccess_userreference_node_access_records in ./nodeaccess_userreference.module
Implements hook_node_access_records().

File

./nodeaccess_userreference.module, line 294
The Node access user reference module.

Code

function nodeaccess_userreference_add_grant(&$grants, $realm, $gid, $priority, $settings) {
  $key = $realm . $gid;
  if (!isset($grants[$key])) {

    // Setup the record.
    $grants[$key] = array(
      'realm' => $realm,
      'gid' => $gid,
      'priority' => $priority,
      'grant_view' => 0,
      'grant_update' => 0,
      'grant_delete' => 0,
    );
  }

  // Add the grants needed, so as not to override previous iterations.
  if (!empty($settings['view'])) {
    $grants[$key]['grant_view'] = 1;
  }
  if (!empty($settings['update'])) {
    $grants[$key]['grant_update'] = 1;
  }
  if (!empty($settings['delete'])) {
    $grants[$key]['grant_delete'] = 1;
  }

  // Increase the priority if needed.
  if ($priority > $grants[$key]['priority']) {
    $grants[$key]['priority'] = $priority;
  }
}