You are here

function lti_tool_provider_outcomes_set_score in LTI Tool Provider 7

Set the outcomes score for a user.

Parameters

string $score: The new Score.

$user_id: The user, defaults to current user if not specified.

Return value

boolean True if successful.

1 call to lti_tool_provider_outcomes_set_score()
lti_tool_provider_outcomes_set_score_action in lti_tool_provider_outcomes/lti_tool_provider_outcomes.module
Action: Set the user's score.

File

lti_tool_provider_outcomes/lti_tool_provider_outcomes.module, line 319

Code

function lti_tool_provider_outcomes_set_score($score = '0.0', $user_id = NULL) {
  if (isset($_SESSION['lti_tool_provider_context_info'])) {
    if ($user_id == NULL) {
      global $user;
      $user_id = $user->uid;
    }
    $entity_type = 'lti_tool_provider_outcomes';
    $resource = lti_tool_provider_outcomes_get_resource($_SESSION['lti_tool_provider_context_info']['consumer_id'], $_SESSION['lti_tool_provider_context_info']['context_id'], $_SESSION['lti_tool_provider_context_info']['resource_link_id']);
    if ($resource) {
      $query = new EntityFieldQuery();
      $query
        ->entityCondition('entity_type', $entity_type)
        ->propertyCondition('lti_tool_provider_outcomes_user_id', $user_id)
        ->propertyCondition('lti_tool_provider_outcomes_resource_entity_id_fk', $resource->lti_tool_provider_outcomes_resource_id);
      $result = $query
        ->execute();
      if (isset($result[$entity_type])) {
        $outcome = reset(entity_load($entity_type, array_keys($result[$entity_type])));
        $outcome->lti_tool_provider_outcomes_score = $score;
        $outcome->lti_tool_provider_outcomes_last_updated = REQUEST_TIME;
        entity_get_controller($entity_type)
          ->save($outcome);
        drupal_set_message(t('Score has been set.'));
        return TRUE;
      }
      else {
        drupal_set_message(t('Unable to set score: No outcome.'), 'error');
      }
    }
    else {
      drupal_set_message(t('Unable to set score: No resource.'), 'error');
    }
  }
  else {
    drupal_set_message(t('Unable to set score: No LTI session'), 'error');
  }
  return FALSE;
}