mirror of
https://github.com/parsecsv/parsecsv-for-php.git
synced 2026-02-19 08:36:39 +00:00
now compatible with old sorting values
This commit is contained in:
@@ -739,7 +739,8 @@ class Csv {
|
|||||||
|
|
||||||
$this->titles = $head;
|
$this->titles = $head;
|
||||||
if (!empty($this->sort_by)) {
|
if (!empty($this->sort_by)) {
|
||||||
$this->sort_reverse ? krsort($rows, $this->sort_type) : ksort($rows, $this->sort_type);
|
$sort_type = SortEnum::getSorting($this->sort_type);
|
||||||
|
$this->sort_reverse ? krsort($rows, $sort_type) : ksort($rows, $sort_type);
|
||||||
|
|
||||||
if ($this->offset !== null || $this->limit !== null) {
|
if ($this->offset !== null || $this->limit !== null) {
|
||||||
$rows = array_slice($rows, ($this->offset === null ? 0 : $this->offset), $this->limit, true);
|
$rows = array_slice($rows, ($this->offset === null ? 0 : $this->offset), $this->limit, true);
|
||||||
|
|||||||
@@ -5,9 +5,24 @@ namespace ParseCsv\enums;
|
|||||||
class SortEnum extends AbstractEnum {
|
class SortEnum extends AbstractEnum {
|
||||||
const __DEFAULT = self::SORT_TYPE_REGULAR;
|
const __DEFAULT = self::SORT_TYPE_REGULAR;
|
||||||
|
|
||||||
const SORT_TYPE_REGULAR = SORT_REGULAR;
|
const SORT_TYPE_REGULAR = 'regular';
|
||||||
|
|
||||||
const SORT_TYPE_NUMERIC = SORT_NUMERIC;
|
const SORT_TYPE_NUMERIC = 'numeric';
|
||||||
|
|
||||||
|
const SORT_TYPE_STRING = 'string';
|
||||||
|
|
||||||
|
private static $sorting = array(
|
||||||
|
self::SORT_TYPE_REGULAR => SORT_REGULAR,
|
||||||
|
self::SORT_TYPE_STRING => SORT_STRING,
|
||||||
|
self::SORT_TYPE_NUMERIC => SORT_NUMERIC
|
||||||
|
);
|
||||||
|
|
||||||
|
public static function getSorting($type){
|
||||||
|
if (array_key_exists($type, self::$sorting)){
|
||||||
|
return self::$sorting[$type];
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$sorting[self::__DEFAULT];
|
||||||
|
}
|
||||||
|
|
||||||
const SORT_TYPE_STRING = SORT_STRING;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,14 +152,20 @@ class PublicPropertiesTest extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testSetSortType(){
|
public function testSetSortType(){
|
||||||
$this->csv->sort_type = SortEnum::SORT_TYPE_NUMERIC;
|
$this->csv->sort_type = 'numeric';
|
||||||
$this->assertEquals(SortEnum::SORT_TYPE_NUMERIC, $this->csv->sort_type);
|
$this->assertEquals(SortEnum::SORT_TYPE_NUMERIC, $this->csv->sort_type);
|
||||||
|
|
||||||
$this->csv->sort_type = SortEnum::SORT_TYPE_STRING;
|
$this->csv->sort_type = 'string';
|
||||||
$this->assertEquals(SortEnum::SORT_TYPE_STRING, $this->csv->sort_type);
|
$this->assertEquals(SortEnum::SORT_TYPE_STRING, $this->csv->sort_type);
|
||||||
|
}
|
||||||
|
|
||||||
$this->csv->sort_type = SortEnum::SORT_TYPE_UNKNOWN;
|
public function testGetSorting(){
|
||||||
// todo: how to handle this exception?
|
$this->csv->sort_type = 'numeric';
|
||||||
$this->expectException(InvalidArgumentException::class);
|
$sorting = SortEnum::getSorting($this->csv->sort_type);
|
||||||
|
$this->assertEquals(SORT_NUMERIC, $sorting);
|
||||||
|
|
||||||
|
$this->csv->sort_type = 'string';
|
||||||
|
$sorting = SortEnum::getSorting($this->csv->sort_type);
|
||||||
|
$this->assertEquals(SORT_STRING, $sorting);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user