diff --git a/include/class.dept.php b/include/class.dept.php index 0d26f12a0bdfb1042d387be2091632a08765a8ec..e08d7339085935d2efae08d9008725b9a148f3a2 100644 --- a/include/class.dept.php +++ b/include/class.dept.php @@ -182,16 +182,8 @@ implements TemplateVariable { 'onvacation' => 0, )); } - switch ($cfg->getAgentNameFormat()) { - case 'last': - case 'lastfirst': - case 'legal': - $members->order_by('lastname', 'firstname'); - break; - - default: - $members->order_by('firstname', 'lastname'); - } + + $members = Staff::nsort($members); if ($criteria) return $members; diff --git a/include/class.staff.php b/include/class.staff.php index 6709bac0d90e6f71e5b71822315389e24e0b6dc6..0cd7960531bae94e671f3e10c0c293c5506aedfa 100644 --- a/include/class.staff.php +++ b/include/class.staff.php @@ -782,16 +782,7 @@ implements AuthenticatedUser, EmailContact, TemplateVariable { )); } - switch ($cfg->getAgentNameFormat()) { - case 'last': - case 'lastfirst': - case 'legal': - $members->order_by('lastname', 'firstname'); - break; - - default: - $members->order_by('firstname', 'lastname'); - } + $members = self::nsort($members); $users=array(); foreach ($members as $M) { @@ -805,6 +796,23 @@ implements AuthenticatedUser, EmailContact, TemplateVariable { return self::getStaffMembers(array('available'=>true)); } + static function nsort(QuerySet $qs, $path='', $format=null) { + global $cfg; + + $format = $format ?: $cfg->getAgentNameFormat(); + switch ($format) { + case 'last': + case 'lastfirst': + case 'legal': + $qs->order_by("{$path}lastname", "{$path}firstname"); + break; + default: + $qs->order_by("${path}firstname", "${path}lastname"); + } + + return $qs; + } + static function getIdByUsername($username) { $row = static::objects()->filter(array('username' => $username)) ->values_flat('staff_id')->first();