Completed
Push — 1.10.x ( 5afc49...70def3 )
by Julito
48:57
created
main/exercice/result.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -17,13 +17,13 @@  discard block
 block discarded – undo
17 17
 $show_headers = isset($_REQUEST['show_headers']) ? intval($_REQUEST['show_headers']) : null; //exe id
18 18
 
19 19
 if ($origin == 'learnpath') {
20
-	$show_headers = false;
20
+    $show_headers = false;
21 21
 }
22 22
 
23 23
 api_protect_course_script($show_headers);
24 24
 
25 25
 if (empty($id)) {
26
-	api_not_allowed($show_headers);
26
+    api_not_allowed($show_headers);
27 27
 }
28 28
 
29 29
 $is_allowedToEdit = api_is_allowed_to_edit(null,true) || $is_courseTutor;
@@ -49,7 +49,7 @@  discard block
 block discarded – undo
49 49
 // Only users can see their own results
50 50
 if (!$is_allowedToEdit) {
51 51
     if ($student_id != $current_user_id) {
52
-    	api_not_allowed($show_headers);
52
+        api_not_allowed($show_headers);
53 53
     }
54 54
 }
55 55
 
@@ -62,19 +62,19 @@  discard block
 block discarded – undo
62 62
         "name" => get_lang('Exercises'),
63 63
     );
64 64
     $interbreadcrumb[] = array("url" => "#", "name" => get_lang('Result'));
65
-	$this_section = SECTION_COURSES;
66
-	Display::display_header();
65
+    $this_section = SECTION_COURSES;
66
+    Display::display_header();
67 67
 } else {
68 68
     $htmlHeadXtra[] = "
69 69
     <style>
70 70
     body { background: none;}
71 71
     </style>
72 72
     ";
73
-	Display::display_reduced_header();
73
+    Display::display_reduced_header();
74 74
 }
75 75
 
76 76
 ExerciseLib::display_question_list_by_attempt($objExercise, $id, false);
77 77
 
78 78
 if ($show_headers) {
79
-	Display::display_footer();
79
+    Display::display_footer();
80 80
 }
Please login to merge, or discard this patch.
main/exercice/multiple_answer.class.php 1 patch
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -166,12 +166,12 @@  discard block
 block discarded – undo
166 166
     }
167 167
 
168 168
 
169
-	/**
170
-	 * abstract function which creates the form to create / edit the answers of the question
171
-	 * @param the formvalidator instance
172
-	 * @param the answers number to display
173
-	 */
174
-	function processAnswersCreation($form)
169
+    /**
170
+     * abstract function which creates the form to create / edit the answers of the question
171
+     * @param the formvalidator instance
172
+     * @param the answers number to display
173
+     */
174
+    function processAnswersCreation($form)
175 175
     {
176 176
         $questionWeighting = $nbrGoodAnswers = 0;
177 177
         $objAnswer  = new Answer($this->id);
@@ -201,12 +201,12 @@  discard block
 block discarded – undo
201 201
         // sets the total weighting of the question
202 202
         $this->updateWeighting($questionWeighting);
203 203
         $this->save();
204
-	}
204
+    }
205 205
 
206
-	function return_header($feedback_type = null, $counter = null, $score = null)
206
+    function return_header($feedback_type = null, $counter = null, $score = null)
207 207
     {
208
-	    $header = parent::return_header($feedback_type, $counter, $score);
209
-	    $header .= '<table class="'.$this->question_table_class .'">
208
+        $header = parent::return_header($feedback_type, $counter, $score);
209
+        $header .= '<table class="'.$this->question_table_class .'">
210 210
 			<tr>
211 211
 				<th>'.get_lang("Choice").'</th>
212 212
 				<th>'. get_lang("ExpectedChoice").'</th>
@@ -214,7 +214,7 @@  discard block
 block discarded – undo
214 214
         $header .= '<th>'.get_lang("Comment").'</th>';
215 215
         $header .= '</tr>';
216 216
         return $header;
217
-	}
217
+    }
218 218
 
219 219
 
220 220
 }
Please login to merge, or discard this patch.
main/exercice/showinframes.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -28,10 +28,10 @@
 block discarded – undo
28 28
 $content = ReadFileCont($full_file_path.$user_id.'.t.html');
29 29
 
30 30
 if ($content == '') {
31
-	$content = ReadFileCont($full_file_path);
31
+    $content = ReadFileCont($full_file_path);
32 32
     // Do not move this like:
33
-	$mit = "function Finish(){";
34
-	$js_content = "
33
+    $mit = "function Finish(){";
34
+    $js_content = "
35 35
     // Code added - start
36 36
     var SaveScoreVariable = 0;
37 37
     function mySaveScore() {
Please login to merge, or discard this patch.
main/exercice/hotpotatoes.lib.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -344,7 +344,7 @@
 block discarded – undo
344 344
                     if (is_dir($full_name)) {
345 345
                         $filelist[] = $file;
346 346
                     }
347
-               }
347
+                }
348 348
             }
349 349
         }
350 350
     }
Please login to merge, or discard this patch.
main/exercice/unique_answer_no_option.class.php 1 patch
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -12,21 +12,21 @@  discard block
 block discarded – undo
12 12
  */
13 13
 class UniqueAnswerNoOption extends Question
14 14
 {
15
-	static $typePicture = 'mcuao.png';
16
-	static $explanationLangVar = 'UniqueAnswerNoOption';
15
+    static $typePicture = 'mcuao.png';
16
+    static $explanationLangVar = 'UniqueAnswerNoOption';
17 17
 
18
-	/**
19
-	 * Constructor
20
-	 */
21
-	public function __construct()
18
+    /**
19
+     * Constructor
20
+     */
21
+    public function __construct()
22 22
     {
23
-		//this is highly important
24
-		parent::__construct();
25
-		$this -> type = UNIQUE_ANSWER_NO_OPTION;
26
-		$this -> isContent = $this-> getIsContent();
27
-	}
23
+        //this is highly important
24
+        parent::__construct();
25
+        $this -> type = UNIQUE_ANSWER_NO_OPTION;
26
+        $this -> isContent = $this-> getIsContent();
27
+    }
28 28
 
29
-	/**
29
+    /**
30 30
      * function which redifines Question::createAnswersForm
31 31
      * @param the formvalidator instance
32 32
      * @param the answers number to display
@@ -283,37 +283,37 @@  discard block
 block discarded – undo
283 283
     }
284 284
 
285 285
     /**
286
-	 * Function which creates the form to create / edit the answers of the question
287
-	 * @param the formvalidator instance
288
-	 * @param the answers number to display
289
-	 */
290
-	function processAnswersCreation($form)
286
+     * Function which creates the form to create / edit the answers of the question
287
+     * @param the formvalidator instance
288
+     * @param the answers number to display
289
+     */
290
+    function processAnswersCreation($form)
291 291
     {
292
-		$questionWeighting = $nbrGoodAnswers = 0;
293
-		$correct = $form -> getSubmitValue('correct');
294
-		$objAnswer = new Answer($this->id);
295
-		$nb_answers = $form -> getSubmitValue('nb_answers');
296
-		$minus = 1;
297
-		if ($form -> getSubmitValue('new_question')) {
298
-		    $minus = 0;
299
-		}
300
-
301
-		for ($i=1 ; $i <= $nb_answers - $minus; $i++) {
302
-		    $position   = trim($form -> getSubmitValue('position['.$i.']'));
303
-        	$answer     = trim($form -> getSubmitValue('answer['.$i.']'));
292
+        $questionWeighting = $nbrGoodAnswers = 0;
293
+        $correct = $form -> getSubmitValue('correct');
294
+        $objAnswer = new Answer($this->id);
295
+        $nb_answers = $form -> getSubmitValue('nb_answers');
296
+        $minus = 1;
297
+        if ($form -> getSubmitValue('new_question')) {
298
+            $minus = 0;
299
+        }
300
+
301
+        for ($i=1 ; $i <= $nb_answers - $minus; $i++) {
302
+            $position   = trim($form -> getSubmitValue('position['.$i.']'));
303
+            $answer     = trim($form -> getSubmitValue('answer['.$i.']'));
304 304
             $comment    = trim($form -> getSubmitValue('comment['.$i.']'));
305 305
             $weighting  = trim($form -> getSubmitValue('weighting['.$i.']'));
306 306
             $scenario   = $form -> getSubmitValue('scenario');
307 307
 
308
-           	//$list_destination = $form -> getSubmitValue('destination'.$i);
309
-           	//$destination_str = $form -> getSubmitValue('destination'.$i);
308
+                //$list_destination = $form -> getSubmitValue('destination'.$i);
309
+                //$destination_str = $form -> getSubmitValue('destination'.$i);
310 310
 
311
- 		    $try           = $scenario['try'.$i];
311
+                $try           = $scenario['try'.$i];
312 312
             $lp            = $scenario['lp'.$i];
313
- 			$destination   = $scenario['destination'.$i];
314
- 			$url           = trim($scenario['url'.$i]);
313
+                $destination   = $scenario['destination'.$i];
314
+                $url           = trim($scenario['url'.$i]);
315 315
 
316
- 			/*
316
+                /*
317 317
  			How we are going to parse the destination value
318 318
 
319 319
 			here we parse the destination value which is a string
@@ -326,41 +326,41 @@  discard block
 block discarded – undo
326 326
 			selected_questions= ids of questions
327 327
 			url= an url
328 328
 			*/
329
-			/*
329
+            /*
330 330
  			$destination_str='';
331 331
  			foreach ($list_destination as $destination_id)
332 332
  			{
333 333
  				$destination_str.=$destination_id.';';
334 334
  			}*/
335 335
 
336
-        	$goodAnswer= ($correct == $i) ? true : false;
336
+            $goodAnswer= ($correct == $i) ? true : false;
337 337
 
338
-        	if ($goodAnswer) {
339
-        		$nbrGoodAnswers++;
340
-        		$weighting = abs($weighting);
341
-        		if($weighting > 0) {
338
+            if ($goodAnswer) {
339
+                $nbrGoodAnswers++;
340
+                $weighting = abs($weighting);
341
+                if($weighting > 0) {
342 342
                     $questionWeighting += $weighting;
343 343
                 }
344
-        	}
344
+            }
345 345
 
346
- 			if (empty($try))
347
- 				$try=0;
346
+                if (empty($try))
347
+                    $try=0;
348 348
 
349
- 			if (empty($lp)) {
350
- 				$lp=0;
351
- 			}
349
+                if (empty($lp)) {
350
+                    $lp=0;
351
+                }
352 352
 
353
- 			if (empty($destination)) {
354
- 				$destination=0;
355
- 			}
353
+                if (empty($destination)) {
354
+                    $destination=0;
355
+                }
356 356
 
357
- 			if ($url=='') {
358
- 				$url=0;
359
- 			}
357
+                if ($url=='') {
358
+                    $url=0;
359
+                }
360 360
 
361
- 			//1@@1;2;@@2;4;4;@@http://www.chamilo.org
362
-			$dest= $try.'@@'.$lp.'@@'.$destination.'@@'.$url;
363
-        	$objAnswer -> createAnswer($answer,$goodAnswer,$comment,$weighting,$i,NULL,NULL,$dest);
361
+                //1@@1;2;@@2;4;4;@@http://www.chamilo.org
362
+            $dest= $try.'@@'.$lp.'@@'.$destination.'@@'.$url;
363
+            $objAnswer -> createAnswer($answer,$goodAnswer,$comment,$weighting,$i,NULL,NULL,$dest);
364 364
         }
365 365
 
366 366
         //Create 666 answer
@@ -373,18 +373,18 @@  discard block
 block discarded – undo
373 373
 
374 374
         $objAnswer -> createAnswer($answer,$goodAnswer,$comment,$weighting,$i,NULL,NULL,$dest);
375 375
 
376
-    	// saves the answers into the data base
376
+        // saves the answers into the data base
377 377
         $objAnswer -> save();
378 378
 
379 379
         // sets the total weighting of the question
380 380
         $this -> updateWeighting($questionWeighting);
381 381
         $this -> save();
382
-	}
382
+    }
383 383
 
384
-	function return_header($feedback_type = null, $counter = null, $score = null)
384
+    function return_header($feedback_type = null, $counter = null, $score = null)
385 385
     {
386
-	    $header = parent::return_header($feedback_type, $counter, $score);
387
-	    $header .= '<table class="'.$this->question_table_class .'">
386
+        $header = parent::return_header($feedback_type, $counter, $score);
387
+        $header .= '<table class="'.$this->question_table_class .'">
388 388
 			<tr>
389 389
 				<th>'.get_lang("Choice").'</th>
390 390
 				<th>'. get_lang("ExpectedChoice").'</th>
@@ -392,5 +392,5 @@  discard block
 block discarded – undo
392 392
         $header .= '<th>'.get_lang("Comment").'</th>';
393 393
         $header .= '</tr>';
394 394
         return $header;
395
-	}
395
+    }
396 396
 }
Please login to merge, or discard this patch.
main/exercice/question_pool.php 1 patch
Indentation   +121 added lines, -121 removed lines patch added patch discarded remove patch
@@ -172,11 +172,11 @@  discard block
 block discarded – undo
172 172
 }
173 173
 
174 174
 if (isset($_SESSION['gradebook'])){
175
-	$gradebook=	$_SESSION['gradebook'];
175
+    $gradebook=	$_SESSION['gradebook'];
176 176
 }
177 177
 
178 178
 if (!empty($gradebook) && $gradebook=='view') {
179
-	$interbreadcrumb[]= array ('url' => '../gradebook/'.Security::remove_XSS($_SESSION['gradebook_dest']),'name' => get_lang('ToolGradebook'));
179
+    $interbreadcrumb[]= array ('url' => '../gradebook/'.Security::remove_XSS($_SESSION['gradebook_dest']),'name' => get_lang('ToolGradebook'));
180 180
 }
181 181
 
182 182
 // if admin of course
@@ -227,8 +227,8 @@  discard block
 block discarded – undo
227 227
 echo '</div>';
228 228
 
229 229
 if ($displayMessage != "") {
230
-	Display::display_confirmation_message($displayMessage);
231
-	$displayMessage = "";
230
+    Display::display_confirmation_message($displayMessage);
231
+    $displayMessage = "";
232 232
 }
233 233
 
234 234
 // Form
@@ -236,7 +236,7 @@  discard block
 block discarded – undo
236 236
 // Title
237 237
 echo '<legend>'.$nameTools.' - '.$titleAdd.'</legend>';
238 238
 if (isset($type)) {
239
-	echo '<input type="hidden" name="type" value="1">';
239
+    echo '<input type="hidden" name="type" value="1">';
240 240
 }
241 241
 echo '<input type="hidden" name="fromExercise" value="'.$fromExercise.'">';
242 242
 
@@ -283,11 +283,11 @@  discard block
 block discarded – undo
283 283
 foreach ($course_list as $item) {
284 284
     $courseItemId = $item['real_id'];
285 285
     $courseInfo = api_get_course_info_by_id($courseItemId);
286
-	$course_select_list[$courseItemId] = "";
287
-	if ($courseItemId == api_get_course_int_id()) {
288
-		$course_select_list[$courseItemId] = ">&nbsp;&nbsp;&nbsp;&nbsp;";
289
-	}
290
-	$course_select_list[$courseItemId] .= $courseInfo['title'];
286
+    $course_select_list[$courseItemId] = "";
287
+    if ($courseItemId == api_get_course_int_id()) {
288
+        $course_select_list[$courseItemId] = ">&nbsp;&nbsp;&nbsp;&nbsp;";
289
+    }
290
+    $course_select_list[$courseItemId] .= $courseInfo['title'];
291 291
 }
292 292
 
293 293
 $select_course_html =  Display::select(
@@ -304,11 +304,11 @@  discard block
 block discarded – undo
304 304
     // no course selected, reset menu test / difficult� / type de reponse
305 305
     reset_menu_exo_lvl_type();
306 306
 } else {
307
-	$course_info = api_get_course_info_by_id($selected_course);
307
+    $course_info = api_get_course_info_by_id($selected_course);
308 308
 }
309 309
 // If course has changed, reset the menu default
310 310
 if ($course_id_changed) {
311
-	reset_menu_exo_lvl_type();
311
+    reset_menu_exo_lvl_type();
312 312
 }
313 313
 
314 314
 $course_id = $course_info['real_id'];
@@ -356,7 +356,7 @@  discard block
 block discarded – undo
356 356
 }
357 357
 
358 358
 if ($exercise_id_changed == 1) {
359
-	reset_menu_lvl_type();
359
+    reset_menu_lvl_type();
360 360
 }
361 361
 $select_exercise_html =  Display::select(
362 362
     'exerciseId',
@@ -434,19 +434,19 @@  discard block
 block discarded – undo
434 434
 // if we have selected an exercise in the list-box 'Filter'
435 435
 
436 436
 if ($exerciseId > 0) {
437
-	$where = '';
438
-	$from = '';
439
-	if (isset($courseCategoryId) && $courseCategoryId > 0) {
440
-		$from = ", $TBL_COURSE_REL_CATEGORY crc ";
441
-		$where .= " AND crc.c_id=$selected_course AND crc.question_id=qu.id AND crc.category_id=$courseCategoryId";
442
-	}
443
-	if (isset($exerciseLevel) && $exerciseLevel != -1) {
444
-		$where .= ' AND level='.$exerciseLevel;
445
-	}
446
-	if (isset($answerType) && $answerType > 0) {
447
-		$where .= ' AND type='.$answerType;
448
-	}
449
-	$sql = "SELECT DISTINCT
437
+    $where = '';
438
+    $from = '';
439
+    if (isset($courseCategoryId) && $courseCategoryId > 0) {
440
+        $from = ", $TBL_COURSE_REL_CATEGORY crc ";
441
+        $where .= " AND crc.c_id=$selected_course AND crc.question_id=qu.id AND crc.category_id=$courseCategoryId";
442
+    }
443
+    if (isset($exerciseLevel) && $exerciseLevel != -1) {
444
+        $where .= ' AND level='.$exerciseLevel;
445
+    }
446
+    if (isset($answerType) && $answerType > 0) {
447
+        $where .= ' AND type='.$answerType;
448
+    }
449
+    $sql = "SELECT DISTINCT
450 450
 	            id,
451 451
 	            question,
452 452
 	            type,
@@ -468,22 +468,22 @@  discard block
 block discarded – undo
468 468
         $mainQuestionList[] = $row;
469 469
     }
470 470
 } elseif ($exerciseId == -1) {
471
-	// If we have selected the option 'Orphan questions' in the list-box 'Filter'
472
-	$level_where = '';
473
-	$from = '';
474
-	if (isset($courseCategoryId) && $courseCategoryId > 0) {
475
-		$from = " INNER JOIN  $TBL_COURSE_REL_CATEGORY crc ON crc.question_id=q.id AND crc.c_id= q.c_id ";
476
-		$level_where .= " AND
471
+    // If we have selected the option 'Orphan questions' in the list-box 'Filter'
472
+    $level_where = '';
473
+    $from = '';
474
+    if (isset($courseCategoryId) && $courseCategoryId > 0) {
475
+        $from = " INNER JOIN  $TBL_COURSE_REL_CATEGORY crc ON crc.question_id=q.id AND crc.c_id= q.c_id ";
476
+        $level_where .= " AND
477 477
 		        crc.c_id = $selected_course AND
478 478
 		        crc.category_id = $courseCategoryId";
479
-	}
480
-	if (isset($exerciseLevel) && $exerciseLevel!= -1 ) {
481
-		$level_where = ' AND level='.$exerciseLevel;
482
-	}
483
-	$answer_where = '';
484
-	if (isset($answerType) && $answerType >0 -1 ) {
485
-		$answer_where = ' AND type='.$answerType;
486
-	}
479
+    }
480
+    if (isset($exerciseLevel) && $exerciseLevel!= -1 ) {
481
+        $level_where = ' AND level='.$exerciseLevel;
482
+    }
483
+    $answer_where = '';
484
+    if (isset($answerType) && $answerType >0 -1 ) {
485
+        $answer_where = ' AND type='.$answerType;
486
+    }
487 487
 
488 488
     // @todo fix this query with the new id field
489 489
     $sql = " (
@@ -525,24 +525,24 @@  discard block
 block discarded – undo
525 525
         $mainQuestionList[] = $row;
526 526
     }
527 527
 } else {
528
-	// All tests for selected course
528
+    // All tests for selected course
529 529
     // If we have not selected any option in the list-box 'Filter'
530
-	$filter = '';
531
-	$from = '';
530
+    $filter = '';
531
+    $from = '';
532 532
 
533
-	if (isset($courseCategoryId) && $courseCategoryId > 0) {
534
-		$from = ", $TBL_COURSE_REL_CATEGORY crc ";
535
-		$filter .= " AND
533
+    if (isset($courseCategoryId) && $courseCategoryId > 0) {
534
+        $from = ", $TBL_COURSE_REL_CATEGORY crc ";
535
+        $filter .= " AND
536 536
 		            crc.c_id = $selected_course AND
537 537
 		            crc.question_id = qu.id AND
538 538
 		            crc.category_id = $courseCategoryId";
539
-	}
540
-	if (isset($exerciseLevel) && $exerciseLevel != -1) {
541
-		$filter .= ' AND level='.$exerciseLevel.' ';
542
-	}
543
-	if (isset($answerType) && $answerType > 0) {
544
-		$filter .= ' AND qu.type='.$answerType.' ';
545
-	}
539
+    }
540
+    if (isset($exerciseLevel) && $exerciseLevel != -1) {
541
+        $filter .= ' AND level='.$exerciseLevel.' ';
542
+    }
543
+    if (isset($answerType) && $answerType > 0) {
544
+        $filter .= ' AND qu.type='.$answerType.' ';
545
+    }
546 546
 
547 547
     if (!empty($session_id) && $session_id != '-1') {
548 548
         $mainQuestionList = array();
@@ -644,7 +644,7 @@  discard block
 block discarded – undo
644 644
             $mainQuestionList[] = $row;
645 645
         }
646 646
     }
647
-	// forces the value to 0
647
+    // forces the value to 0
648 648
     $exerciseId = 0;
649 649
 }
650 650
 
@@ -670,33 +670,33 @@  discard block
 block discarded – undo
670 670
 //
671 671
 if ($fromExercise <= 0) {
672 672
     // NOT IN A TEST - IN THE COURSE
673
-	if ($selected_course == api_get_course_int_id()) {
674
-		$actionLabel = get_lang('Modify');
675
-		$actionIcon1 = "edit";
676
-		$actionIcon2 = "delete";
673
+    if ($selected_course == api_get_course_int_id()) {
674
+        $actionLabel = get_lang('Modify');
675
+        $actionIcon1 = "edit";
676
+        $actionIcon2 = "delete";
677 677
         // We are in the course, question title can be a link to the question edit page
678
-		$questionTagA = 1;
678
+        $questionTagA = 1;
679 679
     } else { // NOT IN A TEST - NOT IN THE COURSE
680
-		$actionLabel = get_lang('Reuse');
681
-		$actionIcon1 = get_lang('MustBeInATest');
682
-		$actionIcon2 = "";
680
+        $actionLabel = get_lang('Reuse');
681
+        $actionIcon1 = get_lang('MustBeInATest');
682
+        $actionIcon2 = "";
683 683
         // We are not in this course, to messy if we link to the question in another course
684
-		$questionTagA = 0;
685
-	}
684
+        $questionTagA = 0;
685
+    }
686 686
 } else {
687 687
     // IN A TEST - IN THE COURSE
688
-	if ($selected_course == api_get_course_int_id()) {
689
-		$actionLabel = get_lang('Reuse');
690
-		$actionIcon1 = "add";
691
-		$actionIcon2 = "";
692
-		$questionTagA = 1;
688
+    if ($selected_course == api_get_course_int_id()) {
689
+        $actionLabel = get_lang('Reuse');
690
+        $actionIcon1 = "add";
691
+        $actionIcon2 = "";
692
+        $questionTagA = 1;
693 693
     } else {
694 694
         // IN A TEST - NOT IN THE COURSE
695
-		$actionLabel = get_lang('Reuse');
696
-		$actionIcon1 = "clone";
697
-		$actionIcon2 = "";
698
-		$questionTagA = 0;
699
-	}
695
+        $actionLabel = get_lang('Reuse');
696
+        $actionIcon1 = "clone";
697
+        $actionIcon2 = "";
698
+        $questionTagA = 0;
699
+    }
700 700
 }
701 701
 // Display table
702 702
 $header = array(
@@ -789,7 +789,7 @@  discard block
 block discarded – undo
789 789
 );
790 790
 
791 791
 if (!$nbrQuestions) {
792
-	echo get_lang('NoQuestion');
792
+    echo get_lang('NoQuestion');
793 793
 }
794 794
 
795 795
 Display::display_footer();
@@ -801,9 +801,9 @@  discard block
 block discarded – undo
801 801
 */
802 802
 function reset_menu_lvl_type()
803 803
 {
804
-	global $exerciseLevel, $answerType;
805
-	$answerType = -1;
806
-	$exerciseLevel = -1;
804
+    global $exerciseLevel, $answerType;
805
+    $answerType = -1;
806
+    $exerciseLevel = -1;
807 807
 }
808 808
 
809 809
 /**
@@ -813,10 +813,10 @@  discard block
 block discarded – undo
813 813
 */
814 814
 function reset_menu_exo_lvl_type()
815 815
 {
816
-	global $exerciseId, $courseCategoryId;
817
-	reset_menu_lvl_type();
818
-	$exerciseId = 0;
819
-	$courseCategoryId = 0;
816
+    global $exerciseId, $courseCategoryId;
817
+    reset_menu_lvl_type();
818
+    $exerciseId = 0;
819
+    $courseCategoryId = 0;
820 820
 }
821 821
 
822 822
 /**
@@ -838,17 +838,17 @@  discard block
 block discarded – undo
838 838
     $in_questionname,
839 839
     $sessionId
840 840
 ) {
841
-	$res = $in_questionname;
841
+    $res = $in_questionname;
842 842
     $sessionIcon = null;
843
-	if ($in_addA) {
843
+    if ($in_addA) {
844 844
         if (!empty($sessionId) && $sessionId != -1) {
845 845
             $sessionIcon = ' '.Display::return_icon('star.png', get_lang('Session'));
846 846
         }
847
-		$res = "<a href='admin.php?".api_get_cidreq()."&editQuestion=$in_questionid&type=$in_questiontype&fromExercise=$in_fromex'>".
847
+        $res = "<a href='admin.php?".api_get_cidreq()."&editQuestion=$in_questionid&type=$in_questiontype&fromExercise=$in_fromex'>".
848 848
             $res.$sessionIcon.
849 849
             "</a>";
850
-	}
851
-	return $res;
850
+    }
851
+    return $res;
852 852
 }
853 853
 
854 854
 /**
@@ -878,16 +878,16 @@  discard block
 block discarded – undo
878 878
     $in_session_id,
879 879
     $in_exercise_id
880 880
 ) {
881
-	$res = "";
882
-	$getParams = "&selected_course=$in_selected_course&courseCategoryId=$in_courseCategoryId&exerciseId=$in_exercise_id&exerciseLevel=$in_exerciseLevel&answerType=$in_answerType&session_id=$in_session_id";
883
-	switch ($in_action) {
884
-		case "delete" :
885
-			$res = "<a href='".api_get_self()."?".api_get_cidreq().$getParams."&delete=$in_questionid' onclick='return confirm_your_choice()'>";
886
-			$res .= Display::return_icon("delete.png", get_lang('Delete'));
887
-			$res .= "</a>";
888
-			break;
889
-		case "edit" :
890
-			$res = get_a_tag_for_question(
881
+    $res = "";
882
+    $getParams = "&selected_course=$in_selected_course&courseCategoryId=$in_courseCategoryId&exerciseId=$in_exercise_id&exerciseLevel=$in_exerciseLevel&answerType=$in_answerType&session_id=$in_session_id";
883
+    switch ($in_action) {
884
+        case "delete" :
885
+            $res = "<a href='".api_get_self()."?".api_get_cidreq().$getParams."&delete=$in_questionid' onclick='return confirm_your_choice()'>";
886
+            $res .= Display::return_icon("delete.png", get_lang('Delete'));
887
+            $res .= "</a>";
888
+            break;
889
+        case "edit" :
890
+            $res = get_a_tag_for_question(
891 891
                 1,
892 892
                 $from_exercise,
893 893
                 $in_questionid,
@@ -895,33 +895,33 @@  discard block
 block discarded – undo
895 895
                 Display::return_icon("edit.png", get_lang('Modify')),
896 896
                 $in_session_id
897 897
             );
898
-			break;
899
-		case "add":
900
-			// add if question is not already in test
901
-			$myObjEx = new Exercise();
902
-			$myObjEx->read($from_exercise);
903
-			if (!$myObjEx->isInList($in_questionid)) {
904
-				$res = "<a href='".api_get_self()."?".api_get_cidreq().$getParams."&recup=$in_questionid&fromExercise=$from_exercise'>";
905
-				$res .= Display::return_icon("view_more_stats.gif", get_lang('InsertALinkToThisQuestionInTheExercise'));
906
-				$res .= "</a>";
898
+            break;
899
+        case "add":
900
+            // add if question is not already in test
901
+            $myObjEx = new Exercise();
902
+            $myObjEx->read($from_exercise);
903
+            if (!$myObjEx->isInList($in_questionid)) {
904
+                $res = "<a href='".api_get_self()."?".api_get_cidreq().$getParams."&recup=$in_questionid&fromExercise=$from_exercise'>";
905
+                $res .= Display::return_icon("view_more_stats.gif", get_lang('InsertALinkToThisQuestionInTheExercise'));
906
+                $res .= "</a>";
907 907
             } else {
908
-				$res = "-";
909
-			}
910
-			unset($myObjEx);
911
-			break;
912
-		case "clone":
908
+                $res = "-";
909
+            }
910
+            unset($myObjEx);
911
+            break;
912
+        case "clone":
913 913
             $url = api_get_self()."?".api_get_cidreq().$getParams."&question_copy=$in_questionid&course_id=$in_selected_course&fromExercise=$from_exercise";
914 914
             $res = Display::url(
915 915
                 Display::return_icon('cd.gif', get_lang('ReUseACopyInCurrentTest')),
916 916
                 $url
917 917
             );
918
-			break;
919
-		default :
920
-			$res = $in_action;
921
-			break;
922
-	}
918
+            break;
919
+        default :
920
+            $res = $in_action;
921
+            break;
922
+    }
923 923
 
924
-	return $res;
924
+    return $res;
925 925
 }
926 926
 
927 927
 /**
@@ -930,14 +930,14 @@  discard block
 block discarded – undo
930 930
  */
931 931
 function get_question_type_for_question($in_selectedcourse, $in_questionid)
932 932
 {
933
-	$myObjQuestion = Question::read($in_questionid, $in_selectedcourse);
933
+    $myObjQuestion = Question::read($in_questionid, $in_selectedcourse);
934 934
     $questionType = null;
935 935
     if (!empty($myObjQuestion)) {
936 936
         list($typeImg, $typeExpl) = $myObjQuestion->get_type_icon_html();
937 937
         $questionType = Display::tag('div', Display::return_icon($typeImg, $typeExpl, array(), 32), array());
938 938
         unset($myObjQuestion);
939 939
     }
940
-	return $questionType;
940
+    return $questionType;
941 941
 }
942 942
 
943 943
 /**
@@ -946,6 +946,6 @@  discard block
 block discarded – undo
946 946
  */
947 947
 function get_question_categorie_for_question($in_courseid, $in_questionid)
948 948
 {
949
-	$cat = TestCategory::getCategoryNameForQuestion($in_questionid, $in_courseid);
950
-	return $cat;
949
+    $cat = TestCategory::getCategoryNameForQuestion($in_questionid, $in_courseid);
950
+    return $cat;
951 951
 }
Please login to merge, or discard this patch.
main/gradebook/gradebook_display_certificate.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -162,17 +162,17 @@
 block discarded – undo
162 162
 
163 163
     if ($form->validate()) {
164 164
         $officialCode = $form->getSubmitValue('filter');
165
-         if ($officialCode == 'all') {
165
+            if ($officialCode == 'all') {
166 166
             $certificate_list = GradebookUtils::get_list_users_certificates($cat_id);
167 167
         } else {
168
-             $userList = UserManager::getUsersByOfficialCode($officialCode);
169
-             if (!empty($userList)) {
170
-                 $certificate_list = GradebookUtils::get_list_users_certificates(
171
-                     $cat_id,
172
-                     $userList
173
-                 );
174
-             }
175
-         }
168
+                $userList = UserManager::getUsersByOfficialCode($officialCode);
169
+                if (!empty($userList)) {
170
+                    $certificate_list = GradebookUtils::get_list_users_certificates(
171
+                        $cat_id,
172
+                        $userList
173
+                    );
174
+                }
175
+            }
176 176
     } else {
177 177
         $certificate_list = GradebookUtils::get_list_users_certificates($cat_id);
178 178
     }
Please login to merge, or discard this patch.
main/gradebook/gradebook_add_user.php 1 patch
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -18,53 +18,53 @@
 block discarded – undo
18 18
 $newstudents = $evaluation[0]->get_not_subscribed_students();
19 19
 
20 20
 if (count($newstudents) == '0') {
21
-	header('Location: gradebook_view_result.php?nouser=&selecteval=' . Security::remove_XSS($_GET['selecteval']).'&'.api_get_cidreq());
22
-	exit;
21
+    header('Location: gradebook_view_result.php?nouser=&selecteval=' . Security::remove_XSS($_GET['selecteval']).'&'.api_get_cidreq());
22
+    exit;
23 23
 }
24 24
 $add_user_form= new EvalForm(EvalForm :: TYPE_ADD_USERS_TO_EVAL,
25
-							 $evaluation[0],
26
-							 null,
27
-							 'add_users_to_evaluation',
28
-							 null,
29
-							 api_get_self() . '?selecteval=' . Security::remove_XSS($_GET['selecteval']),
30
-							 Security::remove_XSS($_GET['firstletter']),
31
-							 $newstudents);
25
+                                $evaluation[0],
26
+                                null,
27
+                                'add_users_to_evaluation',
28
+                                null,
29
+                                api_get_self() . '?selecteval=' . Security::remove_XSS($_GET['selecteval']),
30
+                                Security::remove_XSS($_GET['firstletter']),
31
+                                $newstudents);
32 32
 
33 33
 if ( isset($_POST['submit_button']) ) {
34
-	$users= is_array($_POST['add_users']) ? $_POST['add_users'] : array ();
35
-	foreach ($users as $key => $value){
36
-		$users[$key]= intval($value);
37
-	}
34
+    $users= is_array($_POST['add_users']) ? $_POST['add_users'] : array ();
35
+    foreach ($users as $key => $value){
36
+        $users[$key]= intval($value);
37
+    }
38 38
 
39
-	if (count($users) == 0) {
40
-		header('Location: ' . api_get_self() . '?erroroneuser=&selecteval=' .Security::remove_XSS($_GET['selecteval']));
41
-		exit;
42
-	} else {
43
-		foreach ($users as $user_id) {
44
-			$result= new Result();
45
-			$result->set_user_id($user_id);
46
-			$result->set_evaluation_id($_GET['selecteval']);
47
-			$result->add();
48
-			}
49
-		}
50
-	header('Location: gradebook_view_result.php?adduser=&selecteval=' .Security::remove_XSS($_GET['selecteval']).'&'.api_get_cidreq());
51
-	exit;
52
-	} elseif ($_POST['firstLetterUser']) {
53
-		$firstletter= $_POST['firstLetterUser'];
54
-		if (!empty ($firstletter)) {
55
-			header('Location: ' . api_get_self() . '?firstletter=' . Security::remove_XSS($firstletter) . '&selecteval=' . Security::remove_XSS($_GET['selecteval']));
56
-			exit;
57
-		}
39
+    if (count($users) == 0) {
40
+        header('Location: ' . api_get_self() . '?erroroneuser=&selecteval=' .Security::remove_XSS($_GET['selecteval']));
41
+        exit;
42
+    } else {
43
+        foreach ($users as $user_id) {
44
+            $result= new Result();
45
+            $result->set_user_id($user_id);
46
+            $result->set_evaluation_id($_GET['selecteval']);
47
+            $result->add();
48
+            }
49
+        }
50
+    header('Location: gradebook_view_result.php?adduser=&selecteval=' .Security::remove_XSS($_GET['selecteval']).'&'.api_get_cidreq());
51
+    exit;
52
+    } elseif ($_POST['firstLetterUser']) {
53
+        $firstletter= $_POST['firstLetterUser'];
54
+        if (!empty ($firstletter)) {
55
+            header('Location: ' . api_get_self() . '?firstletter=' . Security::remove_XSS($firstletter) . '&selecteval=' . Security::remove_XSS($_GET['selecteval']));
56
+            exit;
57
+        }
58 58
 }
59 59
 
60 60
 $interbreadcrumb[]= array ('url' => Security::remove_XSS($_SESSION['gradebook_dest']),'name' => get_lang('Gradebook'));
61 61
 $interbreadcrumb[]= array(
62
-	'url' => 'gradebook_view_result.php?selecteval=' .Security::remove_XSS($_GET['selecteval']).'&'.api_get_cidreq(),
63
-	'name' => get_lang('ViewResult')
62
+    'url' => 'gradebook_view_result.php?selecteval=' .Security::remove_XSS($_GET['selecteval']).'&'.api_get_cidreq(),
63
+    'name' => get_lang('ViewResult')
64 64
 );
65 65
 Display :: display_header(get_lang('AddUserToEval'));
66 66
 if (isset ($_GET['erroroneuser'])){
67
-	Display :: display_warning_message(get_lang('AtLeastOneUser'),false);
67
+    Display :: display_warning_message(get_lang('AtLeastOneUser'),false);
68 68
 }
69 69
 DisplayGradebook :: display_header_result($evaluation[0], null, 0,0);
70 70
 echo '<div class="main">';
Please login to merge, or discard this patch.
main/gradebook/lib/user_data_generator.class.php 1 patch
Indentation   +346 added lines, -346 removed lines patch added patch discarded remove patch
@@ -10,28 +10,28 @@  discard block
 block discarded – undo
10 10
  */
11 11
 class UserDataGenerator
12 12
 {
13
-	// Sorting types constants
14
-	const UDG_SORT_TYPE = 1;
15
-	const UDG_SORT_NAME = 2;
16
-	const UDG_SORT_COURSE = 4;
17
-	const UDG_SORT_CATEGORY = 8;
18
-	const UDG_SORT_AVERAGE = 16;
19
-	const UDG_SORT_SCORE = 32;
20
-	const UDG_SORT_MASK = 64;
21
-
22
-	const UDG_SORT_ASC = 128;
23
-	const UDG_SORT_DESC = 256;
24
-
25
-	private $items;
26
-	private $userid;
27
-
28
-	private $coursecodecache;
29
-	private $categorycache;
30
-	private $scorecache;
31
-	private $avgcache;
32
-
33
-	public function UserDataGenerator($userid, $evals = array(), $links = array())
34
-	{
13
+    // Sorting types constants
14
+    const UDG_SORT_TYPE = 1;
15
+    const UDG_SORT_NAME = 2;
16
+    const UDG_SORT_COURSE = 4;
17
+    const UDG_SORT_CATEGORY = 8;
18
+    const UDG_SORT_AVERAGE = 16;
19
+    const UDG_SORT_SCORE = 32;
20
+    const UDG_SORT_MASK = 64;
21
+
22
+    const UDG_SORT_ASC = 128;
23
+    const UDG_SORT_DESC = 256;
24
+
25
+    private $items;
26
+    private $userid;
27
+
28
+    private $coursecodecache;
29
+    private $categorycache;
30
+    private $scorecache;
31
+    private $avgcache;
32
+
33
+    public function UserDataGenerator($userid, $evals = array(), $links = array())
34
+    {
35 35
         $this->userid = $userid;
36 36
         $evals_filtered = array();
37 37
         $result = array();
@@ -62,330 +62,330 @@  discard block
 block discarded – undo
62 62
         $this->avgcache = null;
63 63
     }
64 64
 
65
-	/**
66
-	 * Get total number of items (rows)
67
-	 */
68
-	public function get_total_items_count()
69
-	{
70
-		return count($this->items);
71
-	}
72
-
73
-	/**
74
-	 * Get actual array data
75
-	 * @return array 2-dimensional array - each array contains the elements:
76
-	 * 0: eval/link object
77
-	 * 1: item name
78
-	 * 2: course name
79
-	 * 3: category name
80
-	 * 4: average score
81
-	 * 5: student's score
82
-	 * 6: student's score as custom display (only if custom scoring enabled)
83
-	 */
84
-	public function get_data($sorting = 0, $start = 0, $count = null, $ignore_score_color = false)
85
-	{
86
-		// do some checks on count, redefine if invalid value
87
-		if (!isset($count)) {
88
-			$count = count ($this->items) - $start;
89
-		}
90
-		if ($count < 0) {
91
-			$count = 0;
92
-		}
93
-		$allitems = $this->items;
94
-
95
-		// sort users array
96
-		if ($sorting & self :: UDG_SORT_TYPE) {
97
-			usort($allitems, array('UserDataGenerator', 'sort_by_type'));
98
-		}elseif ($sorting & self :: UDG_SORT_NAME) {
99
-			usort($allitems, array('UserDataGenerator', 'sort_by_name'));
100
-		} elseif ($sorting & self :: UDG_SORT_COURSE) {
101
-			usort($allitems, array('UserDataGenerator', 'sort_by_course'));
102
-		} elseif ($sorting & self :: UDG_SORT_CATEGORY) {
103
-			usort($allitems, array('UserDataGenerator', 'sort_by_category'));
104
-		} elseif ($sorting & self :: UDG_SORT_AVERAGE) {
105
-			// if user sorts on average scores, first calculate them and cache them
106
-			foreach ($allitems as $item) {
107
-				$this->avgcache[$item->get_item_type() . $item->get_id()]= $item->calc_score();
108
-			}
109
-			usort($allitems, array('UserDataGenerator', 'sort_by_average'));
110
-		} elseif ($sorting & self :: UDG_SORT_SCORE) {
111
-			// if user sorts on student's scores, first calculate them and cache them
112
-			foreach ($allitems as $item) {
113
-				$this->scorecache[$item->get_item_type() . $item->get_id()]
114
-					= $item->calc_score($this->userid);
115
-			}
116
-			usort($allitems, array('UserDataGenerator', 'sort_by_score'));
117
-		} elseif ($sorting & self :: UDG_SORT_MASK) {
118
-			// if user sorts on student's masks, first calculate scores and cache them
119
-			foreach ($allitems as $item) {
120
-				$this->scorecache[$item->get_item_type() . $item->get_id()]
121
-					= $item->calc_score($this->userid);
122
-			}
123
-			usort($allitems, array('UserDataGenerator', 'sort_by_mask'));
124
-		}
125
-
126
-		if ($sorting & self :: UDG_SORT_DESC) {
127
-			$allitems = array_reverse($allitems);
128
-		}
129
-		// select the items we have to display
130
-		$visibleitems = array_slice($allitems, $start, $count);
131
-
132
-		// fill score cache if not done yet
133
-		if (!isset ($this->scorecache)) {
134
-			foreach ($visibleitems as $item) {
135
-				$this->scorecache[$item->get_item_type() . $item->get_id()]
136
-					= $item->calc_score($this->userid);
137
-			}
138
-
139
-		}
140
-		// generate the data to display
141
-		$scoredisplay = ScoreDisplay :: instance();
142
-		$data = array();
143
-		foreach ($visibleitems as $item) {
144
-			$row = array ();
145
-			$row[] = $item;
146
-			$row[] = $item->get_name();
147
-			$row[] = $this->build_course_name($item);
148
-			$row[] = $this->build_category_name($item);
149
-			$row[] = $this->build_average_column($item, $ignore_score_color);
150
-			$row[] = $this->build_result_column($item, $ignore_score_color);
151
-			if ($scoredisplay->is_custom())
152
-				$row[] = $this->build_mask_column($item, $ignore_score_color);
153
-			$data[] = $row;
154
-		}
155
-		return $data;
156
-	}
157
-
158
-	/**
159
-	 * @param $item1
160
-	 * @param $item2
161
-	 * @return int
162
-	 */
163
-	function sort_by_type($item1, $item2)
164
-	{
165
-		if ($item1->get_item_type() == $item2->get_item_type()) {
166
-			return $this->sort_by_name($item1,$item2);
167
-		} else {
168
-			return ($item1->get_item_type() < $item2->get_item_type() ? -1 : 1);
169
-		}
170
-	}
171
-
172
-	/**
173
-	 * @param $item1
174
-	 * @param $item2
175
-	 * @return int
176
-	 */
177
-	function sort_by_course($item1, $item2)
178
-	{
179
-		$name1 = api_strtolower($this->get_course_name_from_code_cached($item1->get_course_code()));
180
-		$name2 = api_strtolower($this->get_course_name_from_code_cached($item2->get_course_code()));
181
-		return api_strnatcmp($name1, $name2);
182
-	}
183
-
184
-	/**
185
-	 * @param $item1
186
-	 * @param $item2
187
-	 * @return int
188
-	 */
189
-	function sort_by_category($item1, $item2)
190
-	{
191
-		$cat1 = $this->get_category_cached($item1->get_category_id());
192
-		$cat2 = $this->get_category_cached($item2->get_category_id());
193
-		$name1 = api_strtolower($this->get_category_name_to_display($cat1));
194
-		$name2 = api_strtolower($this->get_category_name_to_display($cat2));
195
-
196
-		return api_strnatcmp($name1, $name2);
197
-	}
198
-
199
-	/**
200
-	 * @param $item1
201
-	 * @param $item2
202
-	 * @return int
203
-	 */
204
-	function sort_by_name($item1, $item2)
205
-	{
206
-		return api_strnatcmp($item1->get_name(),$item2->get_name());
207
-	}
208
-
209
-	/**
210
-	 * @param $item1
211
-	 * @param $item2
212
-	 * @return int
213
-	 */
214
-	function sort_by_average($item1, $item2)
215
-	{
216
-		$score1 = $this->avgcache[$item1->get_item_type() . $item1->get_id()];
217
-		$score2 = $this->avgcache[$item2->get_item_type() . $item2->get_id()];
218
-
219
-		return $this->compare_scores($score1, $score2);
220
-	}
221
-
222
-	/**
223
-	 * @param $item1
224
-	 * @param $item2
225
-	 * @return int
226
-	 */
227
-	function sort_by_score($item1, $item2)
228
-	{
229
-		$score1 = $this->scorecache[$item1->get_item_type() . $item1->get_id()];
230
-		$score2 = $this->scorecache[$item2->get_item_type() . $item2->get_id()];
231
-
232
-		return $this->compare_scores($score1, $score2);
233
-	}
234
-
235
-	/**
236
-	 * @param $item1
237
-	 * @param $item2
238
-	 * @return int
239
-	 */
240
-	function sort_by_mask($item1, $item2)
241
-	{
242
-		$score1 = $this->scorecache[$item1->get_item_type() . $item1->get_id()];
243
-		$score2 = $this->scorecache[$item2->get_item_type() . $item2->get_id()];
244
-
245
-		return ScoreDisplay :: compare_scores_by_custom_display($score1, $score2);
246
-	}
247
-
248
-	/**
249
-	 * @param $score1
250
-	 * @param $score2
251
-	 * @return int
252
-	 */
253
-	function compare_scores($score1, $score2)
254
-	{
255
-		if (!isset($score1)) {
256
-			return (isset($score2) ? 1 : 0);
257
-		} elseif (!isset($score2)) {
258
-			return -1;
259
-		} elseif (($score1[0]/$score1[1]) == ($score2[0]/$score2[1])) {
260
-			return 0;
261
-		} else {
262
-			return (($score1[0]/$score1[1]) < ($score2[0]/$score2[1]) ? -1 : 1);
263
-		}
264
-	}
265
-
266
-	/**
267
-	 * @param $item
268
-	 * @return mixed
269
-	 */
270
-	private function build_course_name($item)
271
-	{
272
-		return $this->get_course_name_from_code_cached($item->get_course_code());
273
-	}
274
-
275
-	/**
276
-	 * @param $item
277
-	 * @return string
278
-	 */
279
-	private function build_category_name($item)
280
-	{
281
-		$cat = $this->get_category_cached($item->get_category_id());
282
-
283
-		return $this->get_category_name_to_display($cat);
284
-	}
285
-
286
-	/**
287
-	 * @param $item
288
-	 * @param $ignore_score_color
289
-	 * @return string
290
-	 */
291
-	private function build_average_column($item, $ignore_score_color)
292
-	{
293
-		if (isset($this->avgcache)) {
294
-			$avgscore = $this->avgcache[$item->get_item_type() . $item->get_id()];
295
-		} else {
296
-			$avgscore = $item->calc_score();
297
-		}
298
-
299
-		$scoredisplay = ScoreDisplay :: instance();
300
-		$displaytype = SCORE_AVERAGE;
301
-		/*if ($ignore_score_color)
65
+    /**
66
+     * Get total number of items (rows)
67
+     */
68
+    public function get_total_items_count()
69
+    {
70
+        return count($this->items);
71
+    }
72
+
73
+    /**
74
+     * Get actual array data
75
+     * @return array 2-dimensional array - each array contains the elements:
76
+     * 0: eval/link object
77
+     * 1: item name
78
+     * 2: course name
79
+     * 3: category name
80
+     * 4: average score
81
+     * 5: student's score
82
+     * 6: student's score as custom display (only if custom scoring enabled)
83
+     */
84
+    public function get_data($sorting = 0, $start = 0, $count = null, $ignore_score_color = false)
85
+    {
86
+        // do some checks on count, redefine if invalid value
87
+        if (!isset($count)) {
88
+            $count = count ($this->items) - $start;
89
+        }
90
+        if ($count < 0) {
91
+            $count = 0;
92
+        }
93
+        $allitems = $this->items;
94
+
95
+        // sort users array
96
+        if ($sorting & self :: UDG_SORT_TYPE) {
97
+            usort($allitems, array('UserDataGenerator', 'sort_by_type'));
98
+        }elseif ($sorting & self :: UDG_SORT_NAME) {
99
+            usort($allitems, array('UserDataGenerator', 'sort_by_name'));
100
+        } elseif ($sorting & self :: UDG_SORT_COURSE) {
101
+            usort($allitems, array('UserDataGenerator', 'sort_by_course'));
102
+        } elseif ($sorting & self :: UDG_SORT_CATEGORY) {
103
+            usort($allitems, array('UserDataGenerator', 'sort_by_category'));
104
+        } elseif ($sorting & self :: UDG_SORT_AVERAGE) {
105
+            // if user sorts on average scores, first calculate them and cache them
106
+            foreach ($allitems as $item) {
107
+                $this->avgcache[$item->get_item_type() . $item->get_id()]= $item->calc_score();
108
+            }
109
+            usort($allitems, array('UserDataGenerator', 'sort_by_average'));
110
+        } elseif ($sorting & self :: UDG_SORT_SCORE) {
111
+            // if user sorts on student's scores, first calculate them and cache them
112
+            foreach ($allitems as $item) {
113
+                $this->scorecache[$item->get_item_type() . $item->get_id()]
114
+                    = $item->calc_score($this->userid);
115
+            }
116
+            usort($allitems, array('UserDataGenerator', 'sort_by_score'));
117
+        } elseif ($sorting & self :: UDG_SORT_MASK) {
118
+            // if user sorts on student's masks, first calculate scores and cache them
119
+            foreach ($allitems as $item) {
120
+                $this->scorecache[$item->get_item_type() . $item->get_id()]
121
+                    = $item->calc_score($this->userid);
122
+            }
123
+            usort($allitems, array('UserDataGenerator', 'sort_by_mask'));
124
+        }
125
+
126
+        if ($sorting & self :: UDG_SORT_DESC) {
127
+            $allitems = array_reverse($allitems);
128
+        }
129
+        // select the items we have to display
130
+        $visibleitems = array_slice($allitems, $start, $count);
131
+
132
+        // fill score cache if not done yet
133
+        if (!isset ($this->scorecache)) {
134
+            foreach ($visibleitems as $item) {
135
+                $this->scorecache[$item->get_item_type() . $item->get_id()]
136
+                    = $item->calc_score($this->userid);
137
+            }
138
+
139
+        }
140
+        // generate the data to display
141
+        $scoredisplay = ScoreDisplay :: instance();
142
+        $data = array();
143
+        foreach ($visibleitems as $item) {
144
+            $row = array ();
145
+            $row[] = $item;
146
+            $row[] = $item->get_name();
147
+            $row[] = $this->build_course_name($item);
148
+            $row[] = $this->build_category_name($item);
149
+            $row[] = $this->build_average_column($item, $ignore_score_color);
150
+            $row[] = $this->build_result_column($item, $ignore_score_color);
151
+            if ($scoredisplay->is_custom())
152
+                $row[] = $this->build_mask_column($item, $ignore_score_color);
153
+            $data[] = $row;
154
+        }
155
+        return $data;
156
+    }
157
+
158
+    /**
159
+     * @param $item1
160
+     * @param $item2
161
+     * @return int
162
+     */
163
+    function sort_by_type($item1, $item2)
164
+    {
165
+        if ($item1->get_item_type() == $item2->get_item_type()) {
166
+            return $this->sort_by_name($item1,$item2);
167
+        } else {
168
+            return ($item1->get_item_type() < $item2->get_item_type() ? -1 : 1);
169
+        }
170
+    }
171
+
172
+    /**
173
+     * @param $item1
174
+     * @param $item2
175
+     * @return int
176
+     */
177
+    function sort_by_course($item1, $item2)
178
+    {
179
+        $name1 = api_strtolower($this->get_course_name_from_code_cached($item1->get_course_code()));
180
+        $name2 = api_strtolower($this->get_course_name_from_code_cached($item2->get_course_code()));
181
+        return api_strnatcmp($name1, $name2);
182
+    }
183
+
184
+    /**
185
+     * @param $item1
186
+     * @param $item2
187
+     * @return int
188
+     */
189
+    function sort_by_category($item1, $item2)
190
+    {
191
+        $cat1 = $this->get_category_cached($item1->get_category_id());
192
+        $cat2 = $this->get_category_cached($item2->get_category_id());
193
+        $name1 = api_strtolower($this->get_category_name_to_display($cat1));
194
+        $name2 = api_strtolower($this->get_category_name_to_display($cat2));
195
+
196
+        return api_strnatcmp($name1, $name2);
197
+    }
198
+
199
+    /**
200
+     * @param $item1
201
+     * @param $item2
202
+     * @return int
203
+     */
204
+    function sort_by_name($item1, $item2)
205
+    {
206
+        return api_strnatcmp($item1->get_name(),$item2->get_name());
207
+    }
208
+
209
+    /**
210
+     * @param $item1
211
+     * @param $item2
212
+     * @return int
213
+     */
214
+    function sort_by_average($item1, $item2)
215
+    {
216
+        $score1 = $this->avgcache[$item1->get_item_type() . $item1->get_id()];
217
+        $score2 = $this->avgcache[$item2->get_item_type() . $item2->get_id()];
218
+
219
+        return $this->compare_scores($score1, $score2);
220
+    }
221
+
222
+    /**
223
+     * @param $item1
224
+     * @param $item2
225
+     * @return int
226
+     */
227
+    function sort_by_score($item1, $item2)
228
+    {
229
+        $score1 = $this->scorecache[$item1->get_item_type() . $item1->get_id()];
230
+        $score2 = $this->scorecache[$item2->get_item_type() . $item2->get_id()];
231
+
232
+        return $this->compare_scores($score1, $score2);
233
+    }
234
+
235
+    /**
236
+     * @param $item1
237
+     * @param $item2
238
+     * @return int
239
+     */
240
+    function sort_by_mask($item1, $item2)
241
+    {
242
+        $score1 = $this->scorecache[$item1->get_item_type() . $item1->get_id()];
243
+        $score2 = $this->scorecache[$item2->get_item_type() . $item2->get_id()];
244
+
245
+        return ScoreDisplay :: compare_scores_by_custom_display($score1, $score2);
246
+    }
247
+
248
+    /**
249
+     * @param $score1
250
+     * @param $score2
251
+     * @return int
252
+     */
253
+    function compare_scores($score1, $score2)
254
+    {
255
+        if (!isset($score1)) {
256
+            return (isset($score2) ? 1 : 0);
257
+        } elseif (!isset($score2)) {
258
+            return -1;
259
+        } elseif (($score1[0]/$score1[1]) == ($score2[0]/$score2[1])) {
260
+            return 0;
261
+        } else {
262
+            return (($score1[0]/$score1[1]) < ($score2[0]/$score2[1]) ? -1 : 1);
263
+        }
264
+    }
265
+
266
+    /**
267
+     * @param $item
268
+     * @return mixed
269
+     */
270
+    private function build_course_name($item)
271
+    {
272
+        return $this->get_course_name_from_code_cached($item->get_course_code());
273
+    }
274
+
275
+    /**
276
+     * @param $item
277
+     * @return string
278
+     */
279
+    private function build_category_name($item)
280
+    {
281
+        $cat = $this->get_category_cached($item->get_category_id());
282
+
283
+        return $this->get_category_name_to_display($cat);
284
+    }
285
+
286
+    /**
287
+     * @param $item
288
+     * @param $ignore_score_color
289
+     * @return string
290
+     */
291
+    private function build_average_column($item, $ignore_score_color)
292
+    {
293
+        if (isset($this->avgcache)) {
294
+            $avgscore = $this->avgcache[$item->get_item_type() . $item->get_id()];
295
+        } else {
296
+            $avgscore = $item->calc_score();
297
+        }
298
+
299
+        $scoredisplay = ScoreDisplay :: instance();
300
+        $displaytype = SCORE_AVERAGE;
301
+        /*if ($ignore_score_color)
302 302
 			$displaytype |= SCORE_IGNORE_SPLIT;
303 303
         */
304
-		return $scoredisplay->display_score($avgscore, $displaytype);
305
-	}
306
-
307
-	/**
308
-	 * @param $item
309
-	 * @param $ignore_score_color
310
-	 * @return string
311
-	 */
312
-	private function build_result_column($item, $ignore_score_color)
313
-	{
314
-		$studscore = $this->scorecache[$item->get_item_type() . $item->get_id()];
315
-		$scoredisplay = ScoreDisplay :: instance();
316
-		$displaytype = SCORE_DIV_PERCENT;
317
-		if ($ignore_score_color) {
318
-			$displaytype |= SCORE_IGNORE_SPLIT;
319
-		}
320
-
321
-		return $scoredisplay->display_score($studscore, $displaytype, SCORE_ONLY_DEFAULT);
322
-	}
323
-
324
-	/**
325
-	 * @param $item
326
-	 * @param $ignore_score_color
327
-	 * @return string
328
-	 */
329
-	private function build_mask_column($item, $ignore_score_color)
330
-	{
331
-		$studscore = $this->scorecache[$item->get_item_type() . $item->get_id()];
332
-		$scoredisplay = ScoreDisplay :: instance();
333
-		$displaytype = SCORE_DIV_PERCENT;
334
-		if ($ignore_score_color) {
335
-			$displaytype |= SCORE_IGNORE_SPLIT;
336
-		}
337
-		return $scoredisplay->display_score($studscore, $displaytype, SCORE_ONLY_CUSTOM);
338
-	}
339
-
340
-	/**
341
-	 * @param $coursecode
342
-	 * @return mixed
343
-	 */
344
-	private function get_course_name_from_code_cached($coursecode)
345
-	{
346
-		if (isset ($this->coursecodecache)
347
-			&& isset ($this->coursecodecache[$coursecode])) {
348
-			return $this->coursecodecache[$coursecode];
349
-		} else {
350
-			$name = CourseManager::getCourseNameFromCode($coursecode);
351
-			$this->coursecodecache[$coursecode] = $name;
352
-			return $name;
353
-		}
354
-	}
355
-
356
-	/**
357
-	 * @param $category_id
358
-	 * @return null
359
-	 */
360
-	private function get_category_cached($category_id)
361
-	{
362
-		if (isset ($this->categorycache)
363
-			&& isset ($this->categorycache[$category_id])) {
364
-			return $this->categorycache[$category_id];
365
-		}else {
366
-			$cat = Category::load($category_id);
367
-			if (isset($cat)){
368
-				$this->categorycache[$category_id] = $cat[0];
369
-				return $cat[0];
370
-			}else
371
-				return null;
372
-		}
373
-	}
374
-
375
-	/**
376
-	 * @param $cat
377
-	 * @return string
378
-	 */
379
-	private function get_category_name_to_display($cat)
380
-	{
381
-		if (isset($cat)) {
382
-			if ($cat->get_parent_id() == '0' || $cat->get_parent_id() == null){
383
-				return '';
384
-			} else {
385
-				return $cat->get_name();
386
-			}
387
-		} else {
388
-			return '';
389
-		}
390
-	}
304
+        return $scoredisplay->display_score($avgscore, $displaytype);
305
+    }
306
+
307
+    /**
308
+     * @param $item
309
+     * @param $ignore_score_color
310
+     * @return string
311
+     */
312
+    private function build_result_column($item, $ignore_score_color)
313
+    {
314
+        $studscore = $this->scorecache[$item->get_item_type() . $item->get_id()];
315
+        $scoredisplay = ScoreDisplay :: instance();
316
+        $displaytype = SCORE_DIV_PERCENT;
317
+        if ($ignore_score_color) {
318
+            $displaytype |= SCORE_IGNORE_SPLIT;
319
+        }
320
+
321
+        return $scoredisplay->display_score($studscore, $displaytype, SCORE_ONLY_DEFAULT);
322
+    }
323
+
324
+    /**
325
+     * @param $item
326
+     * @param $ignore_score_color
327
+     * @return string
328
+     */
329
+    private function build_mask_column($item, $ignore_score_color)
330
+    {
331
+        $studscore = $this->scorecache[$item->get_item_type() . $item->get_id()];
332
+        $scoredisplay = ScoreDisplay :: instance();
333
+        $displaytype = SCORE_DIV_PERCENT;
334
+        if ($ignore_score_color) {
335
+            $displaytype |= SCORE_IGNORE_SPLIT;
336
+        }
337
+        return $scoredisplay->display_score($studscore, $displaytype, SCORE_ONLY_CUSTOM);
338
+    }
339
+
340
+    /**
341
+     * @param $coursecode
342
+     * @return mixed
343
+     */
344
+    private function get_course_name_from_code_cached($coursecode)
345
+    {
346
+        if (isset ($this->coursecodecache)
347
+            && isset ($this->coursecodecache[$coursecode])) {
348
+            return $this->coursecodecache[$coursecode];
349
+        } else {
350
+            $name = CourseManager::getCourseNameFromCode($coursecode);
351
+            $this->coursecodecache[$coursecode] = $name;
352
+            return $name;
353
+        }
354
+    }
355
+
356
+    /**
357
+     * @param $category_id
358
+     * @return null
359
+     */
360
+    private function get_category_cached($category_id)
361
+    {
362
+        if (isset ($this->categorycache)
363
+            && isset ($this->categorycache[$category_id])) {
364
+            return $this->categorycache[$category_id];
365
+        }else {
366
+            $cat = Category::load($category_id);
367
+            if (isset($cat)){
368
+                $this->categorycache[$category_id] = $cat[0];
369
+                return $cat[0];
370
+            }else
371
+                return null;
372
+        }
373
+    }
374
+
375
+    /**
376
+     * @param $cat
377
+     * @return string
378
+     */
379
+    private function get_category_name_to_display($cat)
380
+    {
381
+        if (isset($cat)) {
382
+            if ($cat->get_parent_id() == '0' || $cat->get_parent_id() == null){
383
+                return '';
384
+            } else {
385
+                return $cat->get_name();
386
+            }
387
+        } else {
388
+            return '';
389
+        }
390
+    }
391 391
 }
Please login to merge, or discard this patch.