Skip to content

Commit

Permalink
dept: Cleanup usage of ::getMembers()
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Jared Hancock committed Jun 25, 2016
1 parent da7bec9 commit 72e9abc
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 38 deletions.
57 changes: 20 additions & 37 deletions include/class.dept.php
Expand Up @@ -160,10 +160,8 @@ function getNumMembers() {
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(
Expand All @@ -178,56 +176,44 @@ function getMembers($criteria=null) {
'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();
}

return $this->_primary_members;
}

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;
Expand All @@ -238,7 +224,6 @@ function getExtendedMembers() {

// Get members eligible members only
function getAssignees() {

$members = clone $this->getAvailableMembers();
// If restricted then filter to primary members ONLY!
if ($this->assignMembersOnly())
Expand Down Expand Up @@ -325,21 +310,19 @@ function getManager() {
}

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() {
Expand Down
2 changes: 1 addition & 1 deletion include/class.forms.php
Expand Up @@ -2281,7 +2281,7 @@ function getChoices($verbose=false) {
$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 {
Expand Down

0 comments on commit 72e9abc

Please sign in to comment.