From 72e9abcf3208e640809cc1bae7fe5e3d948cf8b7 Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Sat, 25 Jun 2016 09:37:39 -0500 Subject: [PATCH] dept: Cleanup usage of ::getMembers() In ::isMember(), there is now no reason that a call to ::getMembers() would fail, so it can be assumed that a QuerySet instance is returned. --- include/class.dept.php | 57 +++++++++++++++-------------------------- include/class.forms.php | 2 +- 2 files changed, 21 insertions(+), 38 deletions(-) diff --git a/include/class.dept.php b/include/class.dept.php index 93f92d754..ef6c28d87 100644 --- a/include/class.dept.php +++ b/include/class.dept.php @@ -160,10 +160,8 @@ implements TemplateVariable { return count($this->getMembers()); } - function getMembers($criteria=null) { - global $cfg; - - if (!$this->_members || $criteria) { + function getMembers() { + if (!isset($this->_members)) { $members = Staff::objects() ->distinct('staff_id') ->constrain(array( @@ -178,34 +176,23 @@ implements TemplateVariable { 'dept_access__dept_id' => $this->getId(), ))); - // TODO: Consider moving this into ::getAvailableMembers - if ($criteria && $criteria['available']) { - $members->filter(array( - 'isactive' => 1, - 'onvacation' => 0, - )); - } - - $members = Staff::nsort($members); - - if ($criteria) - return $members; - - $this->_members = $members; + $this->_members = Staff::nsort($members); } return $this->_members; } function getAvailableMembers() { - return $this->getMembers(array('available'=>1)); + $members = clone $this->getMembers(); + return $members->filter(array( + 'isactive' => 1, + 'onvacation' => 0, + )); } function getPrimaryMembers() { - if (!isset($this->_primary_members)) { $members = clone $this->getMembers(); $members->filter(array('dept_id' =>$this->getId())); - $members = Staff::nsort($members); $this->_primary_members = $members->all(); } @@ -213,21 +200,20 @@ implements TemplateVariable { } function getExtendedMembers() { - if (!isset($this->_exended_members)) { // We need a query set so we can sort the names $members = StaffDeptAccess::objects(); $members->filter(array('dept_id' => $this->getId())); $members = Staff::nsort($members, 'staff__'); $extended = array(); - foreach($members->all() as $member) { - if (!$member->staff) continue; + foreach($members as $member) { + if (!$member->staff) + continue; // Annoted the staff model with alerts and role - $extended[] = new AnnotatedModel($member->staff, array( - 'alerts' => $member->isAlertsEnabled(), - 'role_id' => $member->role_id, - ) - ); + $extended[] = new AnnotatedModel($member->staff, array( + 'alerts' => $member->isAlertsEnabled(), + 'role_id' => $member->role_id, + )); } $this->_extended_members = $extended; @@ -238,7 +224,6 @@ implements TemplateVariable { // Get members eligible members only function getAssignees() { - $members = clone $this->getAvailableMembers(); // If restricted then filter to primary members ONLY! if ($this->assignMembersOnly()) @@ -325,21 +310,19 @@ implements TemplateVariable { } function isManager($staff) { - - if(is_object($staff)) $staff=$staff->getId(); + if (is_object($staff)) + $staff = $staff->getId(); return ($this->getManagerId() && $this->getManagerId()==$staff); } function isMember($staff) { - if (is_object($staff)) $staff = $staff->getId(); - $members = $this->getMembers() ?: $this->members; - - return ($members->findFirst(array( - 'staff_id' => $staff))); + return $members->getIterator()->findFirst(array( + 'staff_id' => $staff + )); } function isPublic() { diff --git a/include/class.forms.php b/include/class.forms.php index 627cd5a72..318adbbc1 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -2281,7 +2281,7 @@ class AssigneeField extends ChoiceField { $criteria = $this->getCriteria(); $agents = array(); if (($dept=$config['dept']) && $dept->assignMembersOnly()) { - if (($members = $dept->getMembers($criteria))) + if (($members = $dept->getAvailableMembers())) foreach ($members as $member) $agents[$member->getId()] = $member; } else { -- GitLab