You are here

function user_relationship_node_access_update_node in User Relationships 7

2 calls to user_relationship_node_access_update_node()
user_relationship_node_access_node_insert in user_relationship_node_access/user_relationship_node_access.module
Implements hook_node_insert().
user_relationship_node_access_node_update in user_relationship_node_access/user_relationship_node_access.module
Implements hook_node_update().

File

user_relationship_node_access/user_relationship_node_access.module, line 297
Allows content posted to be shared with users in one's social network

Code

function user_relationship_node_access_update_node($node) {
  global $user;

  // 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)) {
    return;
  }

  // If no content type isn't included, do not change access settings
  if (!_user_relationship_node_access_node_eligible($node)) {
    return;
  }
  $user_relationship_node_access = array();
  if (!empty($node->user_relationship_node_access) && count($node->user_relationship_node_access)) {

    // Reformat the array and optimize.
    foreach ($node->user_relationship_node_access as $action => $permissions) {

      // @todo: The new set_default button results in a warning. Find a better way to avoid a
      // notice.
      if (!is_array($permissions)) {
        continue;
      }

      //if the grants actions is not set return
      if (!isset($allowed_grants[$action])) {
        return;
      }
      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;
        }
      }
    }

    // Clear old settings, this will actually clear even ones that user is not
    // allowed to set.
    db_delete('user_relationship_node_access')
      ->condition('nid', $node->nid)
      ->execute();

    // Save permissions if any are set.
    db_insert('user_relationship_node_access')
      ->fields(array(
      'nid' => $node->nid,
      'permissions' => serialize($user_relationship_node_access),
    ))
      ->execute();
  }
  $node->user_relationship_node_access = $user_relationship_node_access;
}