now compatible with old sorting values

This commit is contained in:
Susann Sgorzaly
2018-02-23 08:11:56 +01:00
parent 958af1027e
commit cf91bf40ff
3 changed files with 31 additions and 9 deletions

View File

@@ -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);

View File

@@ -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;
} }

View File

@@ -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);
} }
} }