You are here

function _submission_resource_access in Webform Service 7.3

Determine whether the current user can access a submission resource.

Parameters

$op: One of create, view, edit, delete per webform_submission_access().

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

Return value

bool

See also

webform_submission_access() and webform_results_access()

2 string references to '_submission_resource_access'
webform_service_services_resources in ./webform_service.module
Implements hook_services_resources().
webform_service_services_resources_alter in ./webform_service.module
Implements hook_services_resources_alter().

File

./webform_service.inc, line 14

Code

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

  // Adds backwards compatability with regression fixed in #1083242
  if (isset($args[1])) {
    $args[1] = _services_access_value($args[1], 'webform_submission');
  }

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

    //This is to determine if it is just a string happens on node/%NID
    $node = node_load($args[0]);
  }
  if (is_array($args[1])) {
    $args[1] = (object) $args[1];
  }
  elseif (!is_array($args[0]) && !is_object($args[1])) {

    //This is to determine if it is just a string happens on webform_submission/%SID
    $args[1] = (object) array(
      'sid' => $args[1],
    );
  }
  if ($op != 'create') {
    module_load_include('inc', 'webform', 'includes/webform.submissions');
    if ($op == 'view' && empty($args[1]->sid)) {
      return webform_results_access($node);
    }
    else {
      $submission = webform_get_submission($node->nid, $args[1]->sid);
      return webform_submission_access($node, $submission, $op);
    }
  }
  elseif ($op == 'create') {
    return node_access($op, $node);
  }
}