X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/213a86e3c0ffa36d4aed030eb72d5d65204d02ff..865e5aecc99ebb8051f7b1c99b11710bd9709383:/app/Sorting/SortSetOperationComparisons.php diff --git a/app/Sorting/SortSetOperationComparisons.php b/app/Sorting/SortSetOperationComparisons.php index e1c3e625f..cb20e1860 100644 --- a/app/Sorting/SortSetOperationComparisons.php +++ b/app/Sorting/SortSetOperationComparisons.php @@ -2,24 +2,24 @@ namespace BookStack\Sorting; +use voku\helper\ASCII; use BookStack\Entities\Models\Chapter; use BookStack\Entities\Models\Entity; /** * Sort comparison function for each of the possible SortSetOperation values. * Method names should be camelCase names for the SortSetOperation enum value. - * TODO - Test to cover each SortSetOperation enum value is covered. */ class SortSetOperationComparisons { public static function nameAsc(Entity $a, Entity $b): int { - return $a->name <=> $b->name; + return strtolower(ASCII::to_transliterate($a->name, null)) <=> strtolower(ASCII::to_transliterate($b->name, null)); } public static function nameDesc(Entity $a, Entity $b): int { - return $b->name <=> $a->name; + return strtolower(ASCII::to_transliterate($b->name, null)) <=> strtolower(ASCII::to_transliterate($a->name, null)); } public static function nameNumericAsc(Entity $a, Entity $b): int @@ -27,9 +27,12 @@ class SortSetOperationComparisons $numRegex = '/^\d+(\.\d+)?/'; $aMatches = []; $bMatches = []; - preg_match($numRegex, $a, $aMatches); - preg_match($numRegex, $b, $bMatches); - return ($aMatches[0] ?? 0) <=> ($bMatches[0] ?? 0); + preg_match($numRegex, $a->name, $aMatches); + preg_match($numRegex, $b->name, $bMatches); + $aVal = floatval(($aMatches[0] ?? 0)); + $bVal = floatval(($bMatches[0] ?? 0)); + + return $aVal <=> $bVal; } public static function nameNumericDesc(Entity $a, Entity $b): int