<?php 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								/* For licensing terms, see /license.txt */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								 * Class GlobalMultipleAnswer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								 */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								class GlobalMultipleAnswer extends Question
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								{
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								    static $typePicture = 'mcmagl.png';
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								    static $explanationLangVar = 'GlobalMultipleAnswer';
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    /**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								     *
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								     */
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								    public function __construct()
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								    {
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        parent::__construct();
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        $this->type = GLOBAL_MULTIPLE_ANSWER;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $this->isContent = $this->getIsContent();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    /**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								     * function which redefines Question::createAnswersForm
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								     * @param FormValidator $form
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								     */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    public function createAnswersForm($form)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $nb_answers = isset($_POST['nb_answers']) ? $_POST['nb_answers'] : 4;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $nb_answers += (isset($_POST['lessAnswers']) ? -1 : (isset($_POST['moreAnswers']) ? 1 : 0));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $obj_ex = $_SESSION['objExercise'];
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        /* Mise en variable de Affichage "Reponses" et son icone, "N<EFBFBD> ", "Vrai", "Reponse" */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $html = '< table  class = "data_table" > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                < tr > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                    < th  width = "10px" > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                        ' . get_lang('Number') . '
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                    < / th > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                    < th  width = "10px" > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                        ' . get_lang('True') . '
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                    < / th > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                    < th  width = "50%" > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                        ' . get_lang('Answer') . '
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                    < / th > ';
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $html .='< th > ' . get_lang('Comment') . '< / th > ';
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $html .='< / tr > ';
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $form->addElement('label', get_lang('Answers') . '< br  / >  < img  src = "../img/fill_field.png" > ', $html);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $defaults = array();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $correct = 0;
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        $answer = false;
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        if (!empty($this->id)) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $answer = new Answer($this->id);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $answer->read();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            if (count($answer->nbrAnswers) > 0 & &  !$form->isSubmitted()) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                $nb_answers = $answer->nbrAnswers;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        #le nombre de r<EFBFBD> ponses est bien enregistr<EFBFBD>  sous la forme int(nb)
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        /* Ajout mise en forme nb reponse */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $form->addElement('hidden', 'nb_answers');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $boxes_names = array();
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        /* V<EFBFBD> rification : Cr<EFBFBD> action d'au moins une r<EFBFBD> ponse */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        if ($nb_answers <  1 )  { 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $nb_answers = 1;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            Display::display_normal_message(get_lang('YouHaveToCreateAtLeastOneAnswer'));
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        //D<EFBFBD> but affichage score global dans la modification d'une question
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $scoreA = "0"; //par reponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $scoreG = "0"; //Global
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        /* boucle pour sauvegarder les donn<EFBFBD> es dans le tableau defaults */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        for ($i = 1; $i < = $nb_answers; ++$i) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            /* si la reponse est de type objet */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            if (is_object($answer)) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                $defaults['answer[' . $i . ']'] = $answer->answer[$i];
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                $defaults['comment[' . $i . ']'] = $answer->comment[$i];
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                $defaults['correct[' . $i . ']'] = $answer->correct[$i];
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								                // start
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								                $scoreA = $answer->weighting[$i];
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            if ($scoreA > 0) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                $scoreG = $scoreG + $scoreA;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            //------------- Fin
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            //------------- Debut si un des scores par reponse est egal <EFBFBD>  0 : la coche vaut 1 (coch<EFBFBD> )
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            if ($scoreA == 0) {
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								                $defaults['pts'] = 1;
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            $renderer = &  $form->defaultRenderer();
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            $renderer->setElementTemplate('< td > <!--  BEGIN error  --> < span  class = "form_error" > {error}< / span > <!--  END error  --> < br / > {element}< / td > ', 'correct['.$i.']');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $renderer->setElementTemplate('< td > <!--  BEGIN error  --> < span  class = "form_error" > {error}< / span > <!--  END error  --> < br / > {element}< / td > ', 'counter['.$i.']');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $renderer->setElementTemplate('< td > <!--  BEGIN error  --> < span  class = "form_error" > {error}< / span > <!--  END error  --> < br / > {element}< / td > ', 'answer['.$i.']');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $renderer->setElementTemplate('< td > <!--  BEGIN error  --> < span  class = "form_error" > {error}< / span > <!--  END error  --> < br / > {element}< / td > ', 'comment['.$i.']');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            //$renderer->setElementTemplate('< td > <!--  BEGIN error  --> < span  class = "form_error" > {error}< / span > <!--  END error  --> < br / > {element}< / td > ', 'weighting['.$i.']');
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            $answer_number = $form->addElement('text', 'counter[' . $i . ']', null, 'value="' . $i . '"');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $answer_number->freeze();
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            $form->addElement('checkbox', 'correct[' . $i . ']', null, null, 'class="checkbox"');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $boxes_names[] = 'correct[' . $i . ']';
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            $form->addElement('html_editor', 'answer[' . $i . ']', null, array(), array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100'));
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            $form->addRule('answer[' . $i . ']', get_lang('ThisFieldIsRequired'), 'required');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            $form->addElement('html_editor', 'comment[' . $i . ']', null, array(), array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100'));
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $form->addElement('html', '< / tr > ');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        //--------- Mise en variable du score global lors d'une modification de la question/r<EFBFBD> ponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $defaults['weighting[1]'] = (round($scoreG));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $form->addElement('html', '< / div > < / div > < / table > ');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        //$form -> addElement ('html', '< br  / > ');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $form->add_multiple_required_rule($boxes_names, get_lang('ChooseAtLeastOneCheckbox'), 'multiple_required');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        //only 1 answer the all deal ...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $form->addElement('text', 'weighting[1]', get_lang('Score'));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        global $pts;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        //--------- Creation coche pour ne pas prendre en compte les n<EFBFBD> gatifs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $form->addElement('checkbox', 'pts', '', get_lang('NoNegativeScore'));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $form->addElement('html', '< br  / > ');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        // Affiche un message si le score n'est pas renseign<EFBFBD> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $form->addRule('weighting[1]', get_lang('ThisFieldIsRequired'), 'required');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        global $text, $class;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        if ($obj_ex->edit_exercise_in_lp == true) {
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            $form->addButtonDelete(get_lang('LessAnswer'), 'lessAnswers');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $form->addButtonCreate(get_lang('PlusAnswer'), 'moreAnswers');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $form->addButtonSave($text, 'submitQuestion');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            // setting the save button here and not in the question class.php
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        $renderer->setElementTemplate('{element}  ', 'lessAnswers');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $renderer->setElementTemplate('{element}  ', 'submitQuestion');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $renderer->setElementTemplate('{element}', 'moreAnswers');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $form->addElement('html', '< / div > < / div > ');
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        $defaults['correct'] = $correct;
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        if (!empty($this->id)) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $form->setDefaults($defaults);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        } else {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            if ($this->isContent == 1) {
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								                $form->setDefaults($defaults);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        $form->setConstants(array('nb_answers' => $nb_answers));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								    /**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								     * abstract function which creates the form to create / edit the answers of the question
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								     * @param FormValidator $form
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								     */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    function processAnswersCreation($form)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $questionWeighting = $nbrGoodAnswers = 0;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $objAnswer = new Answer($this->id);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $nb_answers = $form->getSubmitValue('nb_answers');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        // Score total
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $answer_score = trim($form->getSubmitValue('weighting[1]'));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        // Reponses correctes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $nbr_corrects = 0;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        for ($i = 1; $i < = $nb_answers; $i++) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $goodAnswer = trim($form->getSubmitValue('correct[' . $i . ']'));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            if ($goodAnswer) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                $nbr_corrects++;
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        // Set question weighting (score total)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $questionWeighting = $answer_score;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        // Set score per answer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $nbr_corrects = $nbr_corrects == 0 ? 1 : $nbr_corrects;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $answer_score = $nbr_corrects == 0 ? 0 : $answer_score;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $answer_score = ($answer_score / $nbr_corrects);
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        //$answer_score <EFBFBD> quivaut <EFBFBD>  la valeur d'une bonne r<EFBFBD> ponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        // cr<EFBFBD> ation variable pour r<EFBFBD> cuperer la valeur de la coche pour la prise en compte des n<EFBFBD> gatifs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $test = $form->getSubmitValue('pts');
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        for ($i = 1; $i < = $nb_answers; $i++) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $answer = trim($form->getSubmitValue('answer[' . $i . ']'));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $comment = trim($form->getSubmitValue('comment[' . $i . ']'));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            $goodAnswer = trim($form->getSubmitValue('correct[' . $i . ']'));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            if ($goodAnswer) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                $weighting = abs($answer_score);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            } else {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                if ($test == 1) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								                    $weighting = 0;
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								                } else {
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								                    $weighting = -abs($answer_score);
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								                }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								            $objAnswer->createAnswer($answer, $goodAnswer, $comment, $weighting, $i);
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        // saves the answers into the data base
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $objAnswer->save();
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        // sets the total weighting of the question --> sert <EFBFBD>  donner le score total pendant l'examen
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $this->updateWeighting($questionWeighting);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $this->save();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    public function return_header(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $feedback_type = null,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $counter = null,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $score = null
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								    ) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $header = parent::return_header($feedback_type, $counter, $score);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $header .= '< table  class = "'.$this->question_table_class .'" > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        < tr > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            < th > ' . get_lang("Choice") . '< / th > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            < th > ' . get_lang("ExpectedChoice") . '< / th > 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								            < th > ' . get_lang("Answer") . '< / th > ';
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $header .= '< th > ' . get_lang("Comment") . '< / th > ';
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								 
							
							
								        $header .= '< / tr > ';
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								        return $header;
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								    }
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								 
							
							
								}