Bolt\Legacy\Storage::groupingSort PHP Method

groupingSort() private method

Helper function for sorting Records of content that have a Grouping.
private groupingSort ( Content $a, Content $b ) : integer
$a Content
$b Content
return integer
    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;
    }