/**
* Get a set of response data for this question attempt that would get the
- * best possible mark.
- * @return array name => value pairs that could be passed to {@link process_action()}.
+ * best possible mark. If it is not possible to compute a correct
+ * response, this method should return null.
+ * @return array|null name => value pairs that could be passed to {@link process_action()}.
*/
public function get_correct_response() {
$response = $this->question->get_correct_response();
+ if (is_null($response)) {
+ return null;
+ }
$imvars = $this->behaviour->get_correct_response();
foreach ($imvars as $name => $value) {
$response['-' . $name] = $value;
/**
* Get the correct response to a particular question. Passing the results of
* this method to {@link process_action()} will probably result in full marks.
+ * If it is not possible to compute a correct response, this method should return null.
* @param int $slot the number used to identify this question within this usage.
* @return array that constitutes a correct response to this question.
*/
if ($quba->get_question_state($slot)->is_finished()) {
$finishdisabled = ' disabled="disabled"';
$filldisabled = ' disabled="disabled"';
-} else if (is_null($quba->get_correct_response($slot))) {
+}
+// If question type cannot give us a correct response, disable this button.
+if (is_null($quba->get_correct_response($slot))) {
$filldisabled = ' disabled="disabled"';
}
if (!$previewid) {
/**
* What data would need to be submitted to get this question correct.
* If there is more than one correct answer, this method should just
- * return one possibility.
+ * return one possibility. If it is not possible to compute a correct
+ * response, this method should return null.
*
- * @return array parameter name => value.
+ * @return array|null parameter name => value.
*/
public abstract function get_correct_response();