Prado\Data\Common\Mssql\TMssqlCommandBuilder::findOrdering PHP Method

findOrdering() protected method

Base on simplified syntax http://msdn2.microsoft.com/en-us/library/aa259187(SQL.80).aspx
protected findOrdering ( string $sql ) : array
$sql string
return array ordering expression as key and ordering direction as value
    protected function findOrdering($sql)
    {
        if (!preg_match('/ORDER BY/i', $sql)) {
            return array();
        }
        $matches = array();
        $ordering = array();
        preg_match_all('/(ORDER BY)[\\s"\\[](.*)(ASC|DESC)?(?:[\\s"\\[]|$|COMPUTE|FOR)/i', $sql, $matches);
        if (count($matches) > 1 && count($matches[2]) > 0) {
            $parts = explode(',', $matches[2][0]);
            foreach ($parts as $part) {
                $subs = array();
                if (preg_match_all('/(.*)[\\s"\\]](ASC|DESC)$/i', trim($part), $subs)) {
                    if (count($subs) > 1 && count($subs[2]) > 0) {
                        $ordering[$subs[1][0]] = $subs[2][0];
                    }
                    //else what?
                } else {
                    $ordering[trim($part)] = 'ASC';
                }
            }
        }
        return $ordering;
    }