More flexible sorting syntax

This commit is contained in:
Marcin Kurczewski 2013-10-15 23:26:27 +02:00
parent 1077c489a7
commit 75e68aea5a

View file

@ -593,7 +593,7 @@ class PostController
private function decorateSearchQuery($dbQuery, $tokens) private function decorateSearchQuery($dbQuery, $tokens)
{ {
$orderColumn = 'id'; $orderColumn = 'id';
$orderDir = 'DESC'; $orderDir = 1;
$randomReset = true; $randomReset = true;
foreach ($tokens as $token) foreach ($tokens as $token)
@ -602,10 +602,12 @@ class PostController
{ {
$dbQuery->andNot(); $dbQuery->andNot();
$token = substr($token, 1); $token = substr($token, 1);
$neg = true;
} }
else else
{ {
$dbQuery->and(); $dbQuery->and();
$neg = false;
} }
$pos = strpos($token, ':'); $pos = strpos($token, ':');
@ -728,16 +730,36 @@ class PostController
break; break;
case 'order': case 'order':
$dbQuery->addSql('1'); if (substr($val, -4) == 'desc')
$orderDir = 'DESC'; {
$orderDir = 1;
$val = rtrim(substr($val, 0, -4), ',');
}
elseif (substr($val, -3) == 'asc')
{
$orderDir = -1;
$val = rtrim(substr($val, 0, -3), ',');
}
if ($val{0} == '-') if ($val{0} == '-')
{ {
$orderDir = 'ASC'; $orderDir *= -1;
$val = substr($val, 1); $val = substr($val, 1);
} }
if ($neg)
{
$orderDir *= -1;
$dbQuery->addSql('0');
}
else
{
$dbQuery->addSql('1');
}
switch ($val) switch ($val)
{ {
case 'id':
$orderColumn = 'id';
break;
case 'date': case 'date':
$orderColumn = 'upload_date'; $orderColumn = 'upload_date';
break; break;
@ -780,6 +802,6 @@ class PostController
if ($randomReset) if ($randomReset)
unset($_SESSION['browsing-seed']); unset($_SESSION['browsing-seed']);
$dbQuery->orderBy($orderColumn . ' ' . $orderDir); $dbQuery->orderBy($orderColumn . ' ' . ($orderDir == 1? 'DESC' : 'ASC'));
} }
} }