You are here

function nodeaccess_userreference_add_grant in Node access user reference 6.3

Same name and namespace in other branches
  1. 7.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
Implementation of hook_node_access_records().

File

./nodeaccess_userreference.module, line 104

Code

function nodeaccess_userreference_add_grant(&$grants, $realm, $gid, $priority, $settings) {
  if (empty($settings['view']) && empty($settings['update']) && empty($settings['delete'])) {
    return;
  }
  $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 ($settings['view']) {
    $grants[$key]['grant_view'] = 1;
  }
  if ($settings['update']) {
    $grants[$key]['grant_update'] = 1;
  }
  if ($settings['delete']) {
    $grants[$key]['grant_delete'] = 1;
  }

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