You are here

function _node_resource_access in Services 6.3

Same name and namespace in other branches
  1. 6.2 services/node_service/node_resource.module \_node_resource_access()
  2. 7.3 resources/node_resource.inc \_node_resource_access()
  3. 7 services/node_service/node_resource.module \_node_resource_access()

Determine whether the current user can access a node resource.

Parameters

$op: One of view, update, create, delete per node_access().

$args: Resource arguments passed through from the original request.

Return value

bool

See also

node_access()

2 string references to '_node_resource_access'
hook_services_resources in ./services.services.api.php
Implementation of hook_services_resources(). Defines function signatures for resources available to services.
_node_resource_definition in resources/node_resource.inc
@file This file will define the resources for dealing directly with nodes

File

resources/node_resource.inc, line 488
This file will define the resources for dealing directly with nodes

Code

function _node_resource_access($op = 'view', $args = array()) {

  // Adds backwards compatability with regression fixed in #1083242
  $args[0] = _services_access_value($args[0], 'node');

  // Make sure we have an object or this all fails, some servers can
  // mess up the types.
  if (is_array($args[0])) {
    $args[0] = (object) $args[0];
  }
  elseif (!is_array($args[0]) && !is_object($args[0])) {

    //This is to determine if it is just a string
    $args[0] = (object) array(
      'nid' => $args[0],
    );
  }
  if ($op != 'create' && !empty($args)) {
    $node = node_load($args[0]->nid);
  }
  elseif ($op == 'create') {
    $node = $args[0]->type;
    return node_access($op, $node);
  }
  if (isset($node->nid) && $node->nid) {
    return node_access($op, $node);
  }
  else {
    return services_error('Node id: ' . $args[0]->nid . ' could not be found', 404);
  }
}