You are here

function QuizResultController::load in Quiz 7.6

Overridden.

In contrast to the parent implementation we factor out query execution, so fetching can be further customized easily.

Overrides EntityAPIController::load

See also

DrupalDefaultEntityController#load($ids, $conditions)

File

includes/QuizResultController.class.inc, line 23

Class

QuizResultController

Code

function load($ids = array(), $conditions = array()) {
  $quiz_results = parent::load($ids, $conditions);
  foreach ($quiz_results as $quiz_result) {
    $quiz_node_relationships = entity_load('quiz_question_relationship', FALSE, array(
      'parent_nid' => $quiz_result->nid,
      'parent_vid' => $quiz_result->vid,
    ));
    $relationships = array();
    foreach ($quiz_node_relationships as $quiz_node_relationship) {
      $relationships[$quiz_node_relationship->child_nid] = $quiz_node_relationship;
    }
    $quiz_result_answers = entity_load('quiz_result_answer', FALSE, array(
      'result_id' => $quiz_result->result_id,
    ));
    if ($quiz_result_answers) {
      foreach ($quiz_result_answers as $quiz_result_answer) {
        $wrap = entity_metadata_wrapper('quiz_result_answer', $quiz_result_answer);
        $type = $wrap->question_nid
          ->value()->type;
        if (!empty($relationships[$quiz_result_answer->question_nid])) {
          $relationship = $relationships[$quiz_result_answer->question_nid];
        }
        $quiz_result->layout[$quiz_result_answer->number] = array(
          'display_number' => $quiz_result_answer->number,
          'nid' => $quiz_result_answer->question_nid,
          'vid' => $quiz_result_answer->question_vid,
          'tid' => $quiz_result_answer->tid,
          'number' => $quiz_result_answer->number,
          'type' => $type,
          'qnr_id' => isset($relationship) ? $relationship->qnr_id : NULL,
          'qnr_pid' => isset($relationship) ? $relationship->qnr_pid : NULL,
        );
      }
      ksort($quiz_result->layout, SORT_NUMERIC);
    }
    else {
      $quiz_result->layout = array();
    }
  }
  return $quiz_results;
}