Development:Matching question type: Difference between revisions
(→Question options object: added shuffleanswers) |
|||
Line 41: | Line 41: | ||
==Question options object== | ==Question options object== | ||
The $questions->options object has | The $questions->options object has the properties | ||
;subquestions:an array of all the records from the quiz_match_sub table for this question, i.e., all the question-answer pairs, indexed by the ids. | |||
;shuffleanswers:a flag that indicates whether the answers should be shuffled, provided this is enabled at the quiz level. | |||
==State options object== | ==State options object== |
Revision as of 14:01, 13 February 2006
Template:Questiontype developer docs
Database tables
quiz_match
This table is only used in the code for saving matching questions and can therefore be considered redundant.
- id
- int(10) unsigned NOT NULL auto_increment,
Primary key
- question
- int(10) unsigned NOT NULL default '0',
- Foreign key to the id field in the quiz_questions table
- subquestions
- varchar(255) NOT NULL default ,
quiz_match_sub
The quiz_match_sub extends the quiz_questions table. It stores the pairs of questions and answers (as strings) that need to be matched for a correct solution.
- id
- int(10) unsigned NOT NULL auto_increment,
- question
- int(10) unsigned NOT NULL default '0',
- Foreign key to the id field in the quiz_questions table
- questiontext
- text NOT NULL,
- answertext
- varchar(255) NOT NULL default ,
Response storage
The matching questiontype needs to store information about the order of its subquestions and the selected responses. Because each subquestion is identified by one record in the quiz_match_sub table, the ids of this table are used to identify both the question and the response part. For each subquestion a '-'-separated pair is created, giving first the id of the record that provided the subquestion and then the id of the record that provided the selected response. E.g. 1-3 means that the answer of the third question was selected for the first subquestion. Correct responses are always pairs of identical ids, e.g 2-2. If no response is selected, the second id in the pair is set to '0'. These pairs are then put into a comma separated list to allow each subquestion to store a response.
Question options object
The $questions->options object has the properties
- subquestions
- an array of all the records from the quiz_match_sub table for this question, i.e., all the question-answer pairs, indexed by the ids.
- shuffleanswers
- a flag that indicates whether the answers should be shuffled, provided this is enabled at the quiz level.
State options object
The $state->options object has a single property 'subquestions' which holds an array of objects representing the question-answer pairs, indexed by the ids. Each entry from the table is an object with the following properties:
- id
- question
- questiontext
- answertext
- options
The options property in turn is an object with a single property answers which is an array indexed by .... Oh, who made this so complicated?