You are here

private function LdapQuery::sortResults in Lightweight Directory Access Protocol (LDAP) 8.3

Same name and namespace in other branches
  1. 8.4 ldap_query/src/Plugin/views/query/LdapQuery.php \Drupal\ldap_query\Plugin\views\query\LdapQuery::sortResults()

Sort the results.

Parameters

array $results: Results to operate on.

Return value

array Result data.

1 call to LdapQuery::sortResults()
LdapQuery::execute in ldap_query/src/Plugin/views/query/LdapQuery.php
Execute the query.

File

ldap_query/src/Plugin/views/query/LdapQuery.php, line 136

Class

LdapQuery
Views query plugin for an SQL query.

Namespace

Drupal\ldap_query\Plugin\views\query

Code

private function sortResults(array $results) {
  $parameters = [];
  $orders = $this->orderby;
  $set = [];
  foreach ($orders as $orderCriterion) {
    foreach ($results as $key => $row) {

      // TODO: Could be improved by making the element index configurable.
      $orderCriterion['data'][$key] = $row[$orderCriterion['field']][0];
      $set[$key][$orderCriterion['field']] = $row[$orderCriterion['field']][0];
      $set[$key]['index'] = $key;
    }
    $parameters[] = $orderCriterion['data'];
    if ($orderCriterion['direction'] == 'ASC') {
      $parameters[] = SORT_ASC;
    }
    else {
      $parameters[] = SORT_DESC;
    }
  }
  $parameters[] =& $set;
  call_user_func_array('array_multisort', $parameters);
  $processedResults = [];
  foreach ($set as $row) {
    $processedResults[] = $results[$row['index']];
  }
  return $processedResults;
}