class QuizResultAnswerController in Quiz 7.5
Same name and namespace in other branches
- 7.6 includes/QuizResultAnswerController.class.inc \QuizResultAnswerController
Controller for a single quiz question response.
Hierarchy
- class \DrupalDefaultEntityController implements DrupalEntityControllerInterface
- class \EntityAPIController implements EntityAPIControllerRevisionableInterface
- class \QuizResultAnswerController
- class \EntityAPIController implements EntityAPIControllerRevisionableInterface
Expanded class hierarchy of QuizResultAnswerController
1 string reference to 'QuizResultAnswerController'
- quiz_entity_info in ./
quiz.module - Implements hook_entity_info().
File
- includes/
QuizResultAnswerController.class.inc, line 6
View source
class QuizResultAnswerController extends EntityAPIController {
/**
* Build the response content with feedback.
*/
public function buildContent($entity, $view_mode = 'full', $langcode = NULL, $content = array()) {
$out = parent::buildContent($entity, $view_mode, $langcode, $content);
$node = node_load($entity->question_nid, $entity->question_vid);
$entity_info = entity_get_info('node');
// @kludge
// We check for an instance first. This is probably not the best way to do
// this but we need to sometimes show feedback for an answer not stored.
// For example when taking quizzes with "repeat until correct".
if (!isset($entity->instance)) {
$instance = _quiz_question_response_get_instance($entity->result_id, $node);
}
else {
$instance = $entity->instance;
}
foreach ($entity_info['view modes'] as $view_mode => $info) {
if ($instance
->canReview("quiz_question_view_" . $view_mode)) {
$build = node_view($node, $view_mode);
unset($build['#theme']);
unset($build['answers']);
unset($build['links']);
$out["quiz_question_view_" . $view_mode] = $build;
}
}
$rows = array();
$labels = array(
'attempt' => t('Your answer'),
'choice' => t('Choice'),
'correct' => t('Correct?'),
'score' => t('Score'),
'answer_feedback' => t('Feedback'),
'solution' => t('Correct answer'),
);
drupal_alter('quiz_feedback_labels', $labels);
foreach ($instance
->getFeedbackValues() as $idx => $row) {
foreach ($labels as $reviewType => $label) {
if (isset($row[$reviewType]) && $instance
->canReview($reviewType)) {
$rows[$idx][$reviewType] = $row[$reviewType];
if (!empty($row[$reviewType])) {
$out[$reviewType] = array(
'#title' => $label,
'#type' => 'item',
'#markup' => $row[$reviewType],
);
}
}
}
}
if ($instance
->isEvaluated()) {
$score = $instance
->getScore();
if ($instance
->isCorrect()) {
$class = 'q-correct';
}
else {
$class = 'q-wrong';
}
}
else {
$score = t('?');
$class = 'q-waiting';
}
$quiz_result = quiz_result_load($entity->result_id);
if ($instance
->canReview('score') || quiz_access_to_score($quiz_result)) {
$out['score']['#title'] = '';
$out['score']['#markup'] = theme('quiz_question_score', array(
'score' => $score,
'max_score' => $instance
->getMaxScore(),
'class' => $class,
));
}
if ($rows) {
$headers = array_intersect_key($labels, $rows[0]);
$type = $instance
->getQuizQuestion()->node->type;
$out['table']['#markup'] = theme('quiz_question_feedback__' . $type, array(
'labels' => $headers,
'data' => $rows,
));
}
if ($instance
->canReview('question_feedback')) {
if ($properties = entity_load('quiz_question', FALSE, array(
'nid' => $instance->quizQuestion->node->nid,
'vid' => $instance->quizQuestion->node->vid,
))) {
$quiz_question = reset($properties);
$account = user_load($quiz_result->uid);
$token_types = array(
'global' => NULL,
'node' => $instance->quizQuestion->node,
'user' => $account,
);
$quiz_question->feedback = token_replace($quiz_question->feedback, $token_types);
$out['question_feedback']['#markup'] = check_markup($quiz_question->feedback, $quiz_question->feedback_format);
}
}
if ($instance
->canReview('score')) {
$out['max_score'] = array(
'#type' => 'value',
'#value' => $instance
->getMaxScore(),
);
}
return $out;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DrupalDefaultEntityController:: |
protected | property | Whether this entity type should use the static cache. | |
DrupalDefaultEntityController:: |
protected | property | Static cache of entities, keyed by entity ID. | |
DrupalDefaultEntityController:: |
protected | property | Array of information about the entity. | |
DrupalDefaultEntityController:: |
protected | property | Entity type for this controller instance. | |
DrupalDefaultEntityController:: |
protected | property | Additional arguments to pass to hook_TYPE_load(). | |
DrupalDefaultEntityController:: |
protected | property | Name of the entity's ID field in the entity database table. | |
DrupalDefaultEntityController:: |
protected | property | Name of entity's revision database table field, if it supports revisions. | |
DrupalDefaultEntityController:: |
protected | property | The table that stores revisions, if the entity supports revisions. | |
DrupalDefaultEntityController:: |
protected | function | Attaches data to entities upon loading. | 4 |
DrupalDefaultEntityController:: |
protected | function | Gets entities from the static cache. | 1 |
DrupalDefaultEntityController:: |
protected | function | Stores entities in the static entity cache. | |
DrupalDefaultEntityController:: |
protected | function | Ensures integer entity IDs are valid. | |
DrupalDefaultEntityController:: |
protected | function | Callback for array_filter that removes non-integer IDs. | |
EntityAPIController:: |
protected | property | ||
EntityAPIController:: |
protected | property | ||
EntityAPIController:: |
protected | property | ||
EntityAPIController:: |
protected | function |
Overrides DrupalDefaultEntityController::buildQuery(). Overrides DrupalDefaultEntityController:: |
1 |
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
|
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
1 |
EntityAPIController:: |
public | function |
Implements EntityAPIControllerRevisionableInterface::deleteRevision(). Overrides EntityAPIControllerRevisionableInterface:: |
|
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
1 |
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
|
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
1 |
EntityAPIController:: |
public | function |
Overridden. Overrides DrupalDefaultEntityController:: |
1 |
EntityAPIController:: |
public | function | Builds and executes the query for loading. | |
EntityAPIController:: |
protected | function | Renders a single entity property. | |
EntityAPIController:: |
public | function |
Overrides DrupalDefaultEntityController::resetCache(). Overrides DrupalDefaultEntityController:: |
1 |
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
1 |
EntityAPIController:: |
protected | function | Saves an entity revision. | |
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
1 |
EntityAPIController:: |
public | function |
Overridden. Overrides DrupalDefaultEntityController:: |
1 |
QuizResultAnswerController:: |
public | function |
Build the response content with feedback. Overrides EntityAPIController:: |