function user_relationship_node_access_nodeapi in User Relationships 6
Same name and namespace in other branches
- 5.3 user_relationship_node_access/user_relationship_node_access.module \user_relationship_node_access_nodeapi()
- 5.2 plugins/user_relationship_node_access/user_relationship_node_access.module \user_relationship_node_access_nodeapi()
File
- user_relationship_node_access/
user_relationship_node_access.module, line 231 - User Relationships Node Access module Allows content posted to be shared with users in one's social network
Code
function user_relationship_node_access_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
global $user;
switch ($op) {
case 'insert':
case 'update':
// if user is not allowed to effect perms, do not change access settings
$allowed_grants = _user_relationship_node_access_get_allowed_grants($user);
if (!count($allowed_grants)) {
break;
}
// if no content type isn't included, do not change access settings
if (!_user_relationship_node_access_node_eligible($node)) {
break;
}
// clear old settings, this will actually clear even ones that user is not allowed to set.
db_query("DELETE FROM {user_relationship_node_access} WHERE nid = %d", $node->nid);
$user_relationship_node_access = array();
if (is_array($node->user_relationship_node_access)) {
// reformat the array and optimize
foreach ($node->user_relationship_node_access as $action => $permissions) {
foreach ($permissions as $key => $permission) {
//make sure user is allowed to set this permission
if ($allowed_grants[$action] && $permission) {
$user_relationship_node_access[$key][$action] = TRUE;
}
}
}
// save permissions if any are set
db_query("INSERT INTO {user_relationship_node_access} (nid, permissions) VALUES (%d, '%s')", $node->nid, serialize($user_relationship_node_access));
}
$node->user_relationship_node_access = $user_relationship_node_access;
break;
case 'load':
$node->user_relationship_node_access = _user_relationship_node_access_load_node_perms($node->nid);
break;
case 'delete':
db_query("DELETE FROM {user_relationship_node_access} WHERE nid = %d", $node->nid);
break;
}
}