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;
}