diff --git a/gosa-core/include/class_listingSortIterator.inc b/gosa-core/include/class_listingSortIterator.inc
index ddaf5c243818146a2cda7d5195affe11eb88d65f..ed956b68d0e894bd52d1e6a7695003f7204dd1ad 100644 (file)
class listingSortIterator implements Iterator {
private $data;
- public function __construct($data, $attribute, $type= "string") {
+ public function __construct($data, $direction, $attribute, $type= "string") {
global $_sortAttribute;
global $_sortType;
$_sortAttribute= $attribute;
// Take a look at the several types
switch ($_sortType) {
case 'string':
- return strnatcmp($a, $b);
+ return strcoll($a, $b);
+ case 'integer':
+ return $b - $a;
+
+ case 'date':
+ if ($a == "") {
+ $a= "31.12.0000";
+ }
+ if ($b == "") {
+ $b= "31.12.0000";
+ }
+ list($d, $m, $y)= explode('.', $a);
+ $a= (int)sprintf("%04d%02d%02d", $y, $m, $d);
+ list($d, $m, $y)= explode('.', $b);
+ $b= (int)sprintf("%04d%02d%02d", $y, $m, $d);
+ return $b-$a;
+
+ // Sort for string by default
default:
- die(sprintf(_("Cannot sort entries: method '%s' is unknown!"), $_sortType));
+ return strcoll($a, $b);
}
}
// Sort for attribute
- usort($data, "attrSort");
- $this->data= $data;
+ if ($attribute != "") {
+ uasort($data, "attrSort");
+ }
+
+ // Invert if direction is set
+ if ($direction) {
+ $this->data= array_reverse($data, true);
+ } else {
+ $this->data= $data;
+ }
}
function rewind() {