You are here

function lti_tool_provider_outcomes_send_results in LTI Tool Provider 7

Send results to the Consumer.

Parameters

string $mode: The scope of results to retrieve.

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

1 string reference to 'lti_tool_provider_outcomes_send_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 18

Code

function lti_tool_provider_outcomes_send_results($mode, $return_url = '') {
  global $user;

  // Consumer_id based on the context.
  $uid = $user->uid;
  $consumer_id = $_SESSION['lti_tool_provider_context_info']['consumer_id'];
  $context_id = $_SESSION['lti_tool_provider_context_info']['context_id'];
  $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 send results. No Outcome URL is avaliable'), 'error');
    drupal_goto($return_url);
  }
  switch ($mode) {
    case 'user':

      // For outcome of current user.
      $resource = lti_tool_provider_outcomes_get_resource($consumer_id, $context_id, $resource_link_id);
      lti_tool_provider_outcomes_send_outcome_for_user($resource, $consumer, $uid);
      drupal_goto($return_url);

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

    // For all outcomes of all resources 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_send',
          array(
            $resource,
            $consumer,
          ),
        );
      }
      $batch_send = array(
        'title' => t('Sending outcomes.'),
        'operations' => $operations,
        'finished' => 'lti_tool_provider_outcomes_batch_finished',
        'init_message' => t('Sending outcomes.'),
        'error_message' => t('Encountered an error while sending outcomes.'),
        'file' => drupal_get_path('module', 'lti_tool_provider_outcomes') . '/lti_tool_provider_outcomes.sync.inc',
      );
      batch_set($batch_send);
      batch_process($return_url);
  }
}