diff --git a/include/class.dept.php b/include/class.dept.php index 93f92d754ad613b3afe4ad7b3b9655ba211b6d15..ef6c28d87c9b883d46e3e34dc633eda7c7ad3815 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 627cd5a72c1cbfc99a826abd0a89503bbc61fd6f..318adbbc12b4f3053921f9b13d63f8e10cfa3718 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 {