You are here

function user_relationship_node_access_nodeapi in User Relationships 6

Same name and namespace in other branches
  1. 5.3 user_relationship_node_access/user_relationship_node_access.module \user_relationship_node_access_nodeapi()
  2. 5.2 plugins/user_relationship_node_access/user_relationship_node_access.module \user_relationship_node_access_nodeapi()

hook_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;
  }
}