Moodle APIs  3.8
Moodle 3.8.6 (Build: 20201109)
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
qbehaviour_interactive Class Reference

Question behaviour for the interactive model. More...

Inheritance diagram for qbehaviour_interactive:
question_behaviour_with_multiple_tries question_behaviour_with_save question_behaviour qbehaviour_interactivecountback

Public Member Functions

 adjust_display_options (question_display_options $options)
 Make any changes to the display options before a question is rendered, so that it can be displayed in a way that is appropriate for the statue it is currently in. More...
 
 apply_attempt_state (question_attempt_step $step)
 When an attempt is started based on a previous attempt (see question_attempt::start_based_on) this method is called to setup the new attempt. More...
 
 can_finish_during_attempt ()
 Whether the current attempt at this question could be completed just by the student interacting with the question, before $qa->finish() is called. More...
 
 check_file_access ($options, $component, $filearea, $args, $forcedownload)
 Checks whether the users is allow to be served a particular file. More...
 
 classify_response ($whichtries=question_attempt::LAST_TRY)
 Classify responses for this question into a number of sub parts and response classes as defined by question_type::get_possible_responses for this question type. More...
 
 format_comment ($comment=null, $commentformat=null, $context=null)
 
 get_applicable_hint ()
 Get the most applicable hint for the question in its current state. More...
 
 get_correct_response ()
 Return an array of any im variables, and the value required to get full marks. More...
 
 get_expected_data ()
 Return an array of the behaviour variables that could be submitted as part of a question of this type, with their types, so they can be properly cleaned. More...
 
 get_expected_qt_data ()
 Return an array of question type variables for the question in its current state. More...
 
 get_max_fraction ()
 Return the maximum possible fraction that can be scored for this question. More...
 
 get_min_fraction ()
 What is the minimum fraction that can be scored for this question. More...
 
 get_name ()
 
 get_question_summary ()
 Generate a brief, plain-text, summary of this question. More...
 
 get_renderer (moodle_page $page)
 
 get_resume_data ()
 Used by start_based_on() to get the data needed to start a new attempt from the point this attempt has go to. More...
 
 get_right_answer_summary ()
 Generate a brief, plain-text, summary of the correct answer to this question. More...
 
 get_state_string ($showcorrectness)
 Generate a brief textual description of the current state of the question, normally displayed under the question number. More...
 
 init_first_step (question_attempt_step $step, $variant)
 Initialise the first step in a question attempt when a new question_attempt is being started. More...
 
 is_compatible_question (question_definition $question)
 Some behaviours can only work with certing types of question. More...
 
 is_try_again_state ()
 
 process_action (question_attempt_pending_step $pendingstep)
 The main entry point for processing an action. More...
 
 process_autosave (question_attempt_pending_step $pendingstep)
 Auto-saved data. More...
 
 process_comment (question_attempt_pending_step $pendingstep)
 Implementation of processing a manual comment/grade action that should be suitable for most subclasses. More...
 
 process_finish (question_attempt_pending_step $pendingstep)
 
 process_save (question_attempt_pending_step $pendingstep)
 Implementation of processing a save action that should be suitable for most subclasses. More...
 
 process_submit (question_attempt_pending_step $pendingstep)
 
 process_try_again (question_attempt_pending_step $pendingstep)
 
 render (question_display_options $options, $number, core_question_renderer $qoutput, qtype_renderer $qtoutput)
 Cause the question to be renderered. More...
 
 required_question_definition_type ()
 
 step_has_a_submitted_response ($step)
 Does this step include a response submitted by a student? More...
 
 summarise_action (question_attempt_step $step)
 
 summarise_finish ($step)
 
 summarise_save (question_attempt_step $step)
 
 summarise_start ($step)
 
 summarise_submit (question_attempt_step $step)
 

Public Attributes

int const TRY_AGAIN_VISIBLE = 0x10
 Constant used only in } below and * (qbehaviour_interactive_renderer.
 
int const TRY_AGAIN_VISIBLE_READONLY = 0x11
 Constant used only in } below and * (qbehaviour_interactive_renderer.
 

Protected Member Functions

 adjust_fraction ($fraction, question_attempt_pending_step $pendingstep)
 
 get_our_resume_data ()
 Used by start_based_on() to get the data needed to start a new attempt from the point this attempt has go to. More...
 
 is_complete_response (question_attempt_step $pendingstep)
 Work out whether the response in $pendingstep represent a complete answer to the question. More...
 
 is_same_comment ($pendingstep)
 Checks whether two manual grading actions are the same. More...
 
 is_same_response (question_attempt_step $pendingstep)
 Work out whether the response in $pendingstep are significantly different from the last set of responses we have stored. More...
 
 summarise_manual_comment ($step)
 

Protected Attributes

question_attempt $qa
 the question attempt we are managing.
 
question_definition $question
 shortcut to $qa->get_question().
 

Detailed Description

Question behaviour for the interactive model.

Each question has a submit button next to it which the student can use to submit it. Once the question is submitted, it is not possible for the student to change their answer any more, but the student gets full feedback straight away.

License
http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later

Member Function Documentation

◆ adjust_display_options()

qbehaviour_interactive::adjust_display_options ( question_display_options  $options)

Make any changes to the display options before a question is rendered, so that it can be displayed in a way that is appropriate for the statue it is currently in.

For example, by default, if the question is finished, we ensure that it is only ever displayed read-only.

Parameters
question_display_options$optionsthe options to adjust. Just change the properties of this object - objects are passed by referece.

Reimplemented from question_behaviour.

◆ apply_attempt_state()

question_behaviour_with_save::apply_attempt_state ( question_attempt_step  $step)
inherited

When an attempt is started based on a previous attempt (see question_attempt::start_based_on) this method is called to setup the new attempt.

This method must call $this->question->apply_attempt_state($step), and may perform additional processing if the behaviour requries it.

Parameters
question_attempt_stepThe first step of the question_attempt being loaded.

Reimplemented from question_behaviour.

◆ can_finish_during_attempt()

qbehaviour_interactive::can_finish_during_attempt ( )

Whether the current attempt at this question could be completed just by the student interacting with the question, before $qa->finish() is called.

Return values
booleanwhether the attempt can finish naturally.

Reimplemented from question_behaviour.

◆ check_file_access()

question_behaviour::check_file_access (   $options,
  $component,
  $filearea,
  $args,
  $forcedownload 
)
inherited

Checks whether the users is allow to be served a particular file.

Parameters
question_display_options$optionsthe options that control display of the question.
string$componentthe name of the component we are serving files for.
string$fileareathe name of the file area.
array$argsthe remaining bits of the file path.
bool$forcedownloadwhether the user must be forced to download the file.
Return values
booltrue if the user can access this file.

◆ classify_response()

question_behaviour::classify_response (   $whichtries = question_attempt::LAST_TRY)
inherited

Classify responses for this question into a number of sub parts and response classes as defined by question_type::get_possible_responses for this question type.

Parameters
string$whichtrieswhich tries to analyse for response analysis. Will be one of question_attempt::FIRST_TRY, LAST_TRY or ALL_TRIES. Defaults to question_attempt::LAST_TRY.
Return values
(question_classified_response|array)[]If $whichtries is question_attempt::FIRST_TRY or LAST_TRY index is subpartid and values are question_classified_response instances. If $whichtries is question_attempt::ALL_TRIES then first key is submitted response no and the second key is subpartid.

◆ format_comment()

question_behaviour::format_comment (   $comment = null,
  $commentformat = null,
  $context = null 
)
inherited
Parameters
$commentthe comment text to format. If omitted, $this->qa->get_manual_comment() is used.
$commentformatthe format of the comment, one of the FORMAT_... constants.
$contextthe quiz context.
Return values
stringthe comment, ready to be output.

◆ get_applicable_hint()

qbehaviour_interactive::get_applicable_hint ( )

Get the most applicable hint for the question in its current state.

Return values
question_hintthe most applicable hint, or null, if none.

Reimplemented from question_behaviour.

◆ get_correct_response()

question_behaviour::get_correct_response ( )
inherited

Return an array of any im variables, and the value required to get full marks.

Return values
arrayvariable name => value.

Reimplemented in qbehaviour_informationitem, qbehaviour_immediatecbm, and qbehaviour_deferredcbm.

◆ get_expected_data()

qbehaviour_interactive::get_expected_data ( )

Return an array of the behaviour variables that could be submitted as part of a question of this type, with their types, so they can be properly cleaned.

Return values
arrayvariable name => PARAM_... constant.

Reimplemented from question_behaviour.

◆ get_expected_qt_data()

qbehaviour_interactive::get_expected_qt_data ( )

Return an array of question type variables for the question in its current state.

Normally, if } would set * question_display_options::$readonly to true, then this method should return an empty array, otherwise it should return $this->question->get_expected_data(). Thus, there should be little need to override this method.

Return values
array|stringvariable name => PARAM_... constant, or, as a special case that should only be used in unavoidable, the constant question_attempt::USE_RAW_DATA meaning take all the raw submitted data belonging to this question.

Reimplemented from question_behaviour.

◆ get_max_fraction()

question_behaviour::get_max_fraction ( )
inherited

Return the maximum possible fraction that can be scored for this question.

Normally this will be based on $this->question->get_max_fraction(), but may be modified in some way by the behaviour.

Return values
numberthe maximum fraction when this question is attempted under this behaviour.

Reimplemented in qbehaviour_missing, qbehaviour_immediatecbm, and qbehaviour_deferredcbm.

◆ get_min_fraction()

question_behaviour::get_min_fraction ( )
inherited

What is the minimum fraction that can be scored for this question.

Normally this will be based on $this->question->get_min_fraction(), but may be modified in some way by the behaviour.

Return values
numberthe minimum fraction when this question is attempted under this behaviour.

Reimplemented in qbehaviour_missing, qbehaviour_immediatefeedback, qbehaviour_immediatecbm, qbehaviour_deferredfeedback, and qbehaviour_deferredcbm.

◆ get_name()

question_behaviour::get_name ( )
inherited
Return values
stringthe name of this behaviour. For example the name of qbehaviour_mymodle is 'mymodel'.

◆ get_our_resume_data()

question_behaviour::get_our_resume_data ( )
protectedinherited

Used by start_based_on() to get the data needed to start a new attempt from the point this attempt has go to.

Return values
unknown_type

Reimplemented in qbehaviour_immediatecbm, and qbehaviour_deferredcbm.

◆ get_question_summary()

question_behaviour::get_question_summary ( )
inherited

Generate a brief, plain-text, summary of this question.

This is used by various reports. This should show the particular variant of the question as presented to students. For example, the calculated quetsion type would fill in the particular numbers that were presented to the student. This method will return null if such a summary is not possible, or inappropriate.

Normally, this method delegates to {question_definition::get_question_summary()}.

Return values
string|nulla plain text summary of this question.

◆ get_renderer()

question_behaviour::get_renderer ( moodle_page  $page)
inherited
Parameters
moodle_page$pagethe page to render for.
Return values
qbehaviour_rendererget the appropriate renderer to use for this model.

◆ get_resume_data()

question_behaviour::get_resume_data ( )
inherited

Used by start_based_on() to get the data needed to start a new attempt from the point this attempt has go to.

Return values
arrayname => value pairs.

◆ get_right_answer_summary()

qbehaviour_interactive::get_right_answer_summary ( )

Generate a brief, plain-text, summary of the correct answer to this question.

This is used by various reports, and can also be useful when testing. This method will return null if such a summary is not possible, or inappropriate.

Return values
string|nulla plain text summary of the right answer to this question.

Reimplemented from question_behaviour.

◆ get_state_string()

qbehaviour_interactive::get_state_string (   $showcorrectness)

Generate a brief textual description of the current state of the question, normally displayed under the question number.

Parameters
bool$showcorrectnessWhether right/partial/wrong states should be distinguised.
Return values
stringa brief summary of the current state of the qestion attempt.

Reimplemented from question_behaviour.

◆ init_first_step()

qbehaviour_interactive::init_first_step ( question_attempt_step  $step,
  $variant 
)

Initialise the first step in a question attempt when a new question_attempt is being started.

This method must call $this->question->start_attempt($step, $variant), and may perform additional processing if the behaviour requries it.

Parameters
question_attempt_step$stepthe first step of the question_attempt being started.
int$variantwhich variant of the question to use.

Reimplemented from question_behaviour.

◆ is_compatible_question()

qbehaviour_interactive::is_compatible_question ( question_definition  $question)

Some behaviours can only work with certing types of question.

This method allows the behaviour to verify that a question is compatible.

This implementation is only provided for backwards-compatibility. You should override this method if you are implementing a behaviour.

Parameters
question_definition$questionthe question.

Reimplemented from question_behaviour.

Reimplemented in qbehaviour_interactivecountback.

◆ is_complete_response()

question_behaviour_with_save::is_complete_response ( question_attempt_step  $pendingstep)
protectedinherited

Work out whether the response in $pendingstep represent a complete answer to the question.

Normally this will call question_manually_gradable::is_complete_response, but some behaviours, for example the CBM ones, have their own parts to the response.

Parameters
question_attempt_step$pendingstepcontains the new responses.
Return values
boolwhether the new response is complete.

Reimplemented in qbehaviour_immediatecbm, and qbehaviour_deferredcbm.

◆ is_same_comment()

question_behaviour::is_same_comment (   $pendingstep)
protectedinherited

Checks whether two manual grading actions are the same.

That is, whether the comment, and the mark (if given) is the same.

Parameters
question_attempt_step$pendingstepcontains the new responses.
Return values
boolwhether the new response is the same as we already have.

◆ is_same_response()

question_behaviour_with_save::is_same_response ( question_attempt_step  $pendingstep)
protectedinherited

Work out whether the response in $pendingstep are significantly different from the last set of responses we have stored.

Parameters
question_attempt_step$pendingstepcontains the new responses.
Return values
boolwhether the new response is the same as we already have.

Reimplemented in qbehaviour_immediatecbm, and qbehaviour_deferredcbm.

◆ is_try_again_state()

qbehaviour_interactive::is_try_again_state ( )
Return values
boolare we are currently in the try_again state.

◆ process_action()

qbehaviour_interactive::process_action ( question_attempt_pending_step  $pendingstep)

The main entry point for processing an action.

All the various operations that can be performed on a } get channeled through this function, except for * question_attempt::start()} which goes to init_first_step(). question_attempt::finish() becomes an action with im vars finish => 1, and manual comment/grade becomes an action with im vars comment => comment text, and mark => ..., max_mark => ... if the question is graded.

This method should first determine whether the action is significant. For example, if no actual action is being performed, but instead the current responses are being saved, and there has been no change since the last set of responses that were saved, this the action is not significatn. In this case, this method should return }. * Otherwise it should return question_attempt::KEEP.

If the action is significant, this method should also perform any necessary updates to $pendingstep. For example, it should call question_attempt_step::set_state() to set the state that results from this action, and if this is a grading action, it should call question_attempt_step::set_fraction().

This method can also call question_attempt_step::set_behaviour_var() to store additional infomation. There are two main uses for this. This can be used to store the result of any randomisation done. It is important to store the result of randomisation once, and then in future use the same outcome if the actions are ever replayed. This is how regrading works. The other use is to cache the result of expensive computations performed on the raw response data, so that subsequent display and review of the question does not have to repeat the same expensive computations.

Often this method is implemented as a dispatching method that examines the pending step to determine the kind of action being performed, and then calls a more specific method like } or * process_comment(). Look at some of the standard behaviours for examples.

Parameters
question_attempt_pending_step$pendingstepa partially initialised step containing all the information about the action that is being peformed. This information can be accessed using }. * bool either question_attempt::KEEP} or question_attempt::DISCARD

Reimplemented from question_behaviour.

◆ process_autosave()

question_behaviour_with_save::process_autosave ( question_attempt_pending_step  $pendingstep)
inherited

Auto-saved data.

By default this does nothing. interesting processing is done in question_behaviour_with_save.

Parameters
question_attempt_pending_step$pendingstepa partially initialised step containing all the information about the action that is being peformed. This information can be accessed using }. * bool either question_attempt::KEEP} or question_attempt::DISCARD

Reimplemented from question_behaviour.

◆ process_comment()

question_behaviour::process_comment ( question_attempt_pending_step  $pendingstep)
inherited

Implementation of processing a manual comment/grade action that should be suitable for most subclasses.

Parameters
question_attempt_pending_step$pendingstepa partially initialised step containing all the information about the action that is being peformed.
Return values
booleither question_attempt::KEEP

Reimplemented in qbehaviour_informationitem.

◆ process_save()

qbehaviour_interactive::process_save ( question_attempt_pending_step  $pendingstep)

Implementation of processing a save action that should be suitable for most subclasses.

Parameters
question_attempt_pending_step$pendingstepa partially initialised step containing all the information about the action that is being peformed.
Return values
booleither } or question_attempt::DISCARD

Reimplemented from question_behaviour_with_save.

◆ render()

question_behaviour::render ( question_display_options  $options,
  $number,
core_question_renderer  $qoutput,
qtype_renderer  $qtoutput 
)
inherited

Cause the question to be renderered.

This gets the appropriate behaviour renderer using }, and adjusts the display * options using adjust_display_options() and then calls core_question_renderer::question() to do the work.

Parameters
question_display_options$optionscontrols what should and should not be displayed.
string | null$numberthe question number to display.
core_question_renderer$qoutputthe question renderer that will coordinate everything.
qtype_renderer$qtoutputthe question type renderer that will be helping.
Return values
stringHTML fragment.

◆ step_has_a_submitted_response()

question_behaviour_with_multiple_tries::step_has_a_submitted_response (   $step)
inherited

Does this step include a response submitted by a student?

This method should return true for any attempt explicitly submitted by a student. The question engine itself will also automatically recognise any last saved response before the attempt is finished, you don't need to return true here for these steps with responses which are not explicitly submitted by the student.

Parameters
question_attempt_step$step
Return values
boolis this a step within a question attempt that includes a submitted response by a student.

Reimplemented from question_behaviour.

◆ summarise_manual_comment()

question_behaviour::summarise_manual_comment (   $step)
protectedinherited
Return values
stringa summary of a manual comment action.
Parameters
question_attempt_step$step

The documentation for this class was generated from the following file: