function node_privacy_byrole_nodeapi in node privacy byrole 5
Same name and namespace in other branches
- 6 node_privacy_byrole.module \node_privacy_byrole_nodeapi()
Implementation of hook_nodeapi().
File
- ./
node_privacy_byrole.module, line 109
Code
function node_privacy_byrole_nodeapi(&$node, $op, $arg = 0) {
$roles = array_keys(user_roles());
switch ($op) {
case 'load':
case 'prepare':
node_privacy_byrole_nodeapi_prepare($node);
break;
case 'delete':
db_query('DELETE FROM {node_privacy_byrole} WHERE nid = %d', $node->nid);
break;
case 'insert':
node_privacy_byrole_nodeapi_prepare($node);
// http://drupal.org/node/256396
foreach ($roles as $rid) {
db_query("INSERT INTO {node_privacy_byrole} (nid, gid, realm, grant_view, grant_update, grant_delete)\n VALUES (%d, %d, '%s', %d, %d, %d)", $node->nid, $rid, 'node_privacy_byrole_role', $node->node_privacy_byrole['roles'][$rid]['view'], $node->node_privacy_byrole['roles'][$rid]['edit'], $node->node_privacy_byrole['roles'][$rid]['delete']);
}
db_query("INSERT INTO {node_privacy_byrole} (nid, gid, realm, grant_view, grant_update, grant_delete)\n VALUES (%d, %d, '%s', %d, %d, %d)", $node->nid, $node->uid, 'node_privacy_byrole_user', 1, 1, 1);
break;
case 'update':
node_privacy_byrole_nodeapi_prepare($node);
// http://drupal.org/node/153588
// As a new role might have been added since creation of the node, we cannot simply "update" and so delete and reinsert
db_query("DELETE FROM {node_privacy_byrole} WHERE nid = %d AND realm = 'node_privacy_byrole_role'", $node->nid);
foreach ($roles as $rid) {
db_query("INSERT INTO {node_privacy_byrole} (nid, gid, realm, grant_view, grant_update, grant_delete)\n VALUES (%d, %d, '%s', %d, %d, %d)", $node->nid, $rid, 'node_privacy_byrole_role', $node->node_privacy_byrole['roles'][$rid]['view'], $node->node_privacy_byrole['roles'][$rid]['edit'], $node->node_privacy_byrole['roles'][$rid]['delete']);
}
if (isset($node->node_privacy_byrole['author'])) {
// this section was added to support author permission changes for actions
db_query("UPDATE {node_privacy_byrole} SET grant_view = %d, grant_update = %d, grant_delete = %d\n WHERE nid = %d AND gid = %d AND realm = 'node_privacy_byrole_user'", (int) $node->node_privacy_byrole['author']['view'], (int) $node->node_privacy_byrole['author']['edit'], (int) $node->node_privacy_byrole['author']['delete'], $node->nid, $node->uid);
}
else {
// Record for owner exists for sure, so we can simply update it
db_query("UPDATE {node_privacy_byrole} SET grant_view = %d, grant_update = %d, grant_delete = %d\n WHERE nid = %d AND gid = %d AND realm = 'node_privacy_byrole_user'", 1, 0, 0, $node->nid, $node->uid);
}
break;
}
}