add contents
This commit is contained in:
70
lib/plugins/nspages/printers/sorters.php
Normal file
70
lib/plugins/nspages/printers/sorters.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin nspages : Displays nicely a list of the pages of a namespace
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
*/
|
||||
|
||||
if(!defined('DOKU_INC')) die();
|
||||
|
||||
abstract class nspages_sorter {
|
||||
protected $reverse;
|
||||
|
||||
function __construct($reverse){
|
||||
$this->reverse = $reverse;
|
||||
}
|
||||
|
||||
function sort(&$array){
|
||||
$this->actualSort($array);
|
||||
if ($this->reverse) {
|
||||
$array = array_reverse($array);
|
||||
}
|
||||
}
|
||||
|
||||
protected function actualSort(&$array){
|
||||
usort($array, array($this, 'comparator'));
|
||||
}
|
||||
|
||||
abstract function comparator($item1, $item2);
|
||||
}
|
||||
|
||||
class nspages_default_sorter extends nspages_sorter {
|
||||
function __construct($reverse){
|
||||
parent::__construct($reverse);
|
||||
}
|
||||
|
||||
function comparator($item1, $item2){
|
||||
return strcasecmp($item1['sort'], $item2['sort']);
|
||||
}
|
||||
}
|
||||
|
||||
class nspages_naturalOrder_sorter extends nspages_sorter {
|
||||
function __construct($reverse){
|
||||
parent::__construct($reverse);
|
||||
}
|
||||
|
||||
function comparator($item1, $item2){
|
||||
return strnatcasecmp($item1['sort'], $item2['sort']);
|
||||
}
|
||||
}
|
||||
|
||||
class nspages_dictOrder_sorter extends nspages_sorter {
|
||||
private $dictOrder;
|
||||
|
||||
function __construct($reverse, $dictOrder){
|
||||
parent::__construct($reverse);
|
||||
$this->dictOrder = $dictOrder;
|
||||
}
|
||||
|
||||
function actualSort(&$array){
|
||||
$oldLocale=setlocale(LC_ALL, 0);
|
||||
setlocale(LC_COLLATE, $this->dictOrder);
|
||||
usort($array, array($this, "comparator"));
|
||||
setlocale(LC_COLLATE, $oldLocale);
|
||||
}
|
||||
|
||||
function comparator($item1, $item2){
|
||||
return strcoll($item1['sort'], $item2['sort']);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user