Ejemplo n.º 1
0
 public function make_behaviour(question_attempt $qa, $preferredbehaviour)
 {
     return question_engine::make_behaviour('manualgraded', $qa, $preferredbehaviour);
 }
Ejemplo n.º 2
0
 /**
  * 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);
 }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 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);
 }