Ejemplo n.º 1
0
 function getSearchOptions()
 {
     $tab = array();
     $tab += $this->getSearchOptionsMain();
     $tab[155]['table'] = $this->getTable();
     $tab[155]['field'] = 'time_to_own';
     $tab[155]['name'] = __('Time to own');
     $tab[155]['datatype'] = 'datetime';
     $tab[155]['maybefuture'] = true;
     $tab[155]['massiveaction'] = false;
     $tab[155]['additionalfields'] = array('status');
     $tab[158]['table'] = $this->getTable();
     $tab[158]['field'] = 'time_to_own';
     $tab[158]['name'] = __('Time to own + Progress');
     $tab[158]['massiveaction'] = false;
     $tab[158]['nosearch'] = true;
     $tab[158]['additionalfields'] = array('status');
     $tab[159]['table'] = $this->getTable();
     $tab[159]['field'] = 'is_late';
     $tab[159]['name'] = __('Time to own exceedeed');
     $tab[159]['datatype'] = 'bool';
     $tab[159]['massiveaction'] = false;
     $tab[159]['computation'] = "IF(TABLE.`time_to_own` IS NOT NULL\n                                            AND TABLE.`status` <> " . self::WAITING . "\n                                            AND (TABLE.`takeintoaccount_delay_stat`\n                                                        > TIME_TO_SEC(TIMEDIFF(TABLE.`time_to_own`,\n                                                                               TABLE.`date`))\n                                                 OR (TABLE.`takeintoaccount_delay_stat` = 0\n                                                      AND TABLE.`time_to_own` < NOW())),\n                                            1, 0)";
     $tab[14]['table'] = $this->getTable();
     $tab[14]['field'] = 'type';
     $tab[14]['name'] = __('Type');
     $tab[14]['searchtype'] = 'equals';
     $tab[14]['datatype'] = 'specific';
     $tab[13]['table'] = 'glpi_items_tickets';
     $tab[13]['field'] = 'items_id';
     $tab[13]['name'] = _n('Associated element', 'Associated elements', Session::getPluralNumber());
     $tab[13]['datatype'] = 'specific';
     $tab[13]['comments'] = true;
     $tab[13]['nosort'] = true;
     $tab[13]['nosearch'] = true;
     $tab[13]['additionalfields'] = array('itemtype');
     $tab[13]['joinparams'] = array('jointype' => 'child');
     $tab[13]['forcegroupby'] = true;
     $tab[13]['massiveaction'] = false;
     $tab[131]['table'] = 'glpi_items_tickets';
     $tab[131]['field'] = 'itemtype';
     $tab[131]['name'] = _n('Associated item type', 'Associated item types', Session::getPluralNumber());
     $tab[131]['datatype'] = 'itemtypename';
     $tab[131]['itemtype_list'] = 'ticket_types';
     $tab[131]['nosort'] = true;
     $tab[131]['additionalfields'] = array('itemtype');
     $tab[131]['joinparams'] = array('jointype' => 'child');
     $tab[131]['forcegroupby'] = true;
     $tab[131]['massiveaction'] = false;
     $tab[9]['table'] = 'glpi_requesttypes';
     $tab[9]['field'] = 'name';
     $tab[9]['name'] = __('Request source');
     $tab[9]['datatype'] = 'dropdown';
     // Can't use Location::getSearchOptionsToAdd because id conflicts
     $tab[83]['table'] = 'glpi_locations';
     $tab[83]['field'] = 'completename';
     $tab[83]['name'] = __('Location');
     $tab[83]['datatype'] = 'dropdown';
     $tab[80]['table'] = 'glpi_entities';
     $tab[80]['field'] = 'completename';
     $tab[80]['name'] = __('Entity');
     $tab[80]['massiveaction'] = false;
     $tab[80]['datatype'] = 'dropdown';
     // For ticket template
     $tab[142]['table'] = 'glpi_documents';
     $tab[142]['field'] = 'name';
     $tab[142]['name'] = _n('Document', 'Documents', Session::getPluralNumber());
     $tab[142]['forcegroupby'] = true;
     $tab[142]['usehaving'] = true;
     $tab[142]['nosearch'] = true;
     $tab[142]['nodisplay'] = true;
     $tab[142]['datatype'] = 'dropdown';
     $tab[142]['massiveaction'] = false;
     $tab[142]['joinparams'] = array('jointype' => 'items_id', 'beforejoin' => array('table' => 'glpi_documents_items', 'joinparams' => array('jointype' => 'itemtype_item')));
     $tab += $this->getSearchOptionsActors();
     $tab['slt'] = __('SLT');
     $tab[37]['table'] = 'glpi_slts';
     $tab[37]['field'] = 'name';
     $tab[37]['linkfield'] = 'slts_tto_id';
     $tab[37]['name'] = __('SLT') . "&nbsp;" . __('Time to own');
     $tab[37]['massiveaction'] = false;
     $tab[37]['datatype'] = 'dropdown';
     $tab[37]['joinparams'] = array('condition' => "AND NEWTABLE.`type` = '" . SLT::TTO . "'");
     $tab[37]['condition'] = "`glpi_slts`.`type` = '" . SLT::TTO . "'";
     $tab[30]['table'] = 'glpi_slts';
     $tab[30]['field'] = 'name';
     $tab[30]['linkfield'] = 'slts_ttr_id';
     $tab[30]['name'] = __('SLT') . "&nbsp;" . __('Time to resolve');
     $tab[30]['massiveaction'] = false;
     $tab[30]['datatype'] = 'dropdown';
     $tab[30]['joinparams'] = array('condition' => "AND NEWTABLE.`type` = '" . SLT::TTR . "'");
     $tab[30]['condition'] = "`glpi_slts`.`type` = '" . SLT::TTR . "'";
     $tab[32]['table'] = 'glpi_slalevels';
     $tab[32]['field'] = 'name';
     $tab[32]['name'] = __('Escalation level');
     $tab[32]['massiveaction'] = false;
     $tab[32]['datatype'] = 'dropdown';
     $tab[32]['joinparams'] = array('beforejoin' => array('table' => 'glpi_slalevels_tickets', 'joinparams' => array('jointype' => 'child')));
     $tab[32]['forcegroupby'] = true;
     $tab += TicketValidation::getSearchOptionsToAdd();
     $tab['satisfaction'] = __('Satisfaction survey');
     $tab[31]['table'] = 'glpi_ticketsatisfactions';
     $tab[31]['field'] = 'type';
     $tab[31]['name'] = __('Type');
     $tab[31]['massiveaction'] = false;
     $tab[31]['searchtype'] = array('equals', 'notequals');
     $tab[31]['searchequalsonfield'] = true;
     $tab[31]['joinparams'] = array('jointype' => 'child');
     $tab[31]['datatype'] = 'specific';
     $tab[60]['table'] = 'glpi_ticketsatisfactions';
     $tab[60]['field'] = 'date_begin';
     $tab[60]['name'] = __('Creation date');
     $tab[60]['datatype'] = 'datetime';
     $tab[60]['massiveaction'] = false;
     $tab[60]['joinparams'] = array('jointype' => 'child');
     $tab[61]['table'] = 'glpi_ticketsatisfactions';
     $tab[61]['field'] = 'date_answered';
     $tab[61]['name'] = __('Response date');
     $tab[61]['datatype'] = 'datetime';
     $tab[61]['massiveaction'] = false;
     $tab[61]['joinparams'] = array('jointype' => 'child');
     $tab[62]['table'] = 'glpi_ticketsatisfactions';
     $tab[62]['field'] = 'satisfaction';
     $tab[62]['name'] = __('Satisfaction');
     $tab[62]['datatype'] = 'number';
     $tab[62]['massiveaction'] = false;
     $tab[62]['joinparams'] = array('jointype' => 'child');
     $tab[63]['table'] = 'glpi_ticketsatisfactions';
     $tab[63]['field'] = 'comment';
     $tab[63]['name'] = __('Comments');
     $tab[63]['datatype'] = 'text';
     $tab[63]['massiveaction'] = false;
     $tab[63]['joinparams'] = array('jointype' => 'child');
     $tab['followup'] = _n('Followup', 'Followups', Session::getPluralNumber());
     $followup_condition = '';
     if (!Session::haveRight('followup', TicketFollowup::SEEPRIVATE)) {
         $followup_condition = "AND (`NEWTABLE`.`is_private` = '0'\n                                     OR `NEWTABLE`.`users_id` = '" . Session::getLoginUserID() . "')";
     }
     $tab[25]['table'] = 'glpi_ticketfollowups';
     $tab[25]['field'] = 'content';
     $tab[25]['name'] = __('Description');
     $tab[25]['forcegroupby'] = true;
     $tab[25]['splititems'] = true;
     $tab[25]['massiveaction'] = false;
     $tab[25]['joinparams'] = array('jointype' => 'child', 'condition' => $followup_condition);
     $tab[25]['datatype'] = 'text';
     $tab[36]['table'] = 'glpi_ticketfollowups';
     $tab[36]['field'] = 'date';
     $tab[36]['name'] = __('Date');
     $tab[36]['datatype'] = 'datetime';
     $tab[36]['massiveaction'] = false;
     $tab[36]['forcegroupby'] = true;
     $tab[36]['joinparams'] = array('jointype' => 'child', 'condition' => $followup_condition);
     $tab[27]['table'] = 'glpi_ticketfollowups';
     $tab[27]['field'] = 'id';
     $tab[27]['name'] = _x('quantity', 'Number of followups');
     $tab[27]['forcegroupby'] = true;
     $tab[27]['usehaving'] = true;
     $tab[27]['datatype'] = 'count';
     $tab[27]['massiveaction'] = false;
     $tab[27]['joinparams'] = array('jointype' => 'child', 'condition' => $followup_condition);
     $tab[29]['table'] = 'glpi_requesttypes';
     $tab[29]['field'] = 'name';
     $tab[29]['name'] = __('Request source');
     $tab[29]['datatype'] = 'dropdown';
     $tab[29]['forcegroupby'] = true;
     $tab[29]['massiveaction'] = false;
     $tab[29]['joinparams'] = array('beforejoin' => array('table' => 'glpi_ticketfollowups', 'joinparams' => array('jointype' => 'child', 'condition' => $followup_condition)));
     $tab[91]['table'] = 'glpi_ticketfollowups';
     $tab[91]['field'] = 'is_private';
     $tab[91]['name'] = __('Private followup');
     $tab[91]['datatype'] = 'bool';
     $tab[91]['forcegroupby'] = true;
     $tab[91]['splititems'] = true;
     $tab[91]['massiveaction'] = false;
     $tab[91]['joinparams'] = array('jointype' => 'child', 'condition' => $followup_condition);
     $tab[93]['table'] = 'glpi_users';
     $tab[93]['field'] = 'name';
     $tab[93]['name'] = __('Writer');
     $tab[93]['datatype'] = 'itemlink';
     $tab[93]['right'] = 'all';
     $tab[93]['forcegroupby'] = true;
     $tab[93]['massiveaction'] = false;
     $tab[93]['joinparams'] = array('beforejoin' => array('table' => 'glpi_ticketfollowups', 'joinparams' => array('jointype' => 'child', 'condition' => $followup_condition)));
     $tab += $this->getSearchOptionsStats();
     $tab[150]['table'] = $this->getTable();
     $tab[150]['field'] = 'takeintoaccount_delay_stat';
     $tab[150]['name'] = __('Take into account time');
     $tab[150]['datatype'] = 'timestamp';
     $tab[150]['forcegroupby'] = true;
     $tab[150]['massiveaction'] = false;
     if (Session::haveRightsOr(self::$rightname, array(self::READALL, self::READASSIGN, self::OWN))) {
         $tab['linktickets'] = _n('Linked ticket', 'Linked tickets', Session::getPluralNumber());
         $tab[40]['table'] = 'glpi_tickets_tickets';
         $tab[40]['field'] = 'tickets_id_1';
         $tab[40]['name'] = __('All linked tickets');
         $tab[40]['massiveaction'] = false;
         $tab[40]['forcegroupby'] = true;
         $tab[40]['searchtype'] = 'equals';
         $tab[40]['joinparams'] = array('jointype' => 'item_item');
         $tab[40]['additionalfields'] = array('tickets_id_2');
         $tab[47]['table'] = 'glpi_tickets_tickets';
         $tab[47]['field'] = 'tickets_id_1';
         $tab[47]['name'] = __('Duplicated tickets');
         $tab[47]['massiveaction'] = false;
         $tab[47]['searchtype'] = 'equals';
         $tab[47]['joinparams'] = array('jointype' => 'item_item', 'condition' => "AND NEWTABLE.`link` = " . Ticket_Ticket::DUPLICATE_WITH);
         $tab[47]['additionalfields'] = array('tickets_id_2');
         $tab[47]['forcegroupby'] = true;
         $tab[41]['table'] = 'glpi_tickets_tickets';
         $tab[41]['field'] = 'id';
         $tab[41]['name'] = __('Number of all linked tickets');
         $tab[41]['massiveaction'] = false;
         $tab[41]['datatype'] = 'count';
         $tab[41]['usehaving'] = true;
         $tab[41]['joinparams'] = array('jointype' => 'item_item');
         $tab[46]['table'] = 'glpi_tickets_tickets';
         $tab[46]['field'] = 'id';
         $tab[46]['name'] = __('Number of duplicated tickets');
         $tab[46]['massiveaction'] = false;
         $tab[46]['datatype'] = 'count';
         $tab[46]['usehaving'] = true;
         $tab[46]['joinparams'] = array('jointype' => 'item_item', 'condition' => "AND NEWTABLE.`link` = " . Ticket_Ticket::DUPLICATE_WITH);
         $tab += TicketTask::getSearchOptionsToAdd();
         $tab += $this->getSearchOptionsSolution();
         if (Session::haveRight('ticketcost', READ)) {
             $tab += TicketCost::getSearchOptionsToAdd();
         }
         $tab['problem'] = Problem::getTypeName(Session::getPluralNumber());
         $tab[141]['table'] = 'glpi_problems_tickets';
         $tab[141]['field'] = 'id';
         $tab[141]['name'] = _x('quantity', 'Number of problems');
         $tab[141]['forcegroupby'] = true;
         $tab[141]['usehaving'] = true;
         $tab[141]['datatype'] = 'count';
         $tab[141]['massiveaction'] = false;
         $tab[141]['joinparams'] = array('jointype' => 'child');
     }
     // Filter search fields for helpdesk
     if (!Session::isCron() && (!isset($_SESSION['glpiactiveprofile']['interface']) || $_SESSION['glpiactiveprofile']['interface'] == 'helpdesk')) {
         $tokeep = array('common', 'requester', 'satisfaction');
         if (Session::haveRightsOr('ticketvalidation', array_merge(TicketValidation::getValidateRights(), TicketValidation::getCreateRights()))) {
             $tokeep[] = 'validation';
         }
         $keep = false;
         foreach ($tab as $key => $val) {
             if (!is_array($val)) {
                 $keep = in_array($key, $tokeep);
             }
             if (!$keep) {
                 if (is_array($val)) {
                     $tab[$key]['nosearch'] = true;
                 }
             }
         }
         // last updater no search
         $tab[64]['nosearch'] = true;
     }
     return $tab;
 }