More flexible sorting syntax
This commit is contained in:
parent
1077c489a7
commit
75e68aea5a
1 changed files with 27 additions and 5 deletions
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue