Lazer\Classes\Core_Database::orderByPending PHP Method

orderByPending() protected method

@
protected orderByPending ( )
    protected function orderByPending()
    {
        $properties = $this->pending['orderBy'];
        uasort($this->data, function ($a, $b) use($properties) {
            foreach ($properties as $column => $direction) {
                if (is_int($column)) {
                    $column = $direction;
                    $direction = SORT_ASC;
                }
                $collapse = function ($node, $props) {
                    if (is_array($props)) {
                        foreach ($props as $prop) {
                            $node = !isset($node->{$prop}) ? null : $node->{$prop};
                        }
                        return $node;
                    } else {
                        return !isset($node->{$props}) ? null : $node->{$props};
                    }
                };
                $aProp = $collapse($a, $column);
                $bProp = $collapse($b, $column);
                if ($aProp != $bProp) {
                    return $direction == SORT_ASC ? strnatcasecmp($aProp, $bProp) : strnatcasecmp($bProp, $aProp);
                }
            }
            return FALSE;
        });
    }