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

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

Loading…
Cancel
Save