Moodle PHP Documentation 4.2
Moodle 4.2.8 (Build: 20240610) (2d41ac46f45)
core_question_generator Class Reference

Class core_question_generator for generating question data. More...

Inheritance diagram for core_question_generator:
component_generator_base

Public Member Functions

 create_question ($qtype, $which=null, $overrides=null)
 Create a new question.
 
 create_question_category ($record=null)
 Create a new question category.
 
 create_question_tag (array $data)
 Create a tag on a question.
 
 get_simulated_post_data_for_question_attempt (question_attempt $qa, $responsesummary, $checkbutton)
 This method can construct what the post data would be to simulate a user submitting responses to one particular question attempt.
 
 get_simulated_post_data_for_questions_in_usage (question_usage_by_activity $quba, array $responses, $checkbutton)
 This method can construct what the post data would be to simulate a user submitting responses to a number of questions within a question usage.
 
 reset ()
 Make the category count to zero.
 
 setup_course_and_questions ($type='course')
 Setup a course category, course, a question category, and 2 questions for testing.
 
 update_question ($question, $which=null, $overrides=null)
 Update an existing question.
 

Protected Member Functions

 insert_files (stdClass $instance, stdClass $record, string $table, context $context, string $component, string $filearea, int $targetitemid)
 Update the instance record, inserting any files that are referenced.
 
 set_user (?stdClass $user=null)
 Set the current user during data generation.
 

Protected Attributes

number $categorycount = 0
 of created instances
 
testing_data_generator $datagenerator
 

Detailed Description

Class core_question_generator for generating question data.

Author
2021 Safat Shahin safat.nosp@m.shah.nosp@m.in@ca.nosp@m.taly.nosp@m.st-au.nosp@m..net
License
http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later

Member Function Documentation

◆ create_question()

core_question_generator::create_question ( $qtype,
$which = null,
$overrides = null )

Create a new question.

The question is initialised using one of the examples from the appropriate question_test_helper subclass. Then, any files you want to change from the value in the base example you can override using $overrides.

Parameters
string$qtypethe question type to create an example of.
string$whichas for the corresponding argument of question_test_helper::get_question_form_data. null for the default one.
array | stdClass$overridesany fields that should be different from the base example.
Return values
stdClassthe question data.

◆ create_question_category()

core_question_generator::create_question_category ( $record = null)

Create a new question category.

Parameters
array | stdClass$record
Return values
stdClassquestion_categories record.

◆ create_question_tag()

core_question_generator::create_question_tag ( array $data)

Create a tag on a question.

Parameters
array$datawith two elements ['questionid' => 123, 'tag' => 'mytag'].

◆ get_simulated_post_data_for_question_attempt()

core_question_generator::get_simulated_post_data_for_question_attempt ( question_attempt $qa,
$responsesummary,
$checkbutton )

This method can construct what the post data would be to simulate a user submitting responses to one particular question attempt.

The $responsesummary is a string representation of the response to be submitted. The exact meaning of that depends on the particular question type. These strings are passed to the un_summarise_response method of the question to decode.

Parameters
question_attempt$qathe question attempt for which we are generating POST data.
string$responsesummarya textual summary of the response, as described above.
bool$checkbuttonif simulate a click on the check button, else simulate save. This should only be used with behaviours that have a check button.
Return values
arraythe simulated post data that can be passed to $quba->process_all_actions.

◆ get_simulated_post_data_for_questions_in_usage()

core_question_generator::get_simulated_post_data_for_questions_in_usage ( question_usage_by_activity $quba,
array $responses,
$checkbutton )

This method can construct what the post data would be to simulate a user submitting responses to a number of questions within a question usage.

In the responses array, the array keys are the slot numbers for which a response will be submitted. You can submit a response to any number of questions within the usage. There is no need to do them all. The values are a string representation of the response. The exact meaning of that depends on the particular question type. These strings are passed to the un_summarise_response method of the question to decode.

Parameters
question_usage_by_activity$qubathe question usage.
array$responsesthe responses to submit, in the format described above.
bool$checkbuttonif simulate a click on the check button for each question, else simulate save. This should only be used with behaviours that have a check button.
Return values
arraythat can be passed to methods like $quba->process_all_actions as simulated POST data.

◆ insert_files()

component_generator_base::insert_files ( stdClass $instance,
stdClass $record,
string $table,
context $context,
string $component,
string $filearea,
int $targetitemid )
protectedinherited

Update the instance record, inserting any files that are referenced.

Parameters
stdClass$instanceThe instance record of the already-created record
stdClass$recordThe data passed in to create the instance
string$tableThe table that the data exists in
context$contextThe context of the instance
string$componentThe component of the owning plugin
string$fileareaThe name of the file area
int$targetitemidThe itemid to use when saving the files
Return values
stdClassThe updated instance record

◆ reset()

core_question_generator::reset ( )

Make the category count to zero.

Reimplemented from component_generator_base.

◆ set_user()

component_generator_base::set_user ( ?stdClass $user = null)
protectedinherited

Set the current user during data generation.

This should be avoided wherever possible, but in some situations underlying code will insert data as the current user.

Parameters
stdClass$user

◆ setup_course_and_questions()

core_question_generator::setup_course_and_questions ( $type = 'course')

Setup a course category, course, a question category, and 2 questions for testing.

Parameters
string$typeThe type of question category to create.
Return values
arrayThe created data objects

◆ update_question()

core_question_generator::update_question ( $question,
$which = null,
$overrides = null )

Update an existing question.

Parameters
stdClass$questionthe question data to update.
string$whichas for the corresponding argument of question_test_helper::get_question_form_data. null for the default one.
array | stdClass$overridesany fields that should be different from the base example.
Return values
stdClassthe question data, including version info and questionbankentryid

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