function nodeaccess_userreference_node_access_records in Node access user reference 6.2
Same name and namespace in other branches
- 5.2 nodeaccess_userreference.module \nodeaccess_userreference_node_access_records()
- 5 nodeaccess_userreference.module \nodeaccess_userreference_node_access_records()
- 6.3 nodeaccess_userreference.module \nodeaccess_userreference_node_access_records()
- 6 nodeaccess_userreference.module \nodeaccess_userreference_node_access_records()
- 7.3 nodeaccess_userreference.module \nodeaccess_userreference_node_access_records()
- 7.2 nodeaccess_userreference.module \nodeaccess_userreference_node_access_records()
Implementation of hook_node_access_records().
File
- ./
nodeaccess_userreference.module, line 130
Code
function nodeaccess_userreference_node_access_records($node) {
$grants = array();
$content_types = content_types($node->type);
$info =& $content_types['fields'];
$priority = variable_get('nodeaccess_userreference_priority', 0);
if (is_array($info)) {
foreach ($info as $field) {
if ($field['type'] == 'userreference') {
$data = nodeaccess_userreference_field_settings($field['type_name'], $field['field_name']);
if (!empty($data) && !empty($node->{$field}['field_name'])) {
foreach ((array) $node->{$field}['field_name'] as $userreference) {
if ($userreference['uid']) {
$uid =& $userreference['uid'];
$grants[] = array(
'realm' => 'nodeaccess_userreference',
'gid' => $uid,
'priority' => $priority,
'grant_view' => $data['view'],
'grant_update' => $data['update'],
'grant_delete' => $data['delete'],
);
}
}
}
}
}
}
if (!empty($grants)) {
// Store author grants according to configuration.
$grant_view = variable_get('nodeaccess_userreference_author_view', 1);
$grant_update = variable_get('nodeaccess_userreference_author_update', 1);
$grant_delete = variable_get('nodeaccess_userreference_author_delete', 1);
if ($grant_view || $grant_update || $grant_delete) {
$grants[] = array(
'realm' => 'nodeaccess_userreference_author',
'gid' => $node->uid,
'priority' => $priority,
'grant_view' => $grant_view,
'grant_update' => $grant_update,
'grant_delete' => $grant_delete,
);
}
// Allow other modules to change the grants.
drupal_alter('nodeaccess_userreference_grants', $grants, $node);
return $grants;
}
return NULL;
}