You are here

function lti_tool_provider_outcomes_pull_results in LTI Tool Provider 7

Retrieves results from the Consumer.

Parameters

string $mode: The scope of results to retrieve.

string $return_url: To customise return page when URL is accessed.

1 call to lti_tool_provider_outcomes_pull_results()
lti_tool_provider_outcomes_pull_score_action in lti_tool_provider_outcomes/lti_tool_provider_outcomes.module
Action: Pull the user's score.
1 string reference to 'lti_tool_provider_outcomes_pull_results'
lti_tool_provider_outcomes_menu in lti_tool_provider_outcomes/lti_tool_provider_outcomes.module
Implements hook_menu().

File

lti_tool_provider_outcomes/lti_tool_provider_outcomes.sync.inc, line 208

Code

function lti_tool_provider_outcomes_pull_results($mode, $return_url = '') {
  global $user;
  $uid = $user->uid;
  $consumer_id = $_SESSION['lti_tool_provider_context_info']['consumer_id'];
  $context_id = $_SESSION['lti_tool_provider_context_info']['context_id'];
  $result_sourcedid = isset($_SESSION['lti_tool_provider_context_info']['lis_result_sourcedid']) ? $_SESSION['lti_tool_provider_context_info']['lis_result_sourcedid'] : NULL;
  $resource_link_id = $_SESSION['lti_tool_provider_context_info']['resource_link_id'];
  $consumer = lti_tool_provider_consumer_load($consumer_id);
  $url = $consumer->lti_tool_provider_consumer_outcomes_url;
  if (!isset($url)) {
    drupal_set_message(t('Unable to retrieve results. No Outcome URL is avaliable'), 'error');
    drupal_goto($return_url);
  }

  // Get the outcomes to pull.
  switch ($mode) {
    case 'user':

      // For this user.
      $resource = lti_tool_provider_outcomes_get_resource($consumer_id, $context_id, $resource_link_id);
      lti_tool_provider_outcomes_pull_outcome_for_user($resource, $consumer, $uid);
      drupal_goto($return_url);

    // For all results in current resource.
    case 'resource':
      $resource = lti_tool_provider_outcomes_get_resource($consumer_id, $context_id, $resource_link_id);
      $batch_pull = array(
        'title' => t('Retrieving outcomes.'),
        'operations' => array(
          array(
            'lti_tool_provider_outcomes_batch_pull',
            array(
              $resource,
              $consumer,
            ),
          ),
        ),
        'finished' => 'lti_tool_provider_outcomes_batch_finished',
        'init_message' => t('Retrieving outcomes.'),
        'error_message' => t('Encountered an error while retrieving outcomes.'),
        'file' => drupal_get_path('module', 'lti_tool_provider_outcomes') . '/lti_tool_provider_outcomes.sync.inc',
      );
      batch_set($batch_pull);
      batch_process($return_url);

    // For all results in current context.
    case 'context':
      $resources = lti_tool_provider_outcomes_get_resources_for_context($consumer_id, $context_id);
      $operations = array();
      foreach ($resources as $resource) {
        $operations[] = array(
          'lti_tool_provider_outcomes_batch_pull',
          array(
            $resource,
            $consumer,
          ),
        );
      }
      $batch_pull = array(
        'title' => t('Retrieving outcomes.'),
        'operations' => $operations,
        'finished' => 'lti_tool_provider_outcomes_batch_finished',
        'init_message' => t('Retrieving outcomes.'),
        'error_message' => t('Encountered an error while retrieving outcomes.'),
        'file' => drupal_get_path('module', 'lti_tool_provider_outcomes') . '/lti_tool_provider_outcomes.sync.inc',
      );
      batch_set($batch_pull);
      batch_process($return_url);
  }
}