public function make_behaviour(question_attempt $qa, $preferredbehaviour) { return question_engine::make_behaviour('manualgraded', $qa, $preferredbehaviour); }
/** * Create a question_attempt_with_restricted_history * @param question_attempt $baseqa The question_attempt to make a restricted version of. * @param int $lastseq the index of the last step to include. * @param string $preferredbehaviour the preferred behaviour. It is slightly * annoyting that this needs to be passed, but unavoidable for now. */ public function __construct(question_attempt $baseqa, $lastseq, $preferredbehaviour) { $this->baseqa = $baseqa->get_full_qa(); if ($lastseq < 0 || $lastseq >= $this->baseqa->get_num_steps()) { throw new coding_exception('$lastseq out of range', $lastseq); } $this->steps = array_slice($this->baseqa->steps, 0, $lastseq + 1); $this->observer = new question_usage_null_observer(); // This should be a straight copy of all the remaining fields. $this->id = $this->baseqa->id; $this->usageid = $this->baseqa->usageid; $this->slot = $this->baseqa->slot; $this->question = $this->baseqa->question; $this->maxmark = $this->baseqa->maxmark; $this->minfraction = $this->baseqa->minfraction; $this->maxfraction = $this->baseqa->maxfraction; $this->questionsummary = $this->baseqa->questionsummary; $this->responsesummary = $this->baseqa->responsesummary; $this->rightanswer = $this->baseqa->rightanswer; $this->flagged = $this->baseqa->flagged; // Except behaviour, where we need to create a new one. $this->behaviour = question_engine::make_behaviour($this->baseqa->get_behaviour_name(), $this, $preferredbehaviour); }
public function make_behaviour(question_attempt $qa, $preferredbehaviour) { if (empty($this->inputs)) { return question_engine::make_behaviour('informationitem', $qa, $preferredbehaviour); } if (empty($this->prts)) { return question_engine::make_behaviour('manualgraded', $qa, $preferredbehaviour); } if ($preferredbehaviour == 'adaptive' || $preferredbehaviour == 'adaptivenopenalty') { return question_engine::make_behaviour('adaptivemultipart', $qa, $preferredbehaviour); } if ($preferredbehaviour == 'deferredfeedback' && $this->any_inputs_require_validation()) { return question_engine::make_behaviour('dfexplicitvaildate', $qa, $preferredbehaviour); } if ($preferredbehaviour == 'deferredcbm' && $this->any_inputs_require_validation()) { return question_engine::make_behaviour('dfcbmexplicitvaildate', $qa, $preferredbehaviour); } return parent::make_behaviour($qa, $preferredbehaviour); }
public function make_behaviour(question_attempt $qa, $preferredbehaviour) { if ($preferredbehaviour == 'interactive') { return question_engine::make_behaviour('interactivecountback', $qa, $preferredbehaviour); } return question_engine::make_archetypal_behaviour($preferredbehaviour, $qa); }
public function make_behaviour(question_attempt $qa, $preferredbehaviour) { global $CFG; // check that regexpadaptivewithhelp behaviour has been installed // if not installed, then the regexp questions will follow the "standard" behaviours // and Help button will not be available // NOTE: from 2.2 you cannot install regexp if corresponding behaviours have not been installed first // see plugin->dependencies in version.php file // only use the regexpadaptivewithhelp behaviour is question uses hint if ($this->usehint) { if ($preferredbehaviour == 'adaptive' && file_exists($CFG->dirroot . '/question/behaviour/regexpadaptivewithhelp/')) { return question_engine::make_behaviour('regexpadaptivewithhelp', $qa, $preferredbehaviour); } if ($preferredbehaviour == 'adaptivenopenalty' && file_exists($CFG->dirroot . '/question/behaviour/regexpadaptivewithhelpnopenalty/')) { return question_engine::make_behaviour('regexpadaptivewithhelpnopenalty', $qa, $preferredbehaviour); } } return question_engine::make_archetypal_behaviour($preferredbehaviour, $qa); }