lib: Add SimpleQuery::splitOrder() ...

... for supporting specifying the sort direction next to the column, e.g.
'service_display_name ASC'

refs #8716
This commit is contained in:
Eric Lippmann 2015-03-13 17:09:32 +01:00
parent e17f9d7ebe
commit 949438d753
1 changed files with 23 additions and 7 deletions

View File

@ -161,6 +161,26 @@ class SimpleQuery implements QueryInterface, Queryable
throw new IcingaException('This function does nothing and will be removed');
}
/**
* Split order field into its field and sort direction
*
* @param string $field
*
* @return array
*/
public function splitOrder($field)
{
$fieldAndDirection = explode(' ', $field, 2);
if (count($fieldAndDirection) === 1) {
$direction = null;
} else {
$field = $fieldAndDirection[0];
$direction = (strtoupper(trim($fieldAndDirection[1])) === 'DESC') ?
Sortable::SORT_DESC : Sortable::SORT_ASC;
}
return array($field, $direction);
}
/**
* Sort result set by the given field (and direction)
*
@ -177,13 +197,9 @@ class SimpleQuery implements QueryInterface, Queryable
public function order($field, $direction = null)
{
if ($direction === null) {
$fieldAndDirection = explode(' ', $field, 2);
if (count($fieldAndDirection) === 1) {
$direction = self::SORT_ASC;
} else {
$field = $fieldAndDirection[0];
$direction = (strtoupper(trim($fieldAndDirection[1])) === 'DESC') ?
Sortable::SORT_DESC : Sortable::SORT_ASC;
list($field, $direction) = $this->splitOrder($field);
if ($direction === null) {
$direction = Sortable::SORT_ASC;
}
} else {
switch (($direction = strtoupper($direction))) {