public function QuizResultController::buildContent in Quiz 7.5
Implements EntityAPIControllerInterface.
Parameters
$content: Optionally. Allows pre-populating the built content to ease overriding this method.
Overrides EntityAPIController::buildContent
File
- includes/
QuizResultController.class.inc, line 132
Class
Code
public function buildContent($entity, $view_mode = 'full', $langcode = NULL, $content = array()) {
$out = parent::buildContent($entity, $view_mode, $langcode, $content);
if (!$entity->is_evaluated && empty($_POST)) {
$msg = t('Parts of this @quiz have not been evaluated yet. The score below is not final.', array(
'@quiz' => QUIZ_NAME,
));
drupal_set_message($msg, 'warning');
}
$score = quiz_calculate_score($entity->result_id);
$account = user_load($entity->uid);
$params = array(
'%num_correct' => $score['numeric_score'],
'%question_count' => $score['possible_score'],
'!username' => $account->uid == $account->uid ? t('You') : theme('username', array(
'account' => $account,
)),
'@score' => $score['percentage_score'],
'!yourtotal' => $account->uid == $account->uid ? t('Your') : t('Total'),
);
$questions = array();
foreach ($entity
->getLayout() as $question) {
// Loop through all the questions and get their feedback.
$question_node = node_load($question['nid'], $question['vid']);
$instance = _quiz_question_response_get_instance($entity->result_id, $question_node);
if ($instance
->getQuizQuestion()
->hasFeedback()) {
$qras = entity_load('quiz_result_answer', FALSE, array(
'result_id' => $entity->result_id,
'question_nid' => $question_node->nid,
'question_vid' => $question_node->vid,
));
$qra = reset($qras);
$feedback = $qra
->view();
if (element_children($feedback['quiz_result_answer'][$instance->result_answer_id])) {
$questions[$question_node->nid] = array(
'#title' => t('Question @num', array(
'@num' => $question['display_number'],
)),
'#type' => 'fieldset',
'feedback' => $feedback,
'#weight' => $question['number'],
);
}
}
}
if ($questions) {
$out['questions'] = $questions;
}
$quiz_feedback['#markup'] = '';
if (quiz_feedback_can_review('quiz_feedback', $entity)) {
$summary = _quiz_get_summary_text($entity);
// Show quiz feedback.
if (!empty($summary['passfail'])) {
$quiz_feedback['#markup'] .= '<div id="quiz-summary">' . $summary['passfail'] . '</div>';
}
if (!empty($summary['result'])) {
$quiz_feedback['#markup'] .= '<div id="quiz-summary">' . $summary['result'] . '</div>';
}
}
if ($quiz_feedback['#markup']) {
$out['summary'] = $quiz_feedback;
}
if (quiz_feedback_can_review('score', $entity)) {
// Show score.
$out['score']['#markup'] = '<div id="quiz_score_possible">' . t('!username got %num_correct of %question_count possible points.', $params) . '</div>' . "\n";
$out['score']['#markup'] .= '<div id="quiz_score_percent">' . t('!yourtotal score: @score%', $params) . '</div>';
}
if (!element_children($out)) {
$out['no_feedback_text']['#markup'] = t('You have finished this @quiz.', array(
'@quiz' => QUIZ_NAME,
));
}
return $out;
}