QuestionOptionsEvaluation: Fix questions options score according formula - refs BT#15265

pull/2874/head
Angel Fernando Quiroz Campos 7 years ago
parent d0e61c64bf
commit 5f3acd1cbd
  1. 15
      plugin/questionoptionsevaluation/QuestionOptionsEvaluationPlugin.php
  2. 29
      plugin/questionoptionsevaluation/evaluation.php

@ -87,9 +87,10 @@ class QuestionOptionsEvaluationPlugin extends Plugin
}
/**
* @param int $formula
* @param Exercise $exercise
*/
public function recalculateQuestionScore(Exercise $exercise)
private function recalculateQuestionScore($formula, Exercise $exercise)
{
foreach ($exercise->questionList as $questionId) {
$question = Question::read($questionId);
@ -103,7 +104,15 @@ class QuestionOptionsEvaluationPlugin extends Plugin
$weighting = [];
foreach ($questionAnswers->correct as $i => $correct) {
$weighting[$i] = 1 == $correct ? 1 / $counts[1] : -1 / $counts[0];
if ($question->selectType() == MULTIPLE_ANSWER || 0 === $formula) {
$weighting[$i] = 1 == $correct ? 1 / $counts[1] : -1 / $counts[0];
continue;
}
if ($question->selectType() == UNIQUE_ANSWER) {
$weighting[$i] = 1 == $correct ? 1 : -1 / $formula;
}
}
$questionAnswers->new_nbrAnswers = $questionAnswers->nbrAnswers;
@ -135,6 +144,8 @@ class QuestionOptionsEvaluationPlugin extends Plugin
*/
public function saveFormulaForExercise($formula, Exercise $exercise)
{
$this->recalculateQuestionScore($formula, $exercise);
$extraFieldValue = new ExtraFieldValue('quiz');
$extraFieldValue->save(
[

@ -30,33 +30,17 @@ if ($plugin->get('enable') !== 'true') {
exit;
}
$formRecalculate = new FormValidator('recalculate');
$formRecalculate->addHidden('exercise', $exerciseId);
$formRecalculate->addButtonUpdate($plugin->get_lang('RecalculateQuestionScores'));
if ($formRecalculate->validate()) {
$plugin->recalculateQuestionScore($exercise);
Display::addFlash(
Display::return_message($plugin->get_lang('QuestionsEvaluated'), 'success')
);
header(
'Location: '.api_get_path(WEB_CODE_PATH).'exercise/exercise.php?'.api_get_cidreq()."&exerciseId=$exerciseId"
);
exit;
}
$formEvaluation = new FormValidator('evaluation');
$formEvaluation
->addRadio(
'formula',
$plugin->get_lang('EvaluationFormula'),
[
$plugin->get_lang('NoFormula'),
$plugin->get_lang('Formula1'),
$plugin->get_lang('Formula2'),
$plugin->get_lang('Formula3'),
-1 => $plugin->get_lang('NoFormula'),
0 => $plugin->get_lang('RecalculateQuestionScores'),
1 => $plugin->get_lang('Formula1'),
2 => $plugin->get_lang('Formula2'),
3 => $plugin->get_lang('Formula3'),
]
)
->setColumnsSize([4, 7, 1]);
@ -88,7 +72,4 @@ echo Display::return_message(
$plugin->get_lang('QuizQuestionsScoreRulesTitleConfirm'),
'warning'
);
echo '<hr>';
$formRecalculate->display();
echo '<hr>';
$formEvaluation->display();

Loading…
Cancel
Save