|
|
|
@ -376,7 +376,7 @@ class Exercise { |
|
|
|
|
/** |
|
|
|
|
* returns random answers status. |
|
|
|
|
* |
|
|
|
|
* @author - Juan Carlos Ra�a |
|
|
|
|
* @author - Juan Carlos Rana |
|
|
|
|
*/ |
|
|
|
|
function selectRandomAnswers() { |
|
|
|
|
return $this->random_answers; |
|
|
|
@ -634,7 +634,7 @@ class Exercise { |
|
|
|
|
/** |
|
|
|
|
* sets to 0 if answers are not selected randomly |
|
|
|
|
* if answers are selected randomly |
|
|
|
|
* @author - Juan Carlos Ra�a |
|
|
|
|
* @author - Juan Carlos Rana |
|
|
|
|
* @param - integer $random_answers - random answers |
|
|
|
|
*/ |
|
|
|
|
function updateRandomAnswers($random_answers) { |
|
|
|
@ -1264,6 +1264,7 @@ class Exercise { |
|
|
|
|
$this->random_answers=0; |
|
|
|
|
} |
|
|
|
|
$this->save($type); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function search_engine_save() { |
|
|
|
@ -1540,7 +1541,7 @@ class Exercise { |
|
|
|
|
$lp_id = 0; |
|
|
|
|
} |
|
|
|
|
if (empty($lp_item_id)) { |
|
|
|
|
$lp_item_id = 0; |
|
|
|
|
$lp_item_id = 0; |
|
|
|
|
} |
|
|
|
|
if (empty($lp_item_view_id)) { |
|
|
|
|
$lp_item_view_id = 0; |
|
|
|
@ -3681,16 +3682,16 @@ class Exercise { |
|
|
|
|
$questionList = array(); |
|
|
|
|
$tabCategoryQuestions = Testcategory::getQuestionsByCat($this->id); |
|
|
|
|
$isRandomByCategory = $this->selectRandomByCat(); |
|
|
|
|
// on tri les categories en fonction du terme entre [] en tête de la description de la catégorie |
|
|
|
|
// on tri les categories en fonction du terme entre [] en tete de la description de la categorie |
|
|
|
|
/* |
|
|
|
|
* ex de catégories : |
|
|
|
|
* [biologie] Maîtriser les mécanismes de base de la génétique |
|
|
|
|
* [biologie] Relier les moyens de défenses et les agents infectieux |
|
|
|
|
* [biologie] Savoir où est produite l'énergie dans les cellules et sous quelle forme |
|
|
|
|
* [chimie] Classer les molécules suivant leur pouvoir oxydant ou réducteur |
|
|
|
|
* [chimie] Connaître la définition de la théorie acide/base selon Brönsted |
|
|
|
|
* [chimie] Connaître les charges des particules |
|
|
|
|
* On veut dans l'ordre des groupes définis par le terme entre crochet au début du titre de la catégorie |
|
|
|
|
* [biologie] Maitriser les m袡nismes de base de la g诩tique |
|
|
|
|
* [biologie] Relier les moyens de depenses et les agents infectieux |
|
|
|
|
* [biologie] Savoir ou est produite l'enrgie dans les cellules et sous quelle forme |
|
|
|
|
* [chimie] Classer les molles suivant leur pouvoir oxydant ou reacteur |
|
|
|
|
* [chimie] Connaître la denition de la theoie acide/base selon Brönsted |
|
|
|
|
* [chimie] Connaître les charges des particules |
|
|
|
|
* On veut dans l'ordre des groupes definis par le terme entre crochet au debut du titre de la categorie |
|
|
|
|
*/ |
|
|
|
|
// If test option is Grouped By Categories |
|
|
|
|
if ($isRandomByCategory == 2) { |
|
|
|
@ -3897,4 +3898,56 @@ class Exercise { |
|
|
|
|
} |
|
|
|
|
return $list; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Calculate the max_score of the quiz, depending of question inside, and quiz advanced option |
|
|
|
|
*/ |
|
|
|
|
public function get_max_score() { |
|
|
|
|
$out_max_score = 0; |
|
|
|
|
$tab_question_list = $this->selectQuestionList(true); // list of question's id !!! the array key start at 1 !!! |
|
|
|
|
// test is randomQuestions - see field random of test |
|
|
|
|
if ($this->random > 0 && $this->randomByCat == 0) { |
|
|
|
|
$nb_random_questions = $this->random; |
|
|
|
|
$tab_questions_score = array(); |
|
|
|
|
for ($i=1; $i <= count($tab_question_list); $i++) { |
|
|
|
|
$tmpobj_question = Question::read($tab_question_list[$i]); |
|
|
|
|
$tab_questions_score[] = $tmpobj_question->weighting; |
|
|
|
|
} |
|
|
|
|
rsort($tab_questions_score); |
|
|
|
|
// add the first $nb_random_questions value of score array to get max_score |
|
|
|
|
for ($i=0; $i < min($nb_random_questions, count($tab_questions_score)); $i++) { |
|
|
|
|
$out_max_score += $tab_questions_score[$i]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// test is random by category |
|
|
|
|
// get the $nb_random_questions best score question of each category |
|
|
|
|
else if ($this->random > 0 && $this->randomByCat > 0) { |
|
|
|
|
$nb_random_questions = $this->random; |
|
|
|
|
$tab_categories_scores = array(); |
|
|
|
|
for ($i=1; $i <= count($tab_question_list); $i++) { |
|
|
|
|
$question_category_id = Testcategory::getCategoryForQuestion($tab_question_list[$i]); |
|
|
|
|
if (!is_array($tab_categories_scores[$question_category_id])) { |
|
|
|
|
$tab_categories_scores[$question_category_id] = array(); |
|
|
|
|
} |
|
|
|
|
$tmpobj_question = Question::read($tab_question_list[$i]); |
|
|
|
|
$tab_categories_scores[$question_category_id][] = $tmpobj_question->weighting; |
|
|
|
|
} |
|
|
|
|
// here we've got an array with first key, the category_id, second key, score of question for this cat |
|
|
|
|
while (list($key, $tab_scores) = each($tab_categories_scores)) { |
|
|
|
|
rsort($tab_scores); |
|
|
|
|
for ($i=0; $i < min($nb_random_questions, count($tab_scores)); $i++) { |
|
|
|
|
$out_max_score += $tab_scores[$i]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// standart test, just add each question score |
|
|
|
|
else { |
|
|
|
|
for ($i=1; $i <= count($tab_question_list); $i++) { |
|
|
|
|
$tmpobj_question = Question::read($tab_question_list[$i]); |
|
|
|
|
$out_max_score += $tmpobj_question->weighting; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return $out_max_score; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|