X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;ds=sidebyside;f=CRM%2FContact%2FBAO%2FGroup.php;h=d63caf2650e435a4039446257731094dc970dd0c;hb=2717c8a52601804ca65b8a58ca439feb7b85b62e;hp=9f2d05a4a7badff04a226458f80b63612222ca36;hpb=a733f50a96419749b5f5ebee962d7721164d36cf;p=civicrm-core.git diff --git a/CRM/Contact/BAO/Group.php b/CRM/Contact/BAO/Group.php index 9f2d05a4a7..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 = ""; @@ -861,6 +866,9 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { 'count' => '0', ); CRM_Core_DAO::storeValues($object, $values[$object->id]); + // Wrap with crm-editable. Not an ideal solution. + $values[$object->id]['title'] = '' . $values[$object->id]['title'] . ''; + if ($object->saved_search_id) { $values[$object->id]['title'] .= ' (' . ts('Smart Group') . ')'; // check if custom search, if so fix view link @@ -973,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; }