diff --git a/include/class.dept.php b/include/class.dept.php index a1a87164f924da3965f1ff77be5e31cbaf4fc4ed..4eb0b8e2229d906bbce2031f6690c8d54af23778 100644 --- a/include/class.dept.php +++ b/include/class.dept.php @@ -107,7 +107,7 @@ implements TemplateVariable, Searchable { 'name' => new TextboxField(array( 'label' => __('Name'), )), - 'manager' => new AgentSelectionField(array( + 'manager' => new DepartmentManagerSelectionField(array( 'label' => __('Manager'), )), ); diff --git a/include/class.search.php b/include/class.search.php index d305ab16fee05a17d2de4c0c808d9f37230582f1..f1d1510de882d8c47169f0af106f01c79dfdf98c 100644 --- a/include/class.search.php +++ b/include/class.search.php @@ -723,7 +723,33 @@ class AdvancedSearchForm extends SimpleForm { // Advanced search special fields -class HelpTopicChoiceField extends ChoiceField { +class AdvancedSearchSelectionField extends ChoiceField { + + function getSearchQ($method, $value, $name=false) { + + + switch ($method) { + case 'includes': + case '!includes': + $Q = new Q(); + if (count($value) > 1) + $Q->add(array("{$name}__in" => array_keys($value))); + else + $Q->add(array($name => key($value))); + + if ($method == '!includes') + $Q->negate(); + return $Q; + break; + default: + return parent::getSearchQ($method, $value, $name); + } + + } + +} + +class HelpTopicChoiceField extends AdvancedSearchSelectionField { function hasIdValue() { return true; } @@ -734,7 +760,7 @@ class HelpTopicChoiceField extends ChoiceField { } require_once INCLUDE_DIR . 'class.dept.php'; -class DepartmentChoiceField extends ChoiceField { +class DepartmentChoiceField extends AdvancedSearchSelectionField { var $_choices = null; function getChoices($verbose=false) { @@ -764,6 +790,7 @@ class DepartmentChoiceField extends ChoiceField { } } + class AssigneeChoiceField extends ChoiceField { function getChoices($verbose=false) { global $thisstaff; @@ -902,7 +929,7 @@ trait ZeroMeansUnset { } } -class AgentSelectionField extends ChoiceField { +class AgentSelectionField extends AdvancedSearchSelectionField { use ZeroMeansUnset; function getChoices($verbose=false) { @@ -940,6 +967,17 @@ class AgentSelectionField extends ChoiceField { } } +class DepartmentManagerSelectionField extends AgentSelectionField { + + function getChoices($verbose=false) { + return Staff::getStaffMembers(); + } + + function getSearchQ($method, $value, $name=false) { + return parent::getSearchQ($method, $value, 'dept__manager_id'); + } +} + class TeamSelectionField extends ChoiceField { use ZeroMeansUnset; @@ -953,7 +991,7 @@ class TeamSelectionField extends ChoiceField { } } -class TicketStateChoiceField extends ChoiceField { +class TicketStateChoiceField extends AdvancedSearchSelectionField { function getChoices($verbose=false) { return array( 'open' => __('Open'),