19declare(strict_types=1);
32 protected function orderRecords(array $records, Data\Order $order): array
34 [$aspect, $direction] = $order->join(
"",
function ($i, $k, $v) {
37 usort($records,
static function (array
$a, array
$b) use ($aspect):
int {
38 if (!isset(
$a[$aspect]) && !isset(
$b[$aspect])) {
41 if (!isset(
$a[$aspect])) {
44 if (!isset(
$b[$aspect])) {
47 if (is_numeric(
$a[$aspect]) || is_bool(
$a[$aspect])) {
48 return $a[$aspect] <=>
$b[$aspect];
50 if (is_array(
$a[$aspect])) {
51 return $a[$aspect] <=>
$b[$aspect];
53 if (
$a[$aspect] instanceof Link) {
54 return $a[$aspect]->getLabel() <=>
$b[$aspect]->
getLabel();
56 if (
$a[$aspect] instanceof \DateTimeImmutable) {
57 return $a[$aspect]->getTimestamp() <=>
$b[$aspect]->getTimestamp();
60 return strcmp(
$a[$aspect],
$b[$aspect]);
63 if ($direction === $order::DESC) {
64 $records = array_reverse($records);
69 protected function limitRecords(array $records, Data\Range
$range): array
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples