function nodeaccess_userreference_node_access_records in Node access user reference 6.3
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 nodeaccess_userreference.module \nodeaccess_userreference_node_access_records()
- 6.2 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 139
Code
function nodeaccess_userreference_node_access_records($node) {
$grants = array();
$content_types = content_types($node->type);
$info =& $content_types['fields'];
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)) {
if (!empty($node->{$field}['field_name'])) {
// Add referenced user grants.
foreach ((array) $node->{$field}['field_name'] as $userreference) {
if ($userreference['uid']) {
nodeaccess_userreference_add_grant($grants, 'nodeaccess_userreference', $userreference['uid'], $data['priority'], $data['referenced']);
}
}
}
if ($data['unused']) {
// Add a dummy grant for user 1 to block other users' access.
nodeaccess_userreference_add_grant($grants, 'nodeaccess_userreference', 1, $data['priority'], $data['referenced']);
}
// If there are grants set, also add the author and view-all grants.
// These will fire for each non-empty nodeaccess_userreference field,
// but redundant calls will be correctly handled by the helper function:
// nodeaccess_userreference_add_grant().
if (!empty($grants)) {
// Add author grants.
if ($node->uid > 0) {
nodeaccess_userreference_add_grant($grants, 'nodeaccess_userreference_author', $node->uid, $data['priority'], $data['author']);
}
// Add all grants.
nodeaccess_userreference_add_grant($grants, 'nodeaccess_userreference_all', 1, $data['priority'], $data['all']);
}
}
}
}
}
if (!empty($grants)) {
return $grants;
}
return NULL;
}