You are here

public function quiz_views_handler_field_quiz_question_result_answer::pre_render in Quiz 7.5

Same name and namespace in other branches
  1. 8.6 includes/views/handlers/quiz_views_handler_field_quiz_question_result_answer.inc \quiz_views_handler_field_quiz_question_result_answer::pre_render()
  2. 8.5 includes/views/handlers/quiz_views_handler_field_quiz_question_result_answer.inc \quiz_views_handler_field_quiz_question_result_answer::pre_render()

Run before any fields are rendered.

This gives the handlers some time to set up before any handler has been rendered.

Parameters

array $values: An array of all objects returned from the query.

Overrides views_handler_field::pre_render

File

includes/views/handlers/quiz_views_handler_field_quiz_question_result_answer.inc, line 39

Class

quiz_views_handler_field_quiz_question_result_answer

Code

public function pre_render(&$values) {
  $this->items = array();
  $result_ids = array();
  foreach ($values as $value) {
    $result_ids[] = $value->result_id;
  }
  $nid = $this->options['question_nid'];
  $vid = $this->options['question_vid'];
  $node = node_load($nid, $vid);
  $info = quiz_question_get_info();
  $className = $info[$node->type]['response provider'];
  if ($result_ids) {
    $raids = db_query('SELECT result_answer_id
        FROM {quiz_node_results_answers} qnra
        LEFT JOIN {quiz_node_results} qnr ON (qnra.result_id = qnr.result_id)
        WHERE question_nid = :nid
          AND question_vid = :vid
          AND qnr.result_id IN (:result_id)', array(
      ':nid' => $nid,
      ':vid' => $vid,
      ':result_id' => $result_ids,
    ))
      ->fetchAllKeyed(0, 0);
    $this->items = $className::viewsGetAnswers($raids);
  }
}