Completed
Push — 1.10.x ( 9d8f25...0ad4ea )
by Angel Fernando Quiroz
80:30 queued 40:12
created
main/exercice/hotspot.class.php 1 patch
Indentation   +102 added lines, -102 removed lines patch added patch discarded remove patch
@@ -12,78 +12,78 @@  discard block
 block discarded – undo
12 12
  **/
13 13
 class HotSpot extends Question
14 14
 {
15
-	static $typePicture = 'hotspot.png';
16
-	static $explanationLangVar = 'HotSpot';
17
-
18
-	public function __construct()
19
-	{
20
-		parent::__construct();
21
-		$this -> type = HOT_SPOT;
22
-	}
23
-
24
-	public function display()
25
-	{
26
-	}
27
-
28
-	/**
29
-	 * @param FormValidator $form
30
-	 * @param int $fck_config
31
-	 */
32
-	public function createForm (&$form, $fck_config=0)
33
-	{
34
-		parent::createForm($form, $fck_config);
35
-
36
-		if (!isset($_GET['editQuestion'])) {
37
-			$form->addElement('file','imageUpload',array('<img src="'.Display::return_icon('hotspot.png', null, null, ICON_SIZE_BIG, false, true).'" />', get_lang('UploadJpgPicture')) );
38
-
39
-			// setting the save button here and not in the question class.php
40
-			// Saving a question
41
-			$form->addButtonSave(get_lang('GoToQuestion'), 'submitQuestion');
42
-			//$form->addButtonSave(get_lang('GoToQuestion'), 'submitQuestion');
43
-			$form->addRule('imageUpload', get_lang('OnlyImagesAllowed'), 'filetype', array ('jpg', 'jpeg', 'png', 'gif'));
44
-			$form->addRule('imageUpload', get_lang('NoImage'), 'uploadedfile');
45
-		} else {
46
-			// setting the save button here and not in the question class.php
47
-			// Editing a question
48
-			$form->addButtonUpdate(get_lang('ModifyExercise'), 'submitQuestion');
49
-		}
50
-	}
51
-
52
-	/**
53
-	 * @param FormValidator $form
54
-	 * @param null $objExercise
55
-	 * @return null|false
56
-	 */
57
-	public function processCreation($form, $objExercise = null)
58
-	{
59
-		$file_info = $form->getSubmitValue('imageUpload');
60
-		$_course = api_get_course_info();
61
-		parent::processCreation($form, $objExercise);
62
-
63
-		if(!empty($file_info['tmp_name'])) {
64
-			$this->uploadPicture($file_info['tmp_name'], $file_info['name']);
65
-			$documentPath  = api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
66
-			$picturePath   = $documentPath.'/images';
67
-
68
-			// fixed width ang height
69
-			if (file_exists($picturePath.'/'.$this->picture)) {
70
-				$this->resizePicture('width', 800);
71
-				$this->save();
72
-			} else {
73
-				return false;
74
-			}
75
-		}
76
-	}
77
-
78
-	function createAnswersForm ($form)
79
-	{
80
-		// nothing
81
-	}
82
-
83
-	function processAnswersCreation ($form)
84
-	{
85
-		// nothing
86
-	}
15
+    static $typePicture = 'hotspot.png';
16
+    static $explanationLangVar = 'HotSpot';
17
+
18
+    public function __construct()
19
+    {
20
+        parent::__construct();
21
+        $this -> type = HOT_SPOT;
22
+    }
23
+
24
+    public function display()
25
+    {
26
+    }
27
+
28
+    /**
29
+     * @param FormValidator $form
30
+     * @param int $fck_config
31
+     */
32
+    public function createForm (&$form, $fck_config=0)
33
+    {
34
+        parent::createForm($form, $fck_config);
35
+
36
+        if (!isset($_GET['editQuestion'])) {
37
+            $form->addElement('file','imageUpload',array('<img src="'.Display::return_icon('hotspot.png', null, null, ICON_SIZE_BIG, false, true).'" />', get_lang('UploadJpgPicture')) );
38
+
39
+            // setting the save button here and not in the question class.php
40
+            // Saving a question
41
+            $form->addButtonSave(get_lang('GoToQuestion'), 'submitQuestion');
42
+            //$form->addButtonSave(get_lang('GoToQuestion'), 'submitQuestion');
43
+            $form->addRule('imageUpload', get_lang('OnlyImagesAllowed'), 'filetype', array ('jpg', 'jpeg', 'png', 'gif'));
44
+            $form->addRule('imageUpload', get_lang('NoImage'), 'uploadedfile');
45
+        } else {
46
+            // setting the save button here and not in the question class.php
47
+            // Editing a question
48
+            $form->addButtonUpdate(get_lang('ModifyExercise'), 'submitQuestion');
49
+        }
50
+    }
51
+
52
+    /**
53
+     * @param FormValidator $form
54
+     * @param null $objExercise
55
+     * @return null|false
56
+     */
57
+    public function processCreation($form, $objExercise = null)
58
+    {
59
+        $file_info = $form->getSubmitValue('imageUpload');
60
+        $_course = api_get_course_info();
61
+        parent::processCreation($form, $objExercise);
62
+
63
+        if(!empty($file_info['tmp_name'])) {
64
+            $this->uploadPicture($file_info['tmp_name'], $file_info['name']);
65
+            $documentPath  = api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
66
+            $picturePath   = $documentPath.'/images';
67
+
68
+            // fixed width ang height
69
+            if (file_exists($picturePath.'/'.$this->picture)) {
70
+                $this->resizePicture('width', 800);
71
+                $this->save();
72
+            } else {
73
+                return false;
74
+            }
75
+        }
76
+    }
77
+
78
+    function createAnswersForm ($form)
79
+    {
80
+        // nothing
81
+    }
82
+
83
+    function processAnswersCreation ($form)
84
+    {
85
+        // nothing
86
+    }
87 87
 }
88 88
 
89 89
 /**
@@ -91,35 +91,35 @@  discard block
 block discarded – undo
91 91
  */
92 92
 class HotSpotDelineation extends HotSpot
93 93
 {
94
-	static $typePicture = 'hotspot-delineation.png';
95
-	static $explanationLangVar = 'HotspotDelineation';
96
-
97
-	function __construct()
98
-	{
99
-		parent::__construct();
100
-		$this -> type = HOT_SPOT_DELINEATION;
101
-
102
-	}
103
-
104
-	function createForm (&$form, $fck_config=0)
105
-	{
106
-		parent::createForm ($form, $fck_config);
107
-	}
108
-
109
-	function processCreation ($form, $objExercise = null)
110
-	{
111
-		$file_info = $form -> getSubmitValue('imageUpload');
112
-		parent::processCreation ($form, $objExercise);
113
-	}
114
-
115
-	function createAnswersForm ($form)
116
-	{
117
-		parent::createAnswersForm ($form);
118
-	}
119
-
120
-	function processAnswersCreation ($form)
121
-	{
122
-		parent::processAnswersCreation ($form);
123
-	}
94
+    static $typePicture = 'hotspot-delineation.png';
95
+    static $explanationLangVar = 'HotspotDelineation';
96
+
97
+    function __construct()
98
+    {
99
+        parent::__construct();
100
+        $this -> type = HOT_SPOT_DELINEATION;
101
+
102
+    }
103
+
104
+    function createForm (&$form, $fck_config=0)
105
+    {
106
+        parent::createForm ($form, $fck_config);
107
+    }
108
+
109
+    function processCreation ($form, $objExercise = null)
110
+    {
111
+        $file_info = $form -> getSubmitValue('imageUpload');
112
+        parent::processCreation ($form, $objExercise);
113
+    }
114
+
115
+    function createAnswersForm ($form)
116
+    {
117
+        parent::createAnswersForm ($form);
118
+    }
119
+
120
+    function processAnswersCreation ($form)
121
+    {
122
+        parent::processAnswersCreation ($form);
123
+    }
124 124
 }
125 125
 
Please login to merge, or discard this patch.
main/exercice/answer.class.php 1 patch
Indentation   +301 added lines, -301 removed lines patch added patch discarded remove patch
@@ -157,12 +157,12 @@  discard block
 block discarded – undo
157 157
         return [];
158 158
     }
159 159
 
160
-     /**
161
-     * returns all answer ids from this question Id
162
-     *
163
-     * @author Yoselyn Castillo
164
-     * @return array - $id (answer ids)
165
-     */
160
+        /**
161
+         * returns all answer ids from this question Id
162
+         *
163
+         * @author Yoselyn Castillo
164
+         * @return array - $id (answer ids)
165
+         */
166 166
     public function selectAnswerId()
167 167
     {
168 168
         $TBL_ANSWER = Database::get_course_table(TABLE_QUIZ_ANSWER);
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
         }
183 183
 
184 184
         return $id;
185
-	}
185
+    }
186 186
 
187 187
     /**
188 188
      * Reads answer information from the data base ordered by parameter
@@ -193,23 +193,23 @@  discard block
 block discarded – undo
193 193
      */
194 194
     public function readOrderedBy($field, $order='ASC')
195 195
     {
196
-		$field = Database::escape_string($field);
197
-		if (empty($field)) {
198
-			$field = 'position';
199
-		}
196
+        $field = Database::escape_string($field);
197
+        if (empty($field)) {
198
+            $field = 'position';
199
+        }
200 200
 
201
-		if ($order != 'ASC' && $order!='DESC') {
202
-			$order = 'ASC';
203
-		}
201
+        if ($order != 'ASC' && $order!='DESC') {
202
+            $order = 'ASC';
203
+        }
204 204
 
205
-		$TBL_ANSWER = Database::get_course_table(TABLE_QUIZ_ANSWER);
206
-		$TBL_QUIZ = Database::get_course_table(TABLE_QUIZ_QUESTION);
207
-		$questionId = intval($this->questionId);
205
+        $TBL_ANSWER = Database::get_course_table(TABLE_QUIZ_ANSWER);
206
+        $TBL_QUIZ = Database::get_course_table(TABLE_QUIZ_QUESTION);
207
+        $questionId = intval($this->questionId);
208 208
 
209
-		$sql = "SELECT type FROM $TBL_QUIZ
209
+        $sql = "SELECT type FROM $TBL_QUIZ
210 210
 		        WHERE c_id = {$this->course_id} AND id = $questionId";
211
-		$result_question = Database::query($sql);
212
-		$questionType = Database::fetch_array($result_question);
211
+        $result_question = Database::query($sql);
212
+        $questionType = Database::fetch_array($result_question);
213 213
 
214 214
         if ($questionType['type'] == DRAGGABLE) {
215 215
             // Random is done by submit.js.tpl
@@ -218,7 +218,7 @@  discard block
 block discarded – undo
218 218
             return true;
219 219
         }
220 220
 
221
-		$sql = "SELECT
221
+        $sql = "SELECT
222 222
 		            answer,
223 223
 		            correct,
224 224
 		            comment,
@@ -234,16 +234,16 @@  discard block
 block discarded – undo
234 234
                     c_id = {$this->course_id} AND
235 235
                     question_id='".$questionId."'
236 236
                 ORDER BY $field $order";
237
-		$result=Database::query($sql);
238
-
239
-		$i = 1;
240
-		// while a record is found
241
-		$doubt_data = null;
242
-		while ($object = Database::fetch_object($result)) {
243
-		    if ($questionType['type'] == UNIQUE_ANSWER_NO_OPTION && $object->position == 666) {
244
-		        $doubt_data = $object;
237
+        $result=Database::query($sql);
238
+
239
+        $i = 1;
240
+        // while a record is found
241
+        $doubt_data = null;
242
+        while ($object = Database::fetch_object($result)) {
243
+            if ($questionType['type'] == UNIQUE_ANSWER_NO_OPTION && $object->position == 666) {
244
+                $doubt_data = $object;
245 245
                 continue;
246
-		    }
246
+            }
247 247
             $this->answer[$i] = $object->answer;
248 248
             $this->correct[$i] = $object->correct;
249 249
             $this->comment[$i] = $object->comment;
@@ -255,9 +255,9 @@  discard block
 block discarded – undo
255 255
             $this->autoId[$i] = $object->id_auto;
256 256
             $this->iid[$i] = $object->iid;
257 257
             $i++;
258
-		}
258
+        }
259 259
 
260
-		if ($questionType['type'] == UNIQUE_ANSWER_NO_OPTION && !empty($doubt_data)) {
260
+        if ($questionType['type'] == UNIQUE_ANSWER_NO_OPTION && !empty($doubt_data)) {
261 261
             $this->answer[$i] = $doubt_data->answer;
262 262
             $this->correct[$i] = $doubt_data->correct;
263 263
             $this->comment[$i] = $doubt_data->comment;
@@ -269,88 +269,88 @@  discard block
 block discarded – undo
269 269
             $this->autoId[$i] = $doubt_data->id_auto;
270 270
             $this->iid[$i] = $doubt_data->iid;
271 271
             $i++;
272
-	    }
272
+        }
273 273
         $this->nbrAnswers = $i-1;
274
-	}
275
-
276
-	/**
277
-	 * returns the autoincrement id identificator
278
-	 *
279
-	 * @author Juan Carlos Ra�a
280
-	 * @return integer - answer num
281
-	 */
274
+    }
275
+
276
+    /**
277
+     * returns the autoincrement id identificator
278
+     *
279
+     * @author Juan Carlos Ra�a
280
+     * @return integer - answer num
281
+     */
282 282
     public function selectAutoId($id)
283 283
     {
284
-		return isset($this->autoId[$id]) ? $this->autoId[$id] : 0;
285
-	}
286
-
287
-	/**
288
-	 * returns the number of answers in this question
289
-	 *
290
-	 * @author Olivier Brouckaert
291
-	 * @return integer - number of answers
292
-	 */
293
-	public function selectNbrAnswers()
284
+        return isset($this->autoId[$id]) ? $this->autoId[$id] : 0;
285
+    }
286
+
287
+    /**
288
+     * returns the number of answers in this question
289
+     *
290
+     * @author Olivier Brouckaert
291
+     * @return integer - number of answers
292
+     */
293
+    public function selectNbrAnswers()
294 294
     {
295
-		return $this->nbrAnswers;
296
-	}
297
-
298
-	/**
299
-	 * returns the question ID which the answers belong to
300
-	 *
301
-	 * @author Olivier Brouckaert
302
-	 * @return integer - the question ID
303
-	 */
304
-	public function selectQuestionId()
295
+        return $this->nbrAnswers;
296
+    }
297
+
298
+    /**
299
+     * returns the question ID which the answers belong to
300
+     *
301
+     * @author Olivier Brouckaert
302
+     * @return integer - the question ID
303
+     */
304
+    public function selectQuestionId()
305 305
     {
306
-		return $this->questionId;
307
-	}
308
-
309
-	/**
310
-	 * returns the question ID of the destination question
311
-	 *
312
-	 * @author Julio Montoya
313
-	 * @param integer $id
314
-	 * @return integer - the question ID
315
-	 */
316
-	public function selectDestination($id)
306
+        return $this->questionId;
307
+    }
308
+
309
+    /**
310
+     * returns the question ID of the destination question
311
+     *
312
+     * @author Julio Montoya
313
+     * @param integer $id
314
+     * @return integer - the question ID
315
+     */
316
+    public function selectDestination($id)
317 317
     {
318
-		return isset($this->destination[$id]) ? $this->destination[$id] : null;
319
-	}
318
+        return isset($this->destination[$id]) ? $this->destination[$id] : null;
319
+    }
320 320
 
321 321
     /**
322
-	 * returns the answer title
323
-	 *
324
-	 * @author Olivier Brouckaert
325
-	 * @param - integer $id - answer ID
326
-	 * @return string - answer title
327
-	 */
328
-	public function selectAnswer($id)
329
-	{
330
-		return isset($this->answer[$id]) ? $this->answer[$id] : null;
331
-	}
332
-
333
-	/**
334
-	 * return array answer by id else return a bool
335
-	 * @param integer $auto_id
336
-	 */
337
-	public function selectAnswerByAutoId($auto_id)
338
-	{
339
-		$TBL_ANSWER = Database::get_course_table(TABLE_QUIZ_ANSWER);
340
-
341
-		$auto_id = intval($auto_id);
342
-		$sql = "SELECT id, answer, id_auto FROM $TBL_ANSWER
322
+     * returns the answer title
323
+     *
324
+     * @author Olivier Brouckaert
325
+     * @param - integer $id - answer ID
326
+     * @return string - answer title
327
+     */
328
+    public function selectAnswer($id)
329
+    {
330
+        return isset($this->answer[$id]) ? $this->answer[$id] : null;
331
+    }
332
+
333
+    /**
334
+     * return array answer by id else return a bool
335
+     * @param integer $auto_id
336
+     */
337
+    public function selectAnswerByAutoId($auto_id)
338
+    {
339
+        $TBL_ANSWER = Database::get_course_table(TABLE_QUIZ_ANSWER);
340
+
341
+        $auto_id = intval($auto_id);
342
+        $sql = "SELECT id, answer, id_auto FROM $TBL_ANSWER
343 343
 				WHERE c_id = {$this->course_id} AND id_auto='$auto_id'";
344
-		$rs = Database::query($sql);
344
+        $rs = Database::query($sql);
345 345
 
346
-		if (Database::num_rows($rs) > 0) {
347
-			$row = Database::fetch_array($rs, 'ASSOC');
346
+        if (Database::num_rows($rs) > 0) {
347
+            $row = Database::fetch_array($rs, 'ASSOC');
348 348
 
349
-			return $row;
350
-		}
349
+            return $row;
350
+        }
351 351
 
352
-		return false;
353
-	}
352
+        return false;
353
+    }
354 354
 
355 355
     /**
356 356
      * returns the answer title from an answer's position
@@ -359,18 +359,18 @@  discard block
 block discarded – undo
359 359
      * @param - integer $id - answer ID
360 360
      * @return bool - answer title
361 361
      */
362
-	public function selectAnswerIdByPosition($pos)
363
-	{
364
-		foreach ($this->position as $k => $v) {
365
-			if ($v != $pos) {
366
-				continue;
367
-			}
362
+    public function selectAnswerIdByPosition($pos)
363
+    {
364
+        foreach ($this->position as $k => $v) {
365
+            if ($v != $pos) {
366
+                continue;
367
+            }
368 368
 
369
-			return $k;
370
-		}
369
+            return $k;
370
+        }
371 371
 
372
-		return false;
373
-	}
372
+        return false;
373
+    }
374 374
 
375 375
     /**
376 376
      * Returns a list of answers
@@ -379,18 +379,18 @@  discard block
 block discarded – undo
379 379
      * of (id, answer, comment, grade) and grade=weighting
380 380
      */
381 381
     public function getAnswersList($decode = false)
382
-     {
383
-	 	$list = array();
384
-         for ($i = 1; $i <= $this->nbrAnswers; $i++) {
385
-             if (!empty($this->answer[$i])) {
386
-
387
-	 			//Avoid problems when parsing elements with accents
388
-	 			if ($decode) {
389
-	        		$this->answer[$i] 	= api_html_entity_decode($this->answer[$i], ENT_QUOTES, api_get_system_encoding());
390
-	        		$this->comment[$i]	= api_html_entity_decode($this->comment[$i], ENT_QUOTES, api_get_system_encoding());
391
-	 			}
392
-
393
-	 			$list[] = array(
382
+        {
383
+            $list = array();
384
+            for ($i = 1; $i <= $this->nbrAnswers; $i++) {
385
+                if (!empty($this->answer[$i])) {
386
+
387
+                    //Avoid problems when parsing elements with accents
388
+                    if ($decode) {
389
+                    $this->answer[$i] 	= api_html_entity_decode($this->answer[$i], ENT_QUOTES, api_get_system_encoding());
390
+                    $this->comment[$i]	= api_html_entity_decode($this->comment[$i], ENT_QUOTES, api_get_system_encoding());
391
+                    }
392
+
393
+                    $list[] = array(
394 394
                     'id' => $i,
395 395
                     'answer' => $this->answer[$i],
396 396
                     'comment' => $this->comment[$i],
@@ -399,137 +399,137 @@  discard block
 block discarded – undo
399 399
                     'hotspot_type' => $this->hotspot_type[$i],
400 400
                     'correct' => $this->correct[$i],
401 401
                     'destination' => $this->destination[$i]
402
-				);
402
+                );
403
+            }
403 404
             }
404
-	 	}
405 405
 
406
-	 	return $list;
407
-	 }
406
+            return $list;
407
+        }
408 408
 
409
-	/**
410
-	 * Returns a list of grades
411
-	 * @author Yannick Warnier <[email protected]>
412
-	 * @return array	List of grades where grade=weighting (?)
413
-	 */
409
+    /**
410
+     * Returns a list of grades
411
+     * @author Yannick Warnier <[email protected]>
412
+     * @return array	List of grades where grade=weighting (?)
413
+     */
414 414
     public function getGradesList()
415
-     {
416
-	 	$list = array();
417
-	 	for ($i = 0; $i<$this->nbrAnswers;$i++){
418
-	 		if(!empty($this->answer[$i])){
419
-	 			$list[$i] = $this->weighting[$i];
420
-	 		}
421
-	 	}
422
-	 	return $list;
423
-	 }
424
-
425
-	 /**
426
-	  * Returns the question type
427
-	  * @author	Yannick Warnier <[email protected]>
428
-	  * @return	integer	The type of the question this answer is bound to
429
-	  */
415
+        {
416
+            $list = array();
417
+            for ($i = 0; $i<$this->nbrAnswers;$i++){
418
+                if(!empty($this->answer[$i])){
419
+                    $list[$i] = $this->weighting[$i];
420
+                }
421
+            }
422
+            return $list;
423
+        }
424
+
425
+        /**
426
+         * Returns the question type
427
+         * @author	Yannick Warnier <[email protected]>
428
+         * @return	integer	The type of the question this answer is bound to
429
+         */
430 430
     public function getQuestionType()
431
-     {
432
-	 	$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION);
433
-	 	$sql = "SELECT type FROM $TBL_QUESTIONS
431
+        {
432
+            $TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION);
433
+            $sql = "SELECT type FROM $TBL_QUESTIONS
434 434
 	 	        WHERE c_id = {$this->course_id} AND id = '".$this->questionId."'";
435
-	 	$res = Database::query($sql);
436
-	 	if (Database::num_rows($res)<=0){
437
-	 		return null;
438
-	 	}
439
-	 	$row = Database::fetch_array($res);
440
-
441
-	 	return $row['type'];
442
-	 }
443
-
444
-
445
-	/**
446
-	 * tells if answer is correct or not
447
-	 *
448
-	 * @author Olivier Brouckaert
449
-	 * @param - integer $id - answer ID
450
-	 * @return integer - 0 if bad answer, not 0 if good answer
451
-	 */
435
+            $res = Database::query($sql);
436
+            if (Database::num_rows($res)<=0){
437
+                return null;
438
+            }
439
+            $row = Database::fetch_array($res);
440
+
441
+            return $row['type'];
442
+        }
443
+
444
+
445
+    /**
446
+     * tells if answer is correct or not
447
+     *
448
+     * @author Olivier Brouckaert
449
+     * @param - integer $id - answer ID
450
+     * @return integer - 0 if bad answer, not 0 if good answer
451
+     */
452 452
     public function isCorrect($id)
453
-	{
454
-		return isset($this->correct[$id]) ? $this->correct[$id] : null;
455
-	}
456
-
457
-	/**
458
-	 * returns answer comment
459
-	 *
460
-	 * @author Olivier Brouckaert
461
-	 * @param - integer $id - answer ID
462
-	 * @return string - answer comment
463
-	 */
453
+    {
454
+        return isset($this->correct[$id]) ? $this->correct[$id] : null;
455
+    }
456
+
457
+    /**
458
+     * returns answer comment
459
+     *
460
+     * @author Olivier Brouckaert
461
+     * @param - integer $id - answer ID
462
+     * @return string - answer comment
463
+     */
464 464
     public function selectComment($id)
465
-	{
465
+    {
466 466
         return isset($this->comment[$id]) ? $this->comment[$id] : null;
467
-	}
468
-
469
-	/**
470
-	 * returns answer weighting
471
-	 *
472
-	 * @author Olivier Brouckaert
473
-	 * @param - integer $id - answer ID
474
-	 * @param integer $id
475
-	 * @return integer - answer weighting
476
-	 */
467
+    }
468
+
469
+    /**
470
+     * returns answer weighting
471
+     *
472
+     * @author Olivier Brouckaert
473
+     * @param - integer $id - answer ID
474
+     * @param integer $id
475
+     * @return integer - answer weighting
476
+     */
477 477
     public function selectWeighting($id)
478
-	{
479
-		return isset($this->weighting[$id]) ? $this->weighting[$id] : null;
480
-	}
481
-
482
-	/**
483
-	 * returns answer position
484
-	 *
485
-	 * @author Olivier Brouckaert
486
-	 * @param - integer $id - answer ID
487
-	 * @return integer - answer position
488
-	 */
489
-	function selectPosition($id)
490
-	{
491
-		return isset($this->position[$id]) ? $this->position[$id] : null;
492
-	}
493
-
494
-	/**
495
-	 * returns answer hotspot coordinates
496
-	 *
497
-	 * @author	Olivier Brouckaert
498
-	 * @param	integer	Answer ID
499
-	 * @param integer $id
500
-	 * @return	integer	Answer position
501
-	 */
478
+    {
479
+        return isset($this->weighting[$id]) ? $this->weighting[$id] : null;
480
+    }
481
+
482
+    /**
483
+     * returns answer position
484
+     *
485
+     * @author Olivier Brouckaert
486
+     * @param - integer $id - answer ID
487
+     * @return integer - answer position
488
+     */
489
+    function selectPosition($id)
490
+    {
491
+        return isset($this->position[$id]) ? $this->position[$id] : null;
492
+    }
493
+
494
+    /**
495
+     * returns answer hotspot coordinates
496
+     *
497
+     * @author	Olivier Brouckaert
498
+     * @param	integer	Answer ID
499
+     * @param integer $id
500
+     * @return	integer	Answer position
501
+     */
502 502
     public function selectHotspotCoordinates($id)
503
-	{
504
-		return isset($this->hotspot_coordinates[$id]) ? $this->hotspot_coordinates[$id] : null;
505
-	}
506
-
507
-	/**
508
-	 * returns answer hotspot type
509
-	 *
510
-	 * @author	Toon Keppens
511
-	 * @param	integer		Answer ID
512
-	 * @param integer $id
513
-	 * @return	integer		Answer position
514
-	 */
503
+    {
504
+        return isset($this->hotspot_coordinates[$id]) ? $this->hotspot_coordinates[$id] : null;
505
+    }
506
+
507
+    /**
508
+     * returns answer hotspot type
509
+     *
510
+     * @author	Toon Keppens
511
+     * @param	integer		Answer ID
512
+     * @param integer $id
513
+     * @return	integer		Answer position
514
+     */
515 515
     public function selectHotspotType($id)
516
-	{
517
-		return isset($this->hotspot_type[$id]) ? $this->hotspot_type[$id] : null;
518
-	}
519
-
520
-	/**
521
-	 * Creates a new answer
522
-	 *
523
-	 * @author Olivier Brouckaert
524
-	 * @param string 	$answer answer title
525
-	 * @param integer 	$correct 0 if bad answer, not 0 if good answer
526
-	 * @param string 	$comment answer comment
527
-	 * @param integer 	$weighting answer weighting
528
-	 * @param integer 	$position answer position
529
-	 * @param array    $new_hotspot_coordinates Coordinates for hotspot exercises (optional)
530
-	 * @param integer	$new_hotspot_type Type for hotspot exercises (optional)
516
+    {
517
+        return isset($this->hotspot_type[$id]) ? $this->hotspot_type[$id] : null;
518
+    }
519
+
520
+    /**
521
+     * Creates a new answer
522
+     *
523
+     * @author Olivier Brouckaert
524
+     * @param string 	$answer answer title
525
+     * @param integer 	$correct 0 if bad answer, not 0 if good answer
526
+     * @param string 	$comment answer comment
527
+     * @param integer 	$weighting answer weighting
528
+     * @param integer 	$position answer position
529
+     * @param array    $new_hotspot_coordinates Coordinates for hotspot exercises (optional)
530
+     * @param integer	$new_hotspot_type Type for hotspot exercises (optional)
531 531
      * @param string   $destination
532
-	 */
532
+     */
533 533
     public function createAnswer(
534 534
         $answer,
535 535
         $correct,
@@ -540,7 +540,7 @@  discard block
 block discarded – undo
540 540
         $new_hotspot_type = null,
541 541
         $destination = ''
542 542
     ) {
543
-		$this->new_nbrAnswers++;
543
+        $this->new_nbrAnswers++;
544 544
         $id = $this->new_nbrAnswers;
545 545
         $this->new_answer[$id] = $answer;
546 546
         $this->new_correct[$id] = $correct;
@@ -550,7 +550,7 @@  discard block
 block discarded – undo
550 550
         $this->new_hotspot_coordinates[$id] = $new_hotspot_coordinates;
551 551
         $this->new_hotspot_type[$id] = $new_hotspot_type;
552 552
         $this->new_destination[$id] = $destination;
553
-	}
553
+    }
554 554
 
555 555
     /**
556 556
      * Updates an answer
@@ -591,31 +591,31 @@  discard block
 block discarded – undo
591 591
         ];
592 592
 
593 593
         Database::update($answerTable, $params, ['iid = ?' => intval($iid)]);
594
-	}
594
+    }
595 595
 
596
-	/**
597
-	 * Records answers into the data base
598
-	 *
599
-	 * @author Olivier Brouckaert
600
-	 */
596
+    /**
597
+     * Records answers into the data base
598
+     *
599
+     * @author Olivier Brouckaert
600
+     */
601 601
     public function save()
602 602
     {
603
-		$answerTable = Database::get_course_table(TABLE_QUIZ_ANSWER);
604
-		$questionId = intval($this->questionId);
603
+        $answerTable = Database::get_course_table(TABLE_QUIZ_ANSWER);
604
+        $questionId = intval($this->questionId);
605 605
 
606
-		$c_id = $this->course['real_id'];
606
+        $c_id = $this->course['real_id'];
607 607
         $correctList = [];
608 608
         $answerList = [];
609 609
 
610
-		for ($i=1; $i <= $this->new_nbrAnswers; $i++) {
611
-			$answer = $this->new_answer[$i];
612
-			$correct = $this->new_correct[$i];
613
-			$comment = $this->new_comment[$i];
614
-			$weighting = $this->new_weighting[$i];
615
-			$position = $this->new_position[$i];
616
-			$hotspot_coordinates = $this->new_hotspot_coordinates[$i];
617
-			$hotspot_type = $this->new_hotspot_type[$i];
618
-			$destination = $this->new_destination[$i];
610
+        for ($i=1; $i <= $this->new_nbrAnswers; $i++) {
611
+            $answer = $this->new_answer[$i];
612
+            $correct = $this->new_correct[$i];
613
+            $comment = $this->new_comment[$i];
614
+            $weighting = $this->new_weighting[$i];
615
+            $position = $this->new_position[$i];
616
+            $hotspot_coordinates = $this->new_hotspot_coordinates[$i];
617
+            $hotspot_type = $this->new_hotspot_type[$i];
618
+            $destination = $this->new_destination[$i];
619 619
             $autoId = $this->selectAutoId($i);
620 620
             $iid = isset($this->iid[$i]) ? $this->iid[$i] : 0;
621 621
 
@@ -714,37 +714,37 @@  discard block
 block discarded – undo
714 714
             }
715 715
         }
716 716
 
717
-		// moves $new_* arrays
718
-		$this->answer = $this->new_answer;
719
-		$this->correct = $this->new_correct;
720
-		$this->comment = $this->new_comment;
721
-		$this->weighting = $this->new_weighting;
722
-		$this->position = $this->new_position;
723
-		$this->hotspot_coordinates = $this->new_hotspot_coordinates;
724
-		$this->hotspot_type = $this->new_hotspot_type;
725
-
726
-		$this->nbrAnswers = $this->new_nbrAnswers;
727
-		$this->destination = $this->new_destination;
728
-		// clears $new_* arrays
729
-
730
-		$this->cancel();
731
-	}
732
-
733
-	/**
734
-	 * Duplicates answers by copying them into another question
735
-	 *
736
-	 * @author Olivier Brouckaert
737
-	 * @param  int question id
717
+        // moves $new_* arrays
718
+        $this->answer = $this->new_answer;
719
+        $this->correct = $this->new_correct;
720
+        $this->comment = $this->new_comment;
721
+        $this->weighting = $this->new_weighting;
722
+        $this->position = $this->new_position;
723
+        $this->hotspot_coordinates = $this->new_hotspot_coordinates;
724
+        $this->hotspot_type = $this->new_hotspot_type;
725
+
726
+        $this->nbrAnswers = $this->new_nbrAnswers;
727
+        $this->destination = $this->new_destination;
728
+        // clears $new_* arrays
729
+
730
+        $this->cancel();
731
+    }
732
+
733
+    /**
734
+     * Duplicates answers by copying them into another question
735
+     *
736
+     * @author Olivier Brouckaert
737
+     * @param  int question id
738 738
      * @param  array destination course info (result of the function api_get_course_info() )
739 739
      * @param string $newQuestionId
740
-	 */
740
+     */
741 741
     public function duplicate($newQuestionId, $course_info = null)
742 742
     {
743 743
         if (empty($course_info)) {
744 744
             $course_info = $this->course;
745 745
         }
746 746
 
747
-		$TBL_REPONSES = Database :: get_course_table(TABLE_QUIZ_ANSWER);
747
+        $TBL_REPONSES = Database :: get_course_table(TABLE_QUIZ_ANSWER);
748 748
         $fixed_list = array();
749 749
 
750 750
         if (self::getQuestionType() == MULTIPLE_ANSWER_TRUE_FALSE ||
@@ -758,7 +758,7 @@  discard block
 block discarded – undo
758 758
 
759 759
             if (!empty($origin_options)) {
760 760
                 foreach ($origin_options as $item) {
761
-            	   $new_option_list[] = $item['id'];
761
+                    $new_option_list[] = $item['id'];
762 762
                 }
763 763
             }
764 764
 
@@ -772,12 +772,12 @@  discard block
 block discarded – undo
772 772
             }
773 773
         }
774 774
 
775
-		// if at least one answer
776
-		if ($this->nbrAnswers) {
777
-			// inserts new answers into data base
778
-			$c_id = $course_info['real_id'];
775
+        // if at least one answer
776
+        if ($this->nbrAnswers) {
777
+            // inserts new answers into data base
778
+            $c_id = $course_info['real_id'];
779 779
 
780
-			for ($i=1;$i <= $this->nbrAnswers;$i++) {
780
+            for ($i=1;$i <= $this->nbrAnswers;$i++) {
781 781
                 if ($this->course['id'] != $course_info['id']) {
782 782
                     $this->answer[$i] = DocumentManager::replace_urls_inside_content_html_from_copy_course(
783 783
                         $this->answer[$i],
@@ -791,8 +791,8 @@  discard block
 block discarded – undo
791 791
                     );
792 792
                 }
793 793
 
794
-				$answer = $this->answer[$i];
795
-				$correct = $this->correct[$i];
794
+                $answer = $this->answer[$i];
795
+                $correct = $this->correct[$i];
796 796
 
797 797
                 if (self::getQuestionType() == MULTIPLE_ANSWER_TRUE_FALSE ||
798 798
                     self::getQuestionType() == MULTIPLE_ANSWER_TRUE_FALSE
@@ -800,12 +800,12 @@  discard block
 block discarded – undo
800 800
                     $correct = $fixed_list[intval($correct)];
801 801
                 }
802 802
 
803
-				$comment = $this->comment[$i];
804
-				$weighting = $this->weighting[$i];
805
-				$position = $this->position[$i];
806
-				$hotspot_coordinates = $this->hotspot_coordinates[$i];
807
-				$hotspot_type = $this->hotspot_type[$i];
808
-				$destination = $this->destination[$i];
803
+                $comment = $this->comment[$i];
804
+                $weighting = $this->weighting[$i];
805
+                $position = $this->position[$i];
806
+                $hotspot_coordinates = $this->hotspot_coordinates[$i];
807
+                $hotspot_type = $this->hotspot_type[$i];
808
+                $destination = $this->destination[$i];
809 809
 
810 810
                 $params = [
811 811
                     'c_id' => $c_id,
@@ -825,9 +825,9 @@  discard block
 block discarded – undo
825 825
                     $sql = "UPDATE $TBL_REPONSES SET id = iid, id_auto = iid WHERE iid = $id";
826 826
                     Database::query($sql);
827 827
                 }
828
-			}
828
+            }
829 829
         }
830
-	}
830
+    }
831 831
 
832 832
     /**
833 833
      * Get the necessary JavaScript for some answers
Please login to merge, or discard this patch.
main/exercice/fill_blanks.class.php 1 patch
Indentation   +68 added lines, -68 removed lines patch added patch discarded remove patch
@@ -728,43 +728,43 @@  discard block
 block discarded – undo
728 728
     }
729 729
 
730 730
     /**
731
-    * Return an array of student state answers for fill the blank questions
732
-    * for each students that answered the question
733
-    * -2  : didn't answer
734
-    * -1  : student answer is wrong
735
-    *  0  : student answer is correct
736
-    * >0  : for fill the blank question with choice menu, is the index of the student answer (right answer indice is 0)
737
-    *
738
-    * @param integer $testId
739
-    * @param integer $questionId
740
-    * @param $studentsIdList
741
-    * @param string $startDate
742
-    * @param string $endDate
743
-    * @param bool $useLastAnswerredAttempt
744
-    * @return array
745
-    * (
746
-    *     [student_id] => Array
747
-    *         (
748
-    *             [first fill the blank for question] => -1
749
-    *             [second fill the blank for question] => 2
750
-    *             [third fill the blank for question] => -1
751
-    *         )
752
-    * )
753
-    */
731
+     * Return an array of student state answers for fill the blank questions
732
+     * for each students that answered the question
733
+     * -2  : didn't answer
734
+     * -1  : student answer is wrong
735
+     *  0  : student answer is correct
736
+     * >0  : for fill the blank question with choice menu, is the index of the student answer (right answer indice is 0)
737
+     *
738
+     * @param integer $testId
739
+     * @param integer $questionId
740
+     * @param $studentsIdList
741
+     * @param string $startDate
742
+     * @param string $endDate
743
+     * @param bool $useLastAnswerredAttempt
744
+     * @return array
745
+     * (
746
+     *     [student_id] => Array
747
+     *         (
748
+     *             [first fill the blank for question] => -1
749
+     *             [second fill the blank for question] => 2
750
+     *             [third fill the blank for question] => -1
751
+     *         )
752
+     * )
753
+     */
754 754
     public static function getFillTheBlankTabResult($testId, $questionId, $studentsIdList, $startDate, $endDate, $useLastAnswerredAttempt = true) {
755 755
 
756
-       $tblTrackEAttempt = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
757
-       $tblTrackEExercise = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
758
-       $courseId = api_get_course_int_id();
756
+        $tblTrackEAttempt = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
757
+        $tblTrackEExercise = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
758
+        $courseId = api_get_course_int_id();
759 759
 
760
-       require_once api_get_path(SYS_PATH).'main/exercice/fill_blanks.class.php';
760
+        require_once api_get_path(SYS_PATH).'main/exercice/fill_blanks.class.php';
761 761
 
762
-       // request to have all the answers of student for this question
763
-       // student may have doing it several time
764
-       // student may have not answered the bracket id, in this case, is result of the answer is empty
762
+        // request to have all the answers of student for this question
763
+        // student may have doing it several time
764
+        // student may have not answered the bracket id, in this case, is result of the answer is empty
765 765
 
766
-       // we got the less recent attempt first
767
-       $sql = '
766
+        // we got the less recent attempt first
767
+        $sql = '
768 768
            SELECT * FROM '.$tblTrackEAttempt.' tea
769 769
 
770 770
            LEFT JOIN '.$tblTrackEExercise.' tee
@@ -780,49 +780,49 @@  discard block
 block discarded – undo
780 780
            ORDER BY user_id, tea.exe_id;
781 781
        ';
782 782
 
783
-       $res = Database::query($sql);
784
-       $tabUserResult = array();
785
-       $bracketNumber = 0;
786
-       // foreach attempts for all students starting with his older attempt
787
-       while ($data = Database::fetch_array($res)) {
788
-           $tabAnswer = FillBlanks::getAnswerInfo($data['answer'], true);
783
+        $res = Database::query($sql);
784
+        $tabUserResult = array();
785
+        $bracketNumber = 0;
786
+        // foreach attempts for all students starting with his older attempt
787
+        while ($data = Database::fetch_array($res)) {
788
+            $tabAnswer = FillBlanks::getAnswerInfo($data['answer'], true);
789 789
 
790
-           // for each bracket to find in this question
791
-           foreach ($tabAnswer['studentanswer'] as $bracketNumber => $studentAnswer) {
790
+            // for each bracket to find in this question
791
+            foreach ($tabAnswer['studentanswer'] as $bracketNumber => $studentAnswer) {
792 792
 
793
-               if ($tabAnswer['studentanswer'][$bracketNumber] != '') {
794
-                   // student has answered this bracket, cool
795
-                   switch (FillBlanks::getFillTheBlankAnswerType($tabAnswer['tabwords'][$bracketNumber])) {
796
-                       case self::FILL_THE_BLANK_MENU :
793
+                if ($tabAnswer['studentanswer'][$bracketNumber] != '') {
794
+                    // student has answered this bracket, cool
795
+                    switch (FillBlanks::getFillTheBlankAnswerType($tabAnswer['tabwords'][$bracketNumber])) {
796
+                        case self::FILL_THE_BLANK_MENU :
797 797
                            // get the indice of the choosen answer in the menu
798 798
                            // we know that the right answer is the first entry of the menu, ie 0
799 799
                            // (remember, menu entries are shuffled when taking the test)
800 800
                            $tabUserResult[$data['user_id']][$bracketNumber] = FillBlanks::getFillTheBlankMenuAnswerNum($tabAnswer['tabwords'][$bracketNumber], $tabAnswer['studentanswer'][$bracketNumber]);
801
-                           break;
802
-                       default :
801
+                            break;
802
+                        default :
803 803
                            if (FillBlanks::isGoodStudentAnswer($tabAnswer['studentanswer'][$bracketNumber], $tabAnswer['tabwords'][$bracketNumber])) {
804
-                               $tabUserResult[$data['user_id']][$bracketNumber] = 0;   //  right answer
805
-                           } else {
806
-                               $tabUserResult[$data['user_id']][$bracketNumber] = -1;  // wrong answer
807
-                           }
808
-                   }
809
-               } else {
810
-                   // student didn't answer this bracket
811
-                   if ($useLastAnswerredAttempt) {
812
-                       // if we take into account the last answered attempt
813
-                       if (!isset($tabUserResult[$data['user_id']][$bracketNumber])) {
814
-                           $tabUserResult[$data['user_id']][$bracketNumber] = -2;      // not answered
815
-                       }
816
-                   } else {
817
-                       // we take the last attempt, even if the student answer the question before
818
-                       $tabUserResult[$data['user_id']][$bracketNumber] = -2;      // not answered
819
-                   }
820
-               }
821
-           }
822
-
823
-
824
-       }
825
-       return $tabUserResult;
804
+                                $tabUserResult[$data['user_id']][$bracketNumber] = 0;   //  right answer
805
+                            } else {
806
+                                $tabUserResult[$data['user_id']][$bracketNumber] = -1;  // wrong answer
807
+                            }
808
+                    }
809
+                } else {
810
+                    // student didn't answer this bracket
811
+                    if ($useLastAnswerredAttempt) {
812
+                        // if we take into account the last answered attempt
813
+                        if (!isset($tabUserResult[$data['user_id']][$bracketNumber])) {
814
+                            $tabUserResult[$data['user_id']][$bracketNumber] = -2;      // not answered
815
+                        }
816
+                    } else {
817
+                        // we take the last attempt, even if the student answer the question before
818
+                        $tabUserResult[$data['user_id']][$bracketNumber] = -2;      // not answered
819
+                    }
820
+                }
821
+            }
822
+
823
+
824
+        }
825
+        return $tabUserResult;
826 826
     }
827 827
 
828 828
 
Please login to merge, or discard this patch.
main/exercice/TestCategory.php 1 patch
Indentation   +486 added lines, -486 removed lines patch added patch discarded remove patch
@@ -13,11 +13,11 @@  discard block
 block discarded – undo
13 13
     public $name;
14 14
     public $description;
15 15
 
16
-	/**
17
-	 * Constructor of the class Category
18
-	 * If you give an in_id and no in_name, you get info concerning the category of id=in_id
19
-	 * otherwise, you've got an category objet avec your in_id, in_name, in_descr
20
-	 *
16
+    /**
17
+     * Constructor of the class Category
18
+     * If you give an in_id and no in_name, you get info concerning the category of id=in_id
19
+     * otherwise, you've got an category objet avec your in_id, in_name, in_descr
20
+     *
21 21
      * @param int    $id
22 22
      * @param string $name
23 23
      * @param string $description
@@ -61,9 +61,9 @@  discard block
 block discarded – undo
61 61
         }
62 62
     }
63 63
 
64
-	/**
64
+    /**
65 65
      * add TestCategory in the database if name doesn't already exists
66
-	 */
66
+     */
67 67
     public function addCategoryInBDD()
68 68
     {
69 69
         $table = Database :: get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
@@ -108,12 +108,12 @@  discard block
 block discarded – undo
108 108
 
109 109
             return false;
110 110
         }
111
-	}
111
+    }
112 112
 
113
-	/**
113
+    /**
114 114
      * Removes the category from the database
115 115
      * if there were question in this category, the link between question and category is removed
116
-	 */
116
+     */
117 117
     public function removeCategory()
118 118
     {
119 119
         $table = Database :: get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
@@ -143,11 +143,11 @@  discard block
 block discarded – undo
143 143
 
144 144
             return true;
145 145
         }
146
-	}
146
+    }
147 147
 
148
-	/**
148
+    /**
149 149
      * Modify category name or description of category with id=in_id
150
-	 */
150
+     */
151 151
     public function modifyCategory()
152 152
     {
153 153
         $table = Database :: get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
@@ -175,40 +175,40 @@  discard block
 block discarded – undo
175 175
 
176 176
             return true;
177 177
         }
178
-	}
178
+    }
179 179
 
180
-	/**
180
+    /**
181 181
      * Gets the number of question of category id=in_id
182
-	 */
182
+     */
183 183
     public function getCategoryQuestionsNumber()
184 184
     {
185
-		$table = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
186
-		$in_id = intval($this->id);
187
-		$sql = "SELECT count(*) AS nb
185
+        $table = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
186
+        $in_id = intval($this->id);
187
+        $sql = "SELECT count(*) AS nb
188 188
 		        FROM $table
189 189
 		        WHERE category_id=$in_id AND c_id=".api_get_course_int_id();
190
-		$res = Database::query($sql);
191
-		$row = Database::fetch_array($res);
190
+        $res = Database::query($sql);
191
+        $row = Database::fetch_array($res);
192 192
 
193
-		return $row['nb'];
194
-	}
193
+        return $row['nb'];
194
+    }
195 195
 
196 196
     /**
197 197
      * @param string $in_color
198 198
      */
199 199
     public function display($in_color="#E0EBF5")
200 200
     {
201
-		echo "<textarea style='background-color:$in_color; width:60%; height:100px;'>";
202
-		print_r($this);
203
-		echo "</textarea>";
204
-	}
201
+        echo "<textarea style='background-color:$in_color; width:60%; height:100px;'>";
202
+        print_r($this);
203
+        echo "</textarea>";
204
+    }
205 205
 
206
-	/**
206
+    /**
207 207
      * Return an array of all Category objects in the database
208
-	 * If in_field=="" Return an array of all category objects in the database
209
-	 * Otherwise, return an array of all in_field value
210
-	 * in the database (in_field = id or name or description)
211
-	 */
208
+     * If in_field=="" Return an array of all category objects in the database
209
+     * Otherwise, return an array of all in_field value
210
+     * in the database (in_field = id or name or description)
211
+     */
212 212
     public static function getCategoryListInfo($in_field = "", $courseId = "")
213 213
     {
214 214
         if (empty($courseId) || $courseId=="") {
@@ -239,8 +239,8 @@  discard block
 block discarded – undo
239 239
             }
240 240
         }
241 241
 
242
-		return $tabres;
243
-	}
242
+        return $tabres;
243
+    }
244 244
 
245 245
     /**
246 246
      * Return the TestCategory id for question with question_id = $questionId
@@ -251,210 +251,210 @@  discard block
 block discarded – undo
251 251
      *
252 252
      * @return int
253 253
      */
254
-	public static function getCategoryForQuestion($questionId, $courseId ="")
254
+    public static function getCategoryForQuestion($questionId, $courseId ="")
255 255
     {
256
-		$result = 0;
256
+        $result = 0;
257 257
         if (empty($courseId) || $courseId == "") {
258 258
             $courseId = api_get_course_int_id();
259 259
         }
260
-		$table = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
260
+        $table = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
261 261
         $questionId = intval($questionId);
262
-		$sql = "SELECT category_id
262
+        $sql = "SELECT category_id
263 263
 		        FROM $table
264 264
 		        WHERE question_id = $questionId AND c_id = $courseId";
265
-		$res = Database::query($sql);
266
-		if (Database::num_rows($res) > 0) {
265
+        $res = Database::query($sql);
266
+        if (Database::num_rows($res) > 0) {
267 267
             $data = Database::fetch_array($res);
268
-			$result = $data['category_id'];
269
-		}
268
+            $result = $data['category_id'];
269
+        }
270 270
 
271
-		return $result;
272
-	}
271
+        return $result;
272
+    }
273 273
 
274
-	/**
275
-	 * true if question id has a category
276
-	 */
277
-	public static function isQuestionHasCategory($questionId)
274
+    /**
275
+     * true if question id has a category
276
+     */
277
+    public static function isQuestionHasCategory($questionId)
278 278
     {
279
-		if (TestCategory::getCategoryForQuestion($questionId) > 0) {
280
-			return true;
281
-		}
282
-		return false;
283
-	}
279
+        if (TestCategory::getCategoryForQuestion($questionId) > 0) {
280
+            return true;
281
+        }
282
+        return false;
283
+    }
284 284
 
285
-	/**
285
+    /**
286 286
 	 Return the category name for question with question_id = $questionId
287 287
 	 In this version, a question has only 1 category.
288 288
 	 Return the category id, "" if none
289
-	 */
289
+     */
290 290
     public static function getCategoryNameForQuestion(
291 291
         $questionId,
292 292
         $courseId = ""
293 293
     ) {
294
-		if (empty($courseId) || $courseId=="") {
295
-			$courseId = api_get_course_int_id();
296
-		}
297
-		$catid = TestCategory::getCategoryForQuestion($questionId, $courseId);
298
-		$result = "";	// result
299
-		$table = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
300
-		$catid = intval($catid);
301
-		$sql = "SELECT title FROM $table
294
+        if (empty($courseId) || $courseId=="") {
295
+            $courseId = api_get_course_int_id();
296
+        }
297
+        $catid = TestCategory::getCategoryForQuestion($questionId, $courseId);
298
+        $result = "";	// result
299
+        $table = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
300
+        $catid = intval($catid);
301
+        $sql = "SELECT title FROM $table
302 302
 		        WHERE id = $catid  AND c_id = $courseId";
303
-		$res = Database::query($sql);
304
-		$data = Database::fetch_array($res);
305
-		if (Database::num_rows($res) > 0) {
306
-			$result = $data['title'];
307
-		}
308
-
309
-		return $result;
310
-	}
311
-
312
-	/**
313
-	 * Return the list of differents categories ID for a test in the current course
314
-	 * input : test_id
315
-	 * return : array of category id (integer)
316
-	 * hubert.borderiou 07-04-2011
317
-	 * @param int $exerciseId
318
-	 */
319
-	public static function getListOfCategoriesIDForTest($exerciseId)
303
+        $res = Database::query($sql);
304
+        $data = Database::fetch_array($res);
305
+        if (Database::num_rows($res) > 0) {
306
+            $result = $data['title'];
307
+        }
308
+
309
+        return $result;
310
+    }
311
+
312
+    /**
313
+     * Return the list of differents categories ID for a test in the current course
314
+     * input : test_id
315
+     * return : array of category id (integer)
316
+     * hubert.borderiou 07-04-2011
317
+     * @param int $exerciseId
318
+     */
319
+    public static function getListOfCategoriesIDForTest($exerciseId)
320 320
     {
321
-		// parcourir les questions d'un test, recup les categories uniques dans un tableau
322
-		$exercise = new Exercise();
323
-		$exercise->read($exerciseId, false);
324
-		$categoriesInExercise = $exercise->getQuestionWithCategories();
325
-		// the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ???
326
-		$categories = array();
321
+        // parcourir les questions d'un test, recup les categories uniques dans un tableau
322
+        $exercise = new Exercise();
323
+        $exercise->read($exerciseId, false);
324
+        $categoriesInExercise = $exercise->getQuestionWithCategories();
325
+        // the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ???
326
+        $categories = array();
327 327
         if (!empty($categoriesInExercise)) {
328
-			foreach ($categoriesInExercise as $category) {
329
-				//$category['id'] = $category['iid'];
330
-				$categories[$category['id']] = $category;
331
-			}
332
-		}
333
-
334
-		return $categories;
335
-	}
336
-
337
-	/**
338
-	 * @param Exercise $exercise_obj
339
-	 * @return array
340
-	 */
341
-	public static function getListOfCategoriesIDForTestObject(Exercise $exercise_obj)
342
-	{
343
-		// parcourir les questions d'un test, recup les categories uniques dans un tableau
344
-		$categories_in_exercise = array();
345
-		// $question_list = $exercise_obj->getQuestionList();
346
-		$question_list = $exercise_obj->getQuestionOrderedListByName();
347
-
348
-		// the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ???
349
-		foreach ($question_list as $questionInfo) {
350
-			$question_id = $questionInfo['question_id'];
351
-			$category_list = self::getCategoryForQuestion($question_id);
352
-			if (is_numeric($category_list)) {
353
-				$category_list = array($category_list);
354
-			}
355
-
356
-			if (!empty($category_list)) {
357
-				$categories_in_exercise = array_merge($categories_in_exercise, $category_list);
358
-			}
359
-		}
360
-		if (!empty($categories_in_exercise)) {
361
-			$categories_in_exercise = array_unique(array_filter($categories_in_exercise));
362
-		}
363
-		return $categories_in_exercise;
364
-	}
365
-
366
-	/**
367
-	 * Return the list of differents categories NAME for a test
368
-	 * @param int exercise id
369
-	 * @param bool
370
-	 * @return integer of string
371
-	 *
328
+            foreach ($categoriesInExercise as $category) {
329
+                //$category['id'] = $category['iid'];
330
+                $categories[$category['id']] = $category;
331
+            }
332
+        }
333
+
334
+        return $categories;
335
+    }
336
+
337
+    /**
338
+     * @param Exercise $exercise_obj
339
+     * @return array
340
+     */
341
+    public static function getListOfCategoriesIDForTestObject(Exercise $exercise_obj)
342
+    {
343
+        // parcourir les questions d'un test, recup les categories uniques dans un tableau
344
+        $categories_in_exercise = array();
345
+        // $question_list = $exercise_obj->getQuestionList();
346
+        $question_list = $exercise_obj->getQuestionOrderedListByName();
347
+
348
+        // the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ???
349
+        foreach ($question_list as $questionInfo) {
350
+            $question_id = $questionInfo['question_id'];
351
+            $category_list = self::getCategoryForQuestion($question_id);
352
+            if (is_numeric($category_list)) {
353
+                $category_list = array($category_list);
354
+            }
355
+
356
+            if (!empty($category_list)) {
357
+                $categories_in_exercise = array_merge($categories_in_exercise, $category_list);
358
+            }
359
+        }
360
+        if (!empty($categories_in_exercise)) {
361
+            $categories_in_exercise = array_unique(array_filter($categories_in_exercise));
362
+        }
363
+        return $categories_in_exercise;
364
+    }
365
+
366
+    /**
367
+     * Return the list of differents categories NAME for a test
368
+     * @param int exercise id
369
+     * @param bool
370
+     * @return integer of string
371
+     *
372 372
      * @author function rewrote by jmontoya
373
-	 */
374
-	public static function getListOfCategoriesNameForTest($exercise_id, $grouped_by_category = true)
373
+     */
374
+    public static function getListOfCategoriesNameForTest($exercise_id, $grouped_by_category = true)
375 375
     {
376
-		$result = array();
377
-		$categories = self::getListOfCategoriesIDForTest($exercise_id, $grouped_by_category);
376
+        $result = array();
377
+        $categories = self::getListOfCategoriesIDForTest($exercise_id, $grouped_by_category);
378 378
 
379
-		foreach ($categories as $catInfo) {
380
-			$categoryId = $catInfo['id'];
381
-			if (!empty($categoryId)) {
382
-				$result[$categoryId] = array(
379
+        foreach ($categories as $catInfo) {
380
+            $categoryId = $catInfo['id'];
381
+            if (!empty($categoryId)) {
382
+                $result[$categoryId] = array(
383 383
                     'title' => $catInfo['title'],
384 384
                     //'parent_id' =>  $catInfo['parent_id'],
385
-					'parent_id' => '',
385
+                    'parent_id' => '',
386 386
                     'c_id' => $catInfo['c_id']
387 387
                 );
388
-		}
389
-		}
390
-
391
-		return $result;
392
-	}
393
-
394
-	/**
395
-	 * @param Exercise $exercise_obj
396
-	 * @return array
397
-	 */
398
-	public static function getListOfCategoriesForTest(Exercise $exercise_obj)
399
-	{
400
-		$result = array();
401
-		$categories = self::getListOfCategoriesIDForTestObject($exercise_obj);
402
-		foreach ($categories as $cat_id) {
403
-			$cat = new TestCategory($cat_id);
404
-			$cat = (array)$cat;
405
-			$cat['iid'] = $cat['id'];
406
-			$cat['title'] = $cat['name'];
407
-			$result[$cat['id']] = $cat;
408
-		}
409
-		return $result;
410
-	}
411
-
412
-	/**
413
-	 * return the number of differents categories for a test
414
-	 * input : test_id
415
-	 * return : integer
416
-	 * hubert.borderiou 07-04-2011
417
-	 */
418
-	public static function getNumberOfCategoriesForTest($id)
388
+        }
389
+        }
390
+
391
+        return $result;
392
+    }
393
+
394
+    /**
395
+     * @param Exercise $exercise_obj
396
+     * @return array
397
+     */
398
+    public static function getListOfCategoriesForTest(Exercise $exercise_obj)
399
+    {
400
+        $result = array();
401
+        $categories = self::getListOfCategoriesIDForTestObject($exercise_obj);
402
+        foreach ($categories as $cat_id) {
403
+            $cat = new TestCategory($cat_id);
404
+            $cat = (array)$cat;
405
+            $cat['iid'] = $cat['id'];
406
+            $cat['title'] = $cat['name'];
407
+            $result[$cat['id']] = $cat;
408
+        }
409
+        return $result;
410
+    }
411
+
412
+    /**
413
+     * return the number of differents categories for a test
414
+     * input : test_id
415
+     * return : integer
416
+     * hubert.borderiou 07-04-2011
417
+     */
418
+    public static function getNumberOfCategoriesForTest($id)
419 419
     {
420
-		return count(TestCategory::getListOfCategoriesIDForTest($id));
421
-	}
420
+        return count(TestCategory::getListOfCategoriesIDForTest($id));
421
+    }
422 422
 
423
-	/**
424
-	 * return the number of question of a category id in a test
425
-	 * @param int $exerciseId
423
+    /**
424
+     * return the number of question of a category id in a test
425
+     * @param int $exerciseId
426 426
      * @param int $categoryId
427 427
      *
428
-	 * @return integer
428
+     * @return integer
429 429
      *
430
-	 * @author hubert.borderiou 07-04-2011
431
-	 */
432
-	public static function getNumberOfQuestionsInCategoryForTest($exerciseId, $categoryId)
430
+     * @author hubert.borderiou 07-04-2011
431
+     */
432
+    public static function getNumberOfQuestionsInCategoryForTest($exerciseId, $categoryId)
433 433
     {
434
-		$nbCatResult = 0;
435
-		$quiz = new Exercise();
436
-		$quiz->read($exerciseId);
437
-		$tabQuestionList = $quiz->selectQuestionList();
438
-		// the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ? ? ?
439
-		for ($i=1; $i <= count($tabQuestionList); $i++) {
440
-			if (TestCategory::getCategoryForQuestion($tabQuestionList[$i]) == $categoryId) {
441
-				$nbCatResult++;
442
-			}
443
-		}
444
-
445
-		return $nbCatResult;
446
-	}
447
-
448
-	/**
449
-	 * return the number of question for a test using random by category
450
-	 * input  : test_id, number of random question (min 1)
451
-	 * hubert.borderiou 07-04-2011
452
-	 * question without categories are not counted
453
-	 */
454
-	public static function getNumberOfQuestionRandomByCategory($exerciseId, $in_nbrandom)
434
+        $nbCatResult = 0;
435
+        $quiz = new Exercise();
436
+        $quiz->read($exerciseId);
437
+        $tabQuestionList = $quiz->selectQuestionList();
438
+        // the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ? ? ?
439
+        for ($i=1; $i <= count($tabQuestionList); $i++) {
440
+            if (TestCategory::getCategoryForQuestion($tabQuestionList[$i]) == $categoryId) {
441
+                $nbCatResult++;
442
+            }
443
+        }
444
+
445
+        return $nbCatResult;
446
+    }
447
+
448
+    /**
449
+     * return the number of question for a test using random by category
450
+     * input  : test_id, number of random question (min 1)
451
+     * hubert.borderiou 07-04-2011
452
+     * question without categories are not counted
453
+     */
454
+    public static function getNumberOfQuestionRandomByCategory($exerciseId, $in_nbrandom)
455 455
     {
456
-		$nbquestionresult = 0;
457
-		$tabcatid = TestCategory::getListOfCategoriesIDForTest($exerciseId);
456
+        $nbquestionresult = 0;
457
+        $tabcatid = TestCategory::getListOfCategoriesIDForTest($exerciseId);
458 458
 
459 459
         foreach ($tabcatid as $category) {
460 460
             if (empty($category['id'])) {
@@ -470,30 +470,30 @@  discard block
 block discarded – undo
470 470
             }
471 471
         }
472 472
 
473
-		return $nbquestionresult;
474
-	}
473
+        return $nbquestionresult;
474
+    }
475 475
 
476
-	/**
477
-	 * Return an array (id=>name)
478
-	 * tabresult[0] = get_lang('NoCategory');
476
+    /**
477
+     * Return an array (id=>name)
478
+     * tabresult[0] = get_lang('NoCategory');
479 479
      *
480 480
      * @param int $courseId
481 481
      *
482 482
      * @return array
483
-	 *
484
-	 */
483
+     *
484
+     */
485 485
     public static function getCategoriesIdAndName($courseId = "")
486 486
     {
487
-		if (empty($courseId)) {
488
-			$courseId = api_get_course_int_id();
489
-		}
490
-	 	$tabcatobject = TestCategory::getCategoryListInfo("", $courseId);
491
-	 	$tabresult = array("0"=>get_lang('NoCategorySelected'));
492
-	 	for ($i=0; $i < count($tabcatobject); $i++) {
493
-	 		$tabresult[$tabcatobject[$i]->id] = $tabcatobject[$i]->name;
494
-	 	}
495
-	 	return $tabresult;
496
-	}
487
+        if (empty($courseId)) {
488
+            $courseId = api_get_course_int_id();
489
+        }
490
+            $tabcatobject = TestCategory::getCategoryListInfo("", $courseId);
491
+            $tabresult = array("0"=>get_lang('NoCategorySelected'));
492
+            for ($i=0; $i < count($tabcatobject); $i++) {
493
+                $tabresult[$tabcatobject[$i]->id] = $tabcatobject[$i]->name;
494
+            }
495
+            return $tabresult;
496
+    }
497 497
 
498 498
     /**
499 499
      * Returns an array of question ids for each category
@@ -502,10 +502,10 @@  discard block
 block discarded – undo
502 502
      * @param int exercise
503 503
      * @param array $check_in_question_list
504 504
      * @param array $categoriesAddedInExercise
505
-    *
506
-    * @param int $exerciseId
507
-    * @return array
508
-    */
505
+     *
506
+     * @param int $exerciseId
507
+     * @return array
508
+     */
509 509
     static function getQuestionsByCat(
510 510
         $exerciseId,
511 511
         $check_in_question_list = array(),
@@ -583,28 +583,28 @@  discard block
 block discarded – undo
583 583
         }
584 584
 
585 585
         return $categories;
586
-	}
586
+    }
587 587
 
588
-	/**
589
-	 * return a tab of $in_number random elements of $in_tab
590
-	 */
588
+    /**
589
+     * return a tab of $in_number random elements of $in_tab
590
+     */
591 591
     public static function getNElementsFromArray($in_tab, $in_number)
592 592
     {
593
-		$tabres = $in_tab;
594
-		shuffle($tabres);
595
-		if ($in_number < count($tabres)) {
596
-			$tabres = array_slice($tabres, 0, $in_number);
597
-		}
598
-		return $tabres;
599
-	}
600
-
601
-	/**
602
-	 * display the category
603
-	 */
604
-	public static function displayCategoryAndTitle($questionId, $in_display_category_name = 1)
593
+        $tabres = $in_tab;
594
+        shuffle($tabres);
595
+        if ($in_number < count($tabres)) {
596
+            $tabres = array_slice($tabres, 0, $in_number);
597
+        }
598
+        return $tabres;
599
+    }
600
+
601
+    /**
602
+     * display the category
603
+     */
604
+    public static function displayCategoryAndTitle($questionId, $in_display_category_name = 1)
605 605
     {
606 606
         echo self::returnCategoryAndTitle($questionId, $in_display_category_name);
607
-	}
607
+    }
608 608
 
609 609
     /**
610 610
      * @param int $questionId
@@ -620,90 +620,90 @@  discard block
 block discarded – undo
620 620
             $in_display_category_name = $objExercise->display_category_name;
621 621
         }
622 622
         $content = null;
623
-		if (TestCategory::getCategoryNameForQuestion($questionId) != "" && ($in_display_category_name == 1 || !$is_student)) {
623
+        if (TestCategory::getCategoryNameForQuestion($questionId) != "" && ($in_display_category_name == 1 || !$is_student)) {
624 624
             $content .= '<div class="page-header">';
625 625
             $content .= '<h4>'.get_lang('Category').": ".TestCategory::getCategoryNameForQuestion($questionId).'</h4>';
626 626
             $content .= "</div>";
627
-		}
627
+        }
628 628
         return $content;
629
-	}
629
+    }
630 630
 
631 631
     /**
632
-    * Display signs [+] and/or (>0) after question title if question has options
633
-    * scoreAlwaysPositive and/or uncheckedMayScore
634
-    */
632
+     * Display signs [+] and/or (>0) after question title if question has options
633
+     * scoreAlwaysPositive and/or uncheckedMayScore
634
+     */
635 635
     public function displayQuestionOption($in_objQuestion)
636 636
     {
637
-		if ($in_objQuestion->type == MULTIPLE_ANSWER && $in_objQuestion->scoreAlwaysPositive) {
638
-			echo "<span style='font-size:75%'> (>0)</span>";
639
-		}
640
-		if ($in_objQuestion->type == MULTIPLE_ANSWER && $in_objQuestion->uncheckedMayScore) {
641
-			echo "<span style='font-size:75%'> [+]</span>";
642
-		}
643
-	}
644
-
645
-	/**
646
-	 * sortTabByBracketLabel ($tabCategoryQuestions)
647
-	 * key of $tabCategoryQuestions are the category id (0 for not in a category)
648
-	 * value is the array of question id of this category
649
-	 * Sort question by Category
650
-	*/
637
+        if ($in_objQuestion->type == MULTIPLE_ANSWER && $in_objQuestion->scoreAlwaysPositive) {
638
+            echo "<span style='font-size:75%'> (>0)</span>";
639
+        }
640
+        if ($in_objQuestion->type == MULTIPLE_ANSWER && $in_objQuestion->uncheckedMayScore) {
641
+            echo "<span style='font-size:75%'> [+]</span>";
642
+        }
643
+    }
644
+
645
+    /**
646
+     * sortTabByBracketLabel ($tabCategoryQuestions)
647
+     * key of $tabCategoryQuestions are the category id (0 for not in a category)
648
+     * value is the array of question id of this category
649
+     * Sort question by Category
650
+     */
651 651
     public static function sortTabByBracketLabel($in_tab)
652 652
     {
653
-		$tabResult = array();
654
-		$tabCatName = array();	// tab of category name
655
-		while (list($cat_id, $tabquestion) = each($in_tab)) {
656
-			$catTitle = new TestCategory($cat_id);
657
-			$tabCatName[$cat_id] = $catTitle->name;
658
-		}
659
-		reset($in_tab);
660
-		// sort table by value, keeping keys as they are
661
-		asort($tabCatName);
662
-		// keys of $tabCatName are keys order for $in_tab
663
-		while (list($key, $val) = each($tabCatName)) {
664
-			$tabResult[$key] = $in_tab[$key];
665
-		}
666
-		return $tabResult;
667
-	}
653
+        $tabResult = array();
654
+        $tabCatName = array();	// tab of category name
655
+        while (list($cat_id, $tabquestion) = each($in_tab)) {
656
+            $catTitle = new TestCategory($cat_id);
657
+            $tabCatName[$cat_id] = $catTitle->name;
658
+        }
659
+        reset($in_tab);
660
+        // sort table by value, keeping keys as they are
661
+        asort($tabCatName);
662
+        // keys of $tabCatName are keys order for $in_tab
663
+        while (list($key, $val) = each($tabCatName)) {
664
+            $tabResult[$key] = $in_tab[$key];
665
+        }
666
+        return $tabResult;
667
+    }
668 668
 
669 669
     /**
670
-	 * return total score for test exe_id for all question in the category $in_cat_id for user
671
-	 * If no question for this category, return ""
672
-	 */
673
-	public static function getCatScoreForExeidForUserid($in_cat_id, $in_exe_id, $in_user_id)
674
-	{
675
-		$tbl_track_attempt		= Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
676
-		$tbl_question_rel_category = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
677
-		$in_cat_id = intval($in_cat_id);
678
-		$in_exe_id = intval($in_exe_id);
679
-		$in_user_id = intval($in_user_id);
680
-
681
-		$query = "SELECT DISTINCT
670
+     * return total score for test exe_id for all question in the category $in_cat_id for user
671
+     * If no question for this category, return ""
672
+     */
673
+    public static function getCatScoreForExeidForUserid($in_cat_id, $in_exe_id, $in_user_id)
674
+    {
675
+        $tbl_track_attempt		= Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
676
+        $tbl_question_rel_category = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
677
+        $in_cat_id = intval($in_cat_id);
678
+        $in_exe_id = intval($in_exe_id);
679
+        $in_user_id = intval($in_user_id);
680
+
681
+        $query = "SELECT DISTINCT
682 682
 		            marks, exe_id, user_id, ta.question_id, category_id
683 683
                   FROM $tbl_track_attempt ta , $tbl_question_rel_category qrc
684 684
                   WHERE
685 685
                     ta.question_id=qrc.question_id AND
686 686
                     qrc.category_id=$in_cat_id AND
687 687
                     exe_id=$in_exe_id AND user_id=$in_user_id";
688
-		$res = Database::query($query);
689
-		$totalcatscore = "";
690
-		while ($data = Database::fetch_array($res)) {
691
-			$totalcatscore += $data['marks'];
692
-		}
693
-		return $totalcatscore;
694
-	}
695
-
696
-	/**
688
+        $res = Database::query($query);
689
+        $totalcatscore = "";
690
+        while ($data = Database::fetch_array($res)) {
691
+            $totalcatscore += $data['marks'];
692
+        }
693
+        return $totalcatscore;
694
+    }
695
+
696
+    /**
697 697
      * return the number max of question in a category
698 698
      * count the number of questions in all categories, and return the max
699 699
      * @param int $exerciseId
700 700
      * @author - hubert borderiou
701
-    */
701
+     */
702 702
     public static function getNumberMaxQuestionByCat($exerciseId)
703 703
     {
704 704
         $res_num_max = 0;
705 705
         // foreach question
706
-		$tabcatid = TestCategory::getListOfCategoriesIDForTest($exerciseId);
706
+        $tabcatid = TestCategory::getListOfCategoriesIDForTest($exerciseId);
707 707
 
708 708
         foreach ($tabcatid as $category) {
709 709
             if (empty($category['id'])) {
@@ -775,34 +775,34 @@  discard block
 block discarded – undo
775 775
     }
776 776
 
777 777
     /**
778
-	 * @return array
779
-	 */
780
-	function get_all_categories()
781
-	{
782
-		$table = Database::get_course_table(TABLE_QUIZ_CATEGORY);
783
-		$sql = "SELECT * FROM $table ORDER BY title ASC";
784
-		$res = Database::query($sql);
785
-		while ($row = Database::fetch_array($res,'ASSOC')) {
786
-			$array[] = $row;
787
-		}
788
-		return $array;
789
-	}
790
-
791
-	/**
792
-	 * @param Exercise $exercise
793
-	 * @param int $course_id
794
-	 * @param string $order
795
-	 * @param bool $shuffle
796
-	 * @param bool $excludeCategoryWithNoQuestions
797
-	 * @return array|bool
798
-	 */
799
-	public function getCategoryExerciseTree(
800
-		$exercise,
801
-		$course_id,
802
-		$order = null,
803
-		$shuffle = false,
804
-		$excludeCategoryWithNoQuestions = true
805
-	) {
778
+     * @return array
779
+     */
780
+    function get_all_categories()
781
+    {
782
+        $table = Database::get_course_table(TABLE_QUIZ_CATEGORY);
783
+        $sql = "SELECT * FROM $table ORDER BY title ASC";
784
+        $res = Database::query($sql);
785
+        while ($row = Database::fetch_array($res,'ASSOC')) {
786
+            $array[] = $row;
787
+        }
788
+        return $array;
789
+    }
790
+
791
+    /**
792
+     * @param Exercise $exercise
793
+     * @param int $course_id
794
+     * @param string $order
795
+     * @param bool $shuffle
796
+     * @param bool $excludeCategoryWithNoQuestions
797
+     * @return array|bool
798
+     */
799
+    public function getCategoryExerciseTree(
800
+        $exercise,
801
+        $course_id,
802
+        $order = null,
803
+        $shuffle = false,
804
+        $excludeCategoryWithNoQuestions = true
805
+    ) {
806 806
         if (empty($exercise)) {
807 807
             return array();
808 808
         }
@@ -812,165 +812,165 @@  discard block
 block discarded – undo
812 812
         }
813 813
 
814 814
         $course_id = intval($course_id);
815
-		$table = Database::get_course_table(TABLE_QUIZ_REL_CATEGORY);
815
+        $table = Database::get_course_table(TABLE_QUIZ_REL_CATEGORY);
816 816
         $categoryTable = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
817
-		$sql = "SELECT * FROM $table qc
817
+        $sql = "SELECT * FROM $table qc
818 818
               	LEFT JOIN $categoryTable c
819 819
                 ON (qc.c_id = c.c_id AND c.id = qc.category_id)
820 820
                 WHERE qc.c_id = $course_id AND exercise_id = {$exercise->id} ";
821 821
 
822
-		if (!empty($order)) {
823
-			$sql .= "ORDER BY $order";
824
-		}
825
-
826
-		$categories = array();
827
-
828
-		$result = Database::query($sql);
829
-		if (Database::num_rows($result)) {
830
-			while ($row = Database::fetch_array($result, 'ASSOC')) {
831
-				if ($excludeCategoryWithNoQuestions) {
832
-					if ($row['count_questions'] == 0) {
833
-						continue;
834
-					}
835
-				}
836
-				if (empty($row['title']) && empty($row['category_id'])) {
837
-					$row['title'] = get_lang('NoCategory');
838
-				}
822
+        if (!empty($order)) {
823
+            $sql .= "ORDER BY $order";
824
+        }
825
+
826
+        $categories = array();
827
+
828
+        $result = Database::query($sql);
829
+        if (Database::num_rows($result)) {
830
+            while ($row = Database::fetch_array($result, 'ASSOC')) {
831
+                if ($excludeCategoryWithNoQuestions) {
832
+                    if ($row['count_questions'] == 0) {
833
+                        continue;
834
+                    }
835
+                }
836
+                if (empty($row['title']) && empty($row['category_id'])) {
837
+                    $row['title'] = get_lang('NoCategory');
838
+                }
839 839
                 $categories[$row['category_id']] = $row;
840
-			}
841
-		}
842
-
843
-		if ($shuffle) {
844
-			shuffle_assoc($categories);
845
-		}
846
-
847
-		return $categories;
848
-	}
849
-
850
-	public function getForm(& $form, $action = 'new')
851
-	{
852
-		switch($action) {
853
-			case 'new':
854
-				$header = get_lang('AddACategory');
855
-				$submit = get_lang('AddTestCategory');
856
-				break;
857
-			case 'edit':
858
-				$header = get_lang('EditCategory');
859
-				$submit = get_lang('ModifyCategory');
860
-				break;
861
-		}
862
-
863
-		// settting the form elements
864
-		$form->addElement('header', $header);
865
-		$form->addElement('hidden', 'category_id');
866
-		$form->addElement('text', 'category_name', get_lang('CategoryName'), array('class' => 'span6'));
867
-		$form->add_html_editor('category_description', get_lang('CategoryDescription'), false, false, array('ToolbarSet' => 'test_category', 'Width' => '90%', 'Height' => '200'));
868
-		$category_parent_list = array();
869
-
870
-		$options = array(
871
-				'1' => get_lang('Visible'),
872
-				'0' => get_lang('Hidden')
873
-		);
874
-		$form->addElement('select', 'visibility', get_lang('Visibility'), $options);
875
-		$script = null;
876
-		if (!empty($this->parent_id)) {
877
-			$parent_cat = new TestCategory($this->parent_id);
878
-			$category_parent_list = array($parent_cat->id => $parent_cat->name);
879
-			$script .= '<script>$(function() { $("#parent_id").trigger("addItem",[{"title": "'.$parent_cat->name.'", "value": "'.$parent_cat->id.'"}]); });</script>';
880
-		}
881
-		$form->addElement('html', $script);
882
-
883
-		$form->addElement('select', 'parent_id', get_lang('Parent'), $category_parent_list, array('id' => 'parent_id'));
884
-		$form->addElement('style_submit_button', 'SubmitNote', $submit, 'class="add"');
885
-
886
-		// setting the defaults
887
-		$defaults = array();
888
-		$defaults["category_id"] = $this->id;
889
-		$defaults["category_name"] = $this->name;
890
-		$defaults["category_description"] = $this->description;
891
-		$defaults["parent_id"] = $this->parent_id;
892
-		$defaults["visibility"] = $this->visibility;
893
-		$form->setDefaults($defaults);
894
-
895
-		// setting the rules
896
-		$form->addRule('category_name', get_lang('ThisFieldIsRequired'), 'required');
897
-	}
898
-
899
-	/**
900
-	 * Returns the category form.
901
-	 * @param Exercise $exercise_obj
902
-	 * @return string
903
-	 */
904
-	public function returnCategoryForm(Exercise $exercise_obj)
905
-	{
906
-		$categories = $this->getListOfCategoriesForTest($exercise_obj);
907
-
908
-		$saved_categories = $exercise_obj->get_categories_in_exercise();
909
-		$return = null;
910
-
911
-		if (!empty($categories)) {
912
-			$nbQuestionsTotal = $exercise_obj->getNumberQuestionExerciseCategory();
913
-			$exercise_obj->setCategoriesGrouping(true);
914
-			$real_question_count = count($exercise_obj->getQuestionList());
915
-
916
-			$warning = null;
917
-			if ($nbQuestionsTotal != $real_question_count) {
918
-				$warning = Display::return_message(get_lang('CheckThatYouHaveEnoughQuestionsInYourCategories'), 'warning');
919
-			}
920
-
921
-			$return .= $warning;
922
-			$return .= '<table class="data_table">';
923
-			$return .= '<tr>';
924
-			$return .= '<th height="24">' . get_lang('Categories') . '</th>';
925
-			$return .= '<th width="70" height="24">' . get_lang('Number') . '</th></tr>';
926
-
927
-			$emptyCategory = array(
928
-				'id' => '0',
929
-				'name' => get_lang('NoCategory'),
930
-				'description' => '',
931
-				'iid' => '0',
932
-				'title' => get_lang('NoCategory')
933
-			);
934
-
935
-			$categories[] = $emptyCategory;
936
-
937
-			foreach ($categories as $category) {
938
-				$cat_id = $category['iid'];
939
-				$return .= '<tr>';
940
-				$return .= '<td>';
941
-				//$return .= Display::div(isset($category['parent_path']) ? $category['parent_path'] : '');
942
-				$return .= Display::div($category['name']);
943
-				$return .= '</td>';
944
-				$return .= '<td>';
945
-				$value = isset($saved_categories) && isset($saved_categories[$cat_id]) ? $saved_categories[$cat_id]['count_questions'] : -1;
946
-				$return .= '<input name="category['.$cat_id.']" value="' .$value.'" />';
947
-				$return .= '</td>';
948
-				$return .= '</tr>';
949
-			}
950
-
951
-			$return .= '</table>';
952
-			$return .= get_lang('ZeroMeansNoQuestionWillBeSelectedMinusOneMeansThatAllQuestionsWillBeSelected');
953
-			return $return;
954
-		}
955
-	}
956
-
957
-	/**
958
-	 * Sorts an array
959
-	 * @param $array
960
-	 * @return mixed
961
-	 */
962
-	public function sort_tree_array($array)
963
-	{
964
-		foreach ($array as $key => $row) {
965
-			$parent[$key] = $row['parent_id'];
966
-		}
967
-		if (count($array) > 0) {
968
-			array_multisort($parent, SORT_ASC, $array);
969
-		}
970
-		return $array;
971
-	}
972
-
973
-	/**
840
+            }
841
+        }
842
+
843
+        if ($shuffle) {
844
+            shuffle_assoc($categories);
845
+        }
846
+
847
+        return $categories;
848
+    }
849
+
850
+    public function getForm(& $form, $action = 'new')
851
+    {
852
+        switch($action) {
853
+            case 'new':
854
+                $header = get_lang('AddACategory');
855
+                $submit = get_lang('AddTestCategory');
856
+                break;
857
+            case 'edit':
858
+                $header = get_lang('EditCategory');
859
+                $submit = get_lang('ModifyCategory');
860
+                break;
861
+        }
862
+
863
+        // settting the form elements
864
+        $form->addElement('header', $header);
865
+        $form->addElement('hidden', 'category_id');
866
+        $form->addElement('text', 'category_name', get_lang('CategoryName'), array('class' => 'span6'));
867
+        $form->add_html_editor('category_description', get_lang('CategoryDescription'), false, false, array('ToolbarSet' => 'test_category', 'Width' => '90%', 'Height' => '200'));
868
+        $category_parent_list = array();
869
+
870
+        $options = array(
871
+                '1' => get_lang('Visible'),
872
+                '0' => get_lang('Hidden')
873
+        );
874
+        $form->addElement('select', 'visibility', get_lang('Visibility'), $options);
875
+        $script = null;
876
+        if (!empty($this->parent_id)) {
877
+            $parent_cat = new TestCategory($this->parent_id);
878
+            $category_parent_list = array($parent_cat->id => $parent_cat->name);
879
+            $script .= '<script>$(function() { $("#parent_id").trigger("addItem",[{"title": "'.$parent_cat->name.'", "value": "'.$parent_cat->id.'"}]); });</script>';
880
+        }
881
+        $form->addElement('html', $script);
882
+
883
+        $form->addElement('select', 'parent_id', get_lang('Parent'), $category_parent_list, array('id' => 'parent_id'));
884
+        $form->addElement('style_submit_button', 'SubmitNote', $submit, 'class="add"');
885
+
886
+        // setting the defaults
887
+        $defaults = array();
888
+        $defaults["category_id"] = $this->id;
889
+        $defaults["category_name"] = $this->name;
890
+        $defaults["category_description"] = $this->description;
891
+        $defaults["parent_id"] = $this->parent_id;
892
+        $defaults["visibility"] = $this->visibility;
893
+        $form->setDefaults($defaults);
894
+
895
+        // setting the rules
896
+        $form->addRule('category_name', get_lang('ThisFieldIsRequired'), 'required');
897
+    }
898
+
899
+    /**
900
+     * Returns the category form.
901
+     * @param Exercise $exercise_obj
902
+     * @return string
903
+     */
904
+    public function returnCategoryForm(Exercise $exercise_obj)
905
+    {
906
+        $categories = $this->getListOfCategoriesForTest($exercise_obj);
907
+
908
+        $saved_categories = $exercise_obj->get_categories_in_exercise();
909
+        $return = null;
910
+
911
+        if (!empty($categories)) {
912
+            $nbQuestionsTotal = $exercise_obj->getNumberQuestionExerciseCategory();
913
+            $exercise_obj->setCategoriesGrouping(true);
914
+            $real_question_count = count($exercise_obj->getQuestionList());
915
+
916
+            $warning = null;
917
+            if ($nbQuestionsTotal != $real_question_count) {
918
+                $warning = Display::return_message(get_lang('CheckThatYouHaveEnoughQuestionsInYourCategories'), 'warning');
919
+            }
920
+
921
+            $return .= $warning;
922
+            $return .= '<table class="data_table">';
923
+            $return .= '<tr>';
924
+            $return .= '<th height="24">' . get_lang('Categories') . '</th>';
925
+            $return .= '<th width="70" height="24">' . get_lang('Number') . '</th></tr>';
926
+
927
+            $emptyCategory = array(
928
+                'id' => '0',
929
+                'name' => get_lang('NoCategory'),
930
+                'description' => '',
931
+                'iid' => '0',
932
+                'title' => get_lang('NoCategory')
933
+            );
934
+
935
+            $categories[] = $emptyCategory;
936
+
937
+            foreach ($categories as $category) {
938
+                $cat_id = $category['iid'];
939
+                $return .= '<tr>';
940
+                $return .= '<td>';
941
+                //$return .= Display::div(isset($category['parent_path']) ? $category['parent_path'] : '');
942
+                $return .= Display::div($category['name']);
943
+                $return .= '</td>';
944
+                $return .= '<td>';
945
+                $value = isset($saved_categories) && isset($saved_categories[$cat_id]) ? $saved_categories[$cat_id]['count_questions'] : -1;
946
+                $return .= '<input name="category['.$cat_id.']" value="' .$value.'" />';
947
+                $return .= '</td>';
948
+                $return .= '</tr>';
949
+            }
950
+
951
+            $return .= '</table>';
952
+            $return .= get_lang('ZeroMeansNoQuestionWillBeSelectedMinusOneMeansThatAllQuestionsWillBeSelected');
953
+            return $return;
954
+        }
955
+    }
956
+
957
+    /**
958
+     * Sorts an array
959
+     * @param $array
960
+     * @return mixed
961
+     */
962
+    public function sort_tree_array($array)
963
+    {
964
+        foreach ($array as $key => $row) {
965
+            $parent[$key] = $row['parent_id'];
966
+        }
967
+        if (count($array) > 0) {
968
+            array_multisort($parent, SORT_ASC, $array);
969
+        }
970
+        return $array;
971
+    }
972
+
973
+    /**
974 974
      * Return true if a category already exists with the same name
975 975
      * @param string $in_name
976 976
      *
@@ -1016,8 +1016,8 @@  discard block
 block discarded – undo
1016 1016
      * @param int $categoryId
1017 1017
      * @param int $questionId
1018 1018
      * @param int $courseId
1019
-	 *
1020
-	 * @return string|false
1019
+     *
1020
+     * @return string|false
1021 1021
      */
1022 1022
     public static function add_category_for_question_id($categoryId, $questionId, $courseId)
1023 1023
     {
@@ -1025,18 +1025,18 @@  discard block
 block discarded – undo
1025 1025
         // if question doesn't have a category
1026 1026
         // @todo change for 1.10 when a question can have several categories
1027 1027
         if (TestCategory::getCategoryForQuestion($questionId, $courseId) == 0 &&
1028
-			$questionId > 0 &&
1029
-			$courseId > 0
1028
+            $questionId > 0 &&
1029
+            $courseId > 0
1030 1030
         ) {
1031 1031
             $sql = "INSERT INTO $table (c_id, question_id, category_id)
1032 1032
                     VALUES (".intval($courseId).", ".intval($questionId).", ".intval($categoryId).")";
1033 1033
             Database::query($sql);
1034
-			$id = Database::insert_id();
1034
+            $id = Database::insert_id();
1035 1035
 
1036
-			return $id;
1036
+            return $id;
1037 1037
         }
1038 1038
 
1039
-		return false;
1039
+        return false;
1040 1040
     }
1041 1041
 
1042 1042
     /**
Please login to merge, or discard this patch.