Gradebook: Fixing ordering when showing the score

skala
Julio Montoya 13 years ago
parent 1b8bebb9a5
commit 781ebed20c
  1. 13
      main/gradebook/lib/fe/resulttable.class.php
  2. 8
      main/gradebook/lib/results_data_generator.class.php

@ -24,7 +24,6 @@ class ResultTable extends SortableTable
private $allresults; private $allresults;
private $iscourse; private $iscourse;
/** /**
* Constructor * Constructor
*/ */
@ -81,9 +80,10 @@ class ResultTable extends SortableTable
$scoredisplay = ScoreDisplay :: instance(); $scoredisplay = ScoreDisplay :: instance();
// determine sorting type // determine sorting type
$col_adjust = ($this->iscourse == '1' ? 1 : 0); $col_adjust = $this->iscourse == '1' ? 1 : 0;
switch ($this->column) { switch ($this->column) {
// Type // first name or last name
case (0 + $col_adjust): case (0 + $col_adjust):
if ($is_western_name_order) { if ($is_western_name_order) {
$sorting = ResultsDataGenerator :: RDG_SORT_FIRSTNAME; $sorting = ResultsDataGenerator :: RDG_SORT_FIRSTNAME;
@ -91,6 +91,7 @@ class ResultTable extends SortableTable
$sorting = ResultsDataGenerator :: RDG_SORT_LASTNAME; $sorting = ResultsDataGenerator :: RDG_SORT_LASTNAME;
} }
break; break;
// first name or last name
case (1 + $col_adjust): case (1 + $col_adjust):
if ($is_western_name_order) { if ($is_western_name_order) {
$sorting = ResultsDataGenerator :: RDG_SORT_LASTNAME; $sorting = ResultsDataGenerator :: RDG_SORT_LASTNAME;
@ -98,19 +99,21 @@ class ResultTable extends SortableTable
$sorting = ResultsDataGenerator :: RDG_SORT_FIRSTNAME; $sorting = ResultsDataGenerator :: RDG_SORT_FIRSTNAME;
} }
break; break;
//Score
case (2 + $col_adjust): case (2 + $col_adjust):
$sorting = ResultsDataGenerator :: RDG_SORT_SCORE; $sorting = ResultsDataGenerator :: RDG_SORT_SCORE;
break; break;
case (3 + $col_adjust): case (3 + $col_adjust):
$sorting = ResultsDataGenerator :: RDG_SORT_MASK; $sorting = ResultsDataGenerator :: RDG_SORT_MASK;
break; break;
} }
if ($this->direction == 'DESC') { if ($this->direction == 'DESC') {
$sorting |= ResultsDataGenerator :: RDG_SORT_DESC; $sorting |= ResultsDataGenerator :: RDG_SORT_DESC;
} else { } else {
$sorting |= ResultsDataGenerator :: RDG_SORT_ASC; $sorting |= ResultsDataGenerator :: RDG_SORT_ASC;
} }
$data_array = $this->datagen->get_data($sorting, $from, $this->per_page); $data_array = $this->datagen->get_data($sorting, $from, $this->per_page);
// generate the data to display // generate the data to display

@ -102,7 +102,7 @@ class ResultsDataGenerator
usort($table, array('ResultsDataGenerator', 'sort_by_last_name')); usort($table, array('ResultsDataGenerator', 'sort_by_last_name'));
} elseif ($sorting & self :: RDG_SORT_FIRSTNAME) { } elseif ($sorting & self :: RDG_SORT_FIRSTNAME) {
usort($table, array('ResultsDataGenerator', 'sort_by_first_name')); usort($table, array('ResultsDataGenerator', 'sort_by_first_name'));
} elseif ($sorting & self :: RDG_SORT_SCORE) { } elseif ($sorting & self :: RDG_SORT_SCORE) {
usort($table, array('ResultsDataGenerator', 'sort_by_score')); usort($table, array('ResultsDataGenerator', 'sort_by_score'));
} elseif ($sorting & self :: RDG_SORT_MASK) { } elseif ($sorting & self :: RDG_SORT_MASK) {
usort($table, array('ResultsDataGenerator', 'sort_by_mask')); usort($table, array('ResultsDataGenerator', 'sort_by_mask'));
@ -137,10 +137,10 @@ class ResultsDataGenerator
} }
function sort_by_score($item1, $item2) { function sort_by_score($item1, $item2) {
if ($item1['score'] == $item2['score']) { if ($item1['percentage_score'] == $item2['percentage_score']) {
return 0; return 0;
}else { } else {
return ($item1['score'] < $item2['score'] ? -1 : 1); return ($item1['percentage_score'] < $item2['percentage_score'] ? -1 : 1);
} }
} }

Loading…
Cancel
Save