X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContact%2FBAO%2FGroup.php;h=d63caf2650e435a4039446257731094dc970dd0c;hb=9fc1ccdb2385d351d821b4295ddd6f74c73cca66;hp=7c268b630a2f9ac7faf9f9e2234c3807485290cf;hpb=faffa2c753facf2facdb129faf9f55ce201f7cf5;p=civicrm-core.git diff --git a/CRM/Contact/BAO/Group.php b/CRM/Contact/BAO/Group.php index 7c268b630a..d63caf2650 100644 --- a/CRM/Contact/BAO/Group.php +++ b/CRM/Contact/BAO/Group.php @@ -795,6 +795,11 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { $orderBy = ' ORDER BY groups.title asc'; if (!empty($params['sort'])) { $orderBy = ' ORDER BY ' . CRM_Utils_Type::escape($params['sort'], 'String'); + + // CRM-16905 - Sort by count cannot be done with sql + if (strpos($params['sort'], 'count') === 0) { + $orderBy = $limit = ''; + } } $select = $from = $where = ""; @@ -976,6 +981,17 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { } } + // CRM-16905 - Sort by count cannot be done with sql + if (!empty($params['sort']) && strpos($params['sort'], 'count') === 0) { + usort($values, function($a, $b) { + return $a['count'] - $b['count']; + }); + if (strpos($params['sort'], 'desc')) { + $values = array_reverse($values, TRUE); + } + return array_slice($values, $params['offset'], $params['rowCount']); + } + return $values; }