private function groupingSort(Content $a, Content $b)
{
// Same group, sort within group.
if ($a->group['slug'] == $b->group['slug']) {
if (!empty($a->sortorder) || !empty($b->sortorder)) {
if (!isset($a->sortorder)) {
return 1;
} elseif (!isset($b->sortorder)) {
return -1;
} else {
return $a->sortorder < $b->sortorder ? -1 : 1;
}
}
if (!empty($a->contenttype['sort'])) {
// Same group, so we sort on contenttype['sort']
list($secondSort, $order) = $this->getSortOrder($a->contenttype['sort']);
$vala = strtolower($a->values[$secondSort]);
$valb = strtolower($b->values[$secondSort]);
if ($vala == $valb) {
return 0;
} else {
$result = $vala < $valb ? -1 : 1;
// if $order is false, the 'getSortOrder' indicated that we used something like '-id'.
// So, perhaps we need to inverse the result.
return $order ? $result : -$result;
}
}
}
// Otherwise, sort based on the group. Or, more specifically, on the index of
// the item in the group's taxonomy definition.
return $a->group['index'] < $b->group['index'] ? -1 : 1;
}