71 lines
1.6 KiB
PHP
71 lines
1.6 KiB
PHP
![]() |
<?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']);
|
||
|
}
|
||
|
}
|
||
|
|