diff --git a/include/ajax.tickets.php b/include/ajax.tickets.php index deed3e7550f9678e2d8e331e302869e6936f4973..3a157a511e6ba92c666e25738401ab4320db74f3 100644 --- a/include/ajax.tickets.php +++ b/include/ajax.tickets.php @@ -502,7 +502,7 @@ class TicketsAjaxAPI extends AjaxController { if ($ticket->getStaffId() == $thisstaff->getId()) $assigned = __('you'); else - $assigneed = $ticket->getAssigned(); + $assigned = $ticket->getAssigned(); $info['error'] = sprintf(__('%s is currently assigned to <b>%s</b>'), __('This ticket'), diff --git a/include/class.cron.php b/include/class.cron.php index 94e1af314a5e97bb957c212ef40ec3765004a360..e545c5afb7acddf48a97f6e9c0b05b252c5ac116 100644 --- a/include/class.cron.php +++ b/include/class.cron.php @@ -107,7 +107,7 @@ class Cron { self::MaybeOptimizeTables(); $data = array('autocron'=>false); - Signal::send('cron', $data); + Signal::send('cron', null, $data); } } ?> diff --git a/include/class.dept.php b/include/class.dept.php index ba15038c2169f39ec64f243d9da3286e79d05bd7..5c348237da6bfa9d6e97e6537dcb6fc26e5adc81 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.export.php b/include/class.export.php index d5d13a2865f8e671e094fb2ad1de10cbba217b99..21e89bf809212a978ec92b83de4a5f9beb647c48 100644 --- a/include/class.export.php +++ b/include/class.export.php @@ -278,6 +278,8 @@ class ResultSetExporter { $this->keys[] = $field; } $this->_res = $sql->getIterator(); + if ($this->_res instanceof IteratorAggregate) + $this->_res = $this->_res->getIterator(); $this->_res->rewind(); } 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 { diff --git a/include/class.orm.php b/include/class.orm.php index b784b6341e71df002a2f8bc136f12da32d7f5f0d..3e7dc64dfaab83eebc7b583cf522fd48e8463ea8 100644 --- a/include/class.orm.php +++ b/include/class.orm.php @@ -293,7 +293,7 @@ class VerySimpleModel { 'pk' => false ); - var $ht; + var $ht = array(); var $dirty = array(); var $__new__ = false; var $__deleted__ = false; @@ -1310,6 +1310,16 @@ class QuerySet implements IteratorAggregate, ArrayAccess, Serializable, Countabl unset($this->count); } + function __call($name, $args) { + + if (!is_callable(array($this->getIterator(), $name))) + throw new OrmException('Call to undefined method QuerySet::'.$name); + + return $args + ? call_user_func_array(array($this->getIterator(), $name), $args) + : call_user_func(array($this->getIterator(), $name)); + } + // IteratorAggregate interface function getIterator($iterator=false) { if (!isset($this->_iterator)) { diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php index 99bfb2381c0efd0b717b705181edf92379051284..c786e28468ab527ec60b88aaf24040d65f1601f9 100644 --- a/include/staff/tickets.inc.php +++ b/include/staff/tickets.inc.php @@ -62,7 +62,7 @@ $queue_columns = array( 'priority' => array( 'width' => '8.4%', 'heading' => __('Priority'), - 'sort_col' => 'cdata__priority__priority_urgency', + 'sort_col' => 'cdata__:priority__priority_urgency', ), 'assignee' => array( 'width' => '16%', diff --git a/scp/autocron.php b/scp/autocron.php index 989673a22fa276ef1f889a1ab012b8c12d428b9c..170ab3a8b421286bdfe1db6a648a13e7b971946d 100644 --- a/scp/autocron.php +++ b/scp/autocron.php @@ -66,7 +66,7 @@ if($cfg && $cfg->isAutoCronEnabled()) { //ONLY fetch tickets if autocron is enab } $data = array('autocron'=>true); -Signal::send('cron', $data); +Signal::send('cron', null, $data); ob_end_clean(); ?>