Moodle PHP Documentation 4.4
Moodle 4.4.1 (Build: 20240610) (db07c09afc5)
question_attempt_step Class Reference

Stores one step in a {. More...

Inheritance diagram for question_attempt_step:
question_attempt_pending_step question_attempt_step_read_only question_attempt_step_subquestion_adapter

Public Member Functions

 __construct ($data=[], $timecreated=null, $userid=null, $existingstepid=null)
 You should not need to call this constructor in your own code.
 
 add_full_user_object (stdClass $user)
 Update full user information for step.
 
 get_all_data ()
 Get all the data.
 
 get_behaviour_data ()
 Get all the behaviour variables.
 
 get_behaviour_var ($name)
 
 get_fraction ()
 
 get_id ()
 
 get_metadata_var ($name)
 Get a metadata variable.
 
 get_qt_data ()
 Get all the question type variables.
 
 get_qt_files ($name, $contextid)
 Get the latest set of files for a particular question type variable of type question_attempt\PARAM_FILES.
 
 get_qt_var ($name)
 
 get_state ()
 
 get_submitted_data ()
 Get all the submitted data, but not the cached data.
 
 get_timecreated ()
 
 get_user ()
 Return the full user object.
 
 get_user_fullname ()
 Get full name of user who did action.
 
 get_user_id ()
 
 has_behaviour_var ($name)
 
 has_metadata_var ($name)
 Whether this step has a metadata variable.
 
 has_qt_var ($name)
 
 prepare_response_files_draft_itemid ($name, $contextid)
 Prepare a draft file are for the files belonging the a response variable of this step.
 
 prepare_response_files_draft_itemid_with_text ($name, $contextid, $text)
 Prepare a draft file are for the files belonging the a response variable of this step, while rewriting the URLs in some text.
 
 rewrite_response_pluginfile_urls ($text, $contextid, $name, $extras)
 Rewrite the @PLUGINFILE@ tokens in a response variable from this step that contains links to file.
 
 set_behaviour_var ($name, $value)
 Set a cached behaviour variable.
 
 set_fraction ($fraction)
 Set the fraction.
 
 set_metadata_var ($name, $value)
 Set a metadata variable.
 
 set_qt_var ($name, $value)
 Set a cached question type variable.
 
 set_state ($state)
 Set the state.
 

Static Public Member Functions

static load_from_records ($records, $attemptstepid, $qtype=null)
 Create a question_attempt_step from records loaded from the database.
 

Detailed Description

Stores one step in a {.

See also
question_attempt}.

The most important attributes of a step are the state, which is one of the {

See also
question_state} constants, the fraction, which may be null, or a number bewteen the attempt's minfraction and maxfraction, and the array of submitted data, about which more later.

A step also tracks the time it was created, and the user responsible for creating it.

The submitted data is basically just an array of name => value pairs, with certain conventions about the to divide the variables into five = 2 x 2 + 1 categories.

Variables may either belong to the behaviour, in which case the name starts with a '-', or they may belong to the question type in which case they name does not start with a '-'.

Second, variables may either be ones that came form the original request, in which case the name does not start with an _, or they are cached values that were created during processing, in which case the name does start with an _.

In addition, we can store 'metadata', typically only in the first step of a question attempt. These are stored with the initial characters ':_'.

That is, each name will start with one of '', '_', '-', '-_' or ':_'. The remainder of the name was supposed to match the regex [a-z][a-z0-9]* - but this has never been enforced. Question types exist which break this rule. E.g. qtype_combined. Perhpas now, an accurate regex would be [a-z][a-z0-9_:]*.

These variables can be accessed with {

See also
get_behaviour_var()} and {
get_qt_var()},
  • to be clear, ->get_behaviour_var('x') gets the variable with name '-x' - and values whose names start with '_' can be set using {
set_behaviour_var()} and {
set_qt_var()}. There are some other methods like {
has_behaviour_var()} to check wether a varaible with a particular name is set, and {
get_behaviour_data()} to get all the behaviour data as an associative array. There are also {
get_metadata_var()}, {
set_metadata_var()} and {
has_metadata_var()},
License
http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later

Constructor & Destructor Documentation

◆ __construct()

question_attempt_step::__construct ( $data = [],
$timecreated = null,
$userid = null,
$existingstepid = null )

You should not need to call this constructor in your own code.

Steps are normally created by {

See also
question_attempt} methods like {
question_attempt\process_action()}.
Parameters
array$datathe submitted data that defines this step.
int | null$timecreatedthe time to record for the action. (If not given, use now.)
int | null$useridthe user to attribute the aciton to. (If not given, use the current user.)
int | null$existingstepidif this step is going to replace an existing step (for example, during a regrade) this is the id of the previous step we are replacing.

Member Function Documentation

◆ add_full_user_object()

question_attempt_step::add_full_user_object ( stdClass $user)

Update full user information for step.

Parameters
stdClass$userFull user object.
Exceptions
coding_exception

◆ get_all_data()

question_attempt_step::get_all_data ( )

Get all the data.

behaviour variables have the - at the start of their name. This is only intended for internal use, for example by {

See also
question_engine_data_mapper\insert_question_attempt_step()}, however, it can occasionally be useful in test code. It should not be considered part of the public API of this class.
Parameters
arrayname => value pairs.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_behaviour_data()

question_attempt_step::get_behaviour_data ( )

Get all the behaviour variables.

Return values
arrayname => value pairs. NOTE! the name has the leading - stripped off. (If you don't understand the note, read the comment at the top of this class :-))

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_behaviour_var()

question_attempt_step::get_behaviour_var ( $name)
Parameters
string$namethe name of a behaviour variable to look for in the submitted data.
Return values
stringthe requested variable, or null if the variable is not set.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_fraction()

question_attempt_step::get_fraction ( )
Return values
null|numberthe fraction (grade on a scale of minfraction .. maxfraction, normally 0..1), or null if this step has not been marked.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_id()

question_attempt_step::get_id ( )
Return values
int|nullThe id of this step in the database. null if this step is not stored in the database.

◆ get_metadata_var()

question_attempt_step::get_metadata_var ( $name)

Get a metadata variable.

Do not call this method directly from your code. It is for internal use only. You should call {

See also
question_usage\get_question_attempt_metadata()}.
Parameters
string$namethe name of the variable to set. [a-z][a-z0-9]*.
Return values
stringthe value to set previously, or null if this variable was never set.

◆ get_qt_data()

question_attempt_step::get_qt_data ( )

Get all the question type variables.

Parameters
arrayname => value pairs.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_qt_files()

question_attempt_step::get_qt_files ( $name,
$contextid )

Get the latest set of files for a particular question type variable of type question_attempt\PARAM_FILES.

Parameters
string$namethe name of the associated variable.
int$contextidcontextid of the question attempt
Return values
arrayof {
See also
stored_files}.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_qt_var()

question_attempt_step::get_qt_var ( $name)
Parameters
string$namethe name of a question type variable to look for in the submitted data.
Return values
stringthe requested variable, or null if the variable is not set.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_state()

question_attempt_step::get_state ( )
Return values
question_stateThe state after this step.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_submitted_data()

question_attempt_step::get_submitted_data ( )

Get all the submitted data, but not the cached data.

behaviour variables have the - at the start of their name. This is only really intended for use by {

See also
question_attempt\regrade()}, it should not be considered part of the public API.
Parameters
arrayname => value pairs.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_timecreated()

question_attempt_step::get_timecreated ( )
Return values
intthe timestamp when this step was created.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ get_user()

question_attempt_step::get_user ( )

Return the full user object.

Return values
null|stdClassGet full user object.

◆ get_user_fullname()

question_attempt_step::get_user_fullname ( )

Get full name of user who did action.

Return values
stringfull name of user.

◆ get_user_id()

question_attempt_step::get_user_id ( )
Return values
intthe id of the user resonsible for creating this step.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ has_behaviour_var()

question_attempt_step::has_behaviour_var ( $name)
Parameters
string$namethe name of a behaviour variable to look for in the submitted data.
Return values
boolwhether a variable with this name exists in the question type data.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ has_metadata_var()

question_attempt_step::has_metadata_var ( $name)

Whether this step has a metadata variable.

Do not call this method directly from your code. It is for internal use only. You should call {

See also
question_usage\get_question_attempt_metadata()}.
Parameters
string$namethe name of the variable to set. [a-z][a-z0-9]*.
Return values
boolthe value to set previously, or null if this variable was never set.

◆ has_qt_var()

question_attempt_step::has_qt_var ( $name)
Parameters
string$namethe name of a question type variable to look for in the submitted data.
Return values
boolwhether a variable with this name exists in the question type data.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ load_from_records()

static question_attempt_step::load_from_records ( $records,
$attemptstepid,
$qtype = null )
static

Create a question_attempt_step from records loaded from the database.

Parameters
Iterator$recordsRaw records loaded from the database.
int$stepidThe id of the records to extract.
string$qtypeThe question type of which this is an attempt. If not given, each record must include a qtype field.
Return values
question_attempt_stepThe newly constructed question_attempt_step.

◆ prepare_response_files_draft_itemid()

question_attempt_step::prepare_response_files_draft_itemid ( $name,
$contextid )

Prepare a draft file are for the files belonging the a response variable of this step.

Parameters
string$namethe variable name the files belong to.
int$contextidthe id of the context the quba belongs to.
Return values
intthe draft itemid.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ prepare_response_files_draft_itemid_with_text()

question_attempt_step::prepare_response_files_draft_itemid_with_text ( $name,
$contextid,
$text )

Prepare a draft file are for the files belonging the a response variable of this step, while rewriting the URLs in some text.

Parameters
string$namethe variable name the files belong to.
int$contextidthe id of the context the quba belongs to.
string | null$textthe text to update the URLs in.
Return values
array(int,string)the draft itemid and the text with URLs rewritten.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ rewrite_response_pluginfile_urls()

question_attempt_step::rewrite_response_pluginfile_urls ( $text,
$contextid,
$name,
$extras )

Rewrite the @PLUGINFILE@ tokens in a response variable from this step that contains links to file.

Normally you should probably call {

See also
question_attempt\rewrite_response_pluginfile_urls()} instead of calling this method directly.
Parameters
string$textthe text to update the URLs in.
int$contextidthe id of the context the quba belongs to.
string$namethe variable name the files belong to.
array$extrasextra file path components.
Return values
stringthe rewritten text.

Reimplemented in question_attempt_step_subquestion_adapter.

◆ set_behaviour_var()

question_attempt_step::set_behaviour_var ( $name,
$value )

Set a cached behaviour variable.

Parameters
string$namethe name of the variable to set. Must match _[a-z][a-z0-9]*.
string$valuethe value to set.

Reimplemented in question_attempt_step_read_only, and question_attempt_step_subquestion_adapter.

◆ set_fraction()

question_attempt_step::set_fraction ( $fraction)

Set the fraction.

Normally only called by behaviours.

Parameters
null | number$fractionthe fraction to set.

Reimplemented in question_attempt_step_read_only, and question_attempt_step_subquestion_adapter.

◆ set_metadata_var()

question_attempt_step::set_metadata_var ( $name,
$value )

Set a metadata variable.

Do not call this method directly from your code. It is for internal use only. You should call {

See also
question_usage\set_question_attempt_metadata()}.
Parameters
string$namethe name of the variable to set. [a-z][a-z0-9]*.
string$valuethe value to set.

◆ set_qt_var()

question_attempt_step::set_qt_var ( $name,
$value )

Set a cached question type variable.

Parameters
string$namethe name of the variable to set. Must match _[a-z][a-z0-9]*.
string$valuethe value to set.

Reimplemented in question_attempt_step_read_only, and question_attempt_step_subquestion_adapter.

◆ set_state()

question_attempt_step::set_state ( $state)

Set the state.

Normally only called by behaviours.

Parameters
question_state$stateone of the {
See also
question_state} constants.

Reimplemented in question_attempt_step_read_only, and question_attempt_step_subquestion_adapter.


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