function nodeaccess_userreference_node_access_records in Node access user reference 7.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.3 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.2 nodeaccess_userreference.module \nodeaccess_userreference_node_access_records()
Implements hook_node_access_records().
File
- ./
nodeaccess_userreference.module, line 326 - The Node access user reference module.
Code
function nodeaccess_userreference_node_access_records($node) {
$grants = array();
$field_data = nodeaccess_userreference_field_settings($node->type);
if (!empty($field_data)) {
foreach ($field_data as $field_name => &$data) {
if (!empty($data) && (empty($data['views']['view']) || nodeaccess_userreference_node_in_field_view($data, array(
$node->nid,
)))) {
if (!isset($data['priority'])) {
$data['priority'] = 0;
}
if (!empty($node->status) || !empty($data['referenced_published'])) {
// Add referenced user grants.
$items = field_get_items('node', $node, $field_name);
if (!empty($items)) {
foreach ($items as &$user_reference) {
$uid = NULL;
// user_reference
if (isset($user_reference['uid'])) {
$uid = $user_reference['uid'];
}
elseif (isset($user_reference['target_id'])) {
$uid = $user_reference['target_id'];
}
if ($uid) {
nodeaccess_userreference_add_grant($grants, 'nodeaccess_userreference', $uid, $data['priority'], $data['referenced']);
}
}
}
}
if (!empty($data['unused']) && isset($data['referenced'])) {
// 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)) {
if (!empty($data['author']) && (!empty($node->status) || !empty($data['author_published']))) {
// Add author grants.
if ($node->uid > 0) {
nodeaccess_userreference_add_grant($grants, 'nodeaccess_userreference_author', $node->uid, $data['priority'], $data['author']);
}
}
if (!empty($data['all']) && (!empty($node->status) || !empty($data['all_published']))) {
// Add all grants.
nodeaccess_userreference_add_grant($grants, 'nodeaccess_userreference_all', 1, $data['priority'], $data['all']);
}
}
}
}
}
return $grants;
}