You are here

function lti_tool_provider_outcomes_create_outcome in LTI Tool Provider 7

Create or update an Outcome.

This function is invoked during LTI launch. If record exists, it updates the outcome. If record does not exist, a new record is created.

Parameters

string $result_sourcedid: Result source DID of the request.

string $context_id: Context ID of the incoming request.

string $resource_id: Resource Link ID of the request.

int $user_id: User Entity UID.

2 calls to lti_tool_provider_outcomes_create_outcome()
lti_tool_provider_outcomes_lti_tool_provider_create_account_alter in lti_tool_provider_outcomes/lti_tool_provider_outcomes.module
Implements hook_lti_tool_provider_create_account_alter().
lti_tool_provider_outcomes_lti_tool_provider_launch_alter in lti_tool_provider_outcomes/lti_tool_provider_outcomes.module
Implements hook_lti_tool_provider_launch_alter().

File

lti_tool_provider_outcomes/lti_tool_provider_outcomes.module, line 188

Code

function lti_tool_provider_outcomes_create_outcome($result_sourcedid, $context_id, $resource_id, $user_id) {
  $results_arr = array();
  $query = new EntityFieldQuery();
  $query
    ->entityCondition('entity_type', 'lti_tool_provider_outcomes')
    ->propertyCondition('lti_tool_provider_outcomes_user_id', $user_id)
    ->propertyCondition('lti_tool_provider_outcomes_resource_entity_id_fk', $resource_id);
  $result = $query
    ->execute();
  if (!empty($result)) {

    // Outcome already exists.
    $entities = entity_load('lti_tool_provider_outcomes', array_keys($result['lti_tool_provider_outcomes']));
    foreach ($entities as $entity) {
      $entity->lti_tool_provider_outcomes_result_sourcedid = $result_sourcedid;
      entity_get_controller('lti_tool_provider_outcomes')
        ->save($entity);
    }
  }
  else {
    $entity = new stdClass();
    $entity->lti_tool_provider_outcomes_id = 0;
    $entity->lti_tool_provider_outcomes_resource_entity_id_fk = $resource_id;
    $entity->lti_tool_provider_outcomes_result_sourcedid = $result_sourcedid;
    $entity->lti_tool_provider_outcomes_user_id = $user_id;
    $entity->lti_tool_provider_outcomes_score = '0.0';
    entity_get_controller('lti_tool_provider_outcomes')
      ->save($entity);
  }
  drupal_set_message(t('Successfully updated outcome'));
}