You are here

function _services_run_access_callback in Services 7.3

Call access callback of the method.

1 call to _services_run_access_callback()
_services_controller_execute_internals in includes/services.runtime.inc
Internals of the services_controller_execute().

File

includes/services.runtime.inc, line 447
Contains functions that only are necessary when a service call is made. This has broken out so that this code isn't loaded for every page load.

Code

function _services_run_access_callback($controller, $args) {

  // Construct access arguments array.
  if (isset($controller['access arguments'])) {
    $access_arguments = $controller['access arguments'];
    if (isset($controller['access arguments append']) && $controller['access arguments append']) {
      $access_arguments[] = $args;
    }
  }
  else {

    // Just use the arguments array if no access arguments have been specified
    $access_arguments = $args;
  }

  // Load the proper file for the access callback.
  if (!empty($controller['access callback file']) && ($access_cb_file = $controller['access callback file'])) {
    $access_cb_file_name = isset($access_cb_file['name']) ? $access_cb_file['name'] : NULL;
    module_load_include($access_cb_file['type'], $access_cb_file['module'], $access_cb_file_name);
  }

  // Call default or custom access callback.
  if (call_user_func_array($controller['access callback'], $access_arguments) != TRUE) {
    global $user;
    return services_error(t('Access denied for user @user', array(
      '@user' => isset($user->name) ? $user->name : 'anonymous',
    )), 403);
  }
}