AND/OR logic error in Userreference Access function
OK, the problem is definitely in this function. I'll get back to it in a little bit, but it may make enough sense for you to correct where an OR isn't doing what I think it should. I'm dyslexic and I swear that's why I can't do a damn thing with ANDs and ORs.
<pre>
function userreference_access_node_grants($account, $op) {
$grants = array();
switch ($op) {
case 'view':
if (variable_get('userreference_access_na_view', TRUE) || user_access('view all userreference access content')) {
$grants['userreference_access'] = array(1);
}
else {
$grants['userreference_access_nodes'] = userreference_access_nids($account, TRUE);
}
break;
case 'update': // aka edit
if (user_access('edit all userreference access content')) {
$grants['userreference_access'] = array(1);
}
else {
$grants['userreference_access_nodes'] = userreference_access_nids($account, TRUE);
}
break;
case 'delete':
if (user_access('delete all userreference access content')) {
$grants['userreference_access'] = array(1);
}
elseif (variable_get('userreference_access_na_dlet', FALSE)) {
$grants['userreference_access_nodes'] = userreference_access_nids($account);
}
break;
}
return $grants;
}
</pre>
Resolution
More like this
- Checklist module and/or site
- Error caused by misplaced parenthesis in drupal_set_message() function with error option.
- RE: Node access module (based on users listed in userreference fields)
- Node Authors module: give multiple people edit rights to specific content based on userreference field
- Unsupported operand types in messaging module (fatal error on admin page)


Comments
Post new comment