/** * Get the SEARCH_OPTION array * * @param $itemtype * @param $withplugins boolean get search options from plugins (true by default) * * @return the reference to array of search options for the given item type **/ static function &getOptions($itemtype, $withplugins = true) { global $CFG_GLPI; static $search = array(); $item = NULL; if (!isset($search[$itemtype])) { // standard type first switch ($itemtype) { case 'Internet': $search[$itemtype]['common'] = __('Characteristics'); $search[$itemtype][1]['table'] = 'networkport_types'; $search[$itemtype][1]['field'] = 'name'; $search[$itemtype][1]['name'] = __('Name'); $search[$itemtype][1]['datatype'] = 'itemlink'; $search[$itemtype][1]['searchtype'] = 'contains'; $search[$itemtype][2]['table'] = 'networkport_types'; $search[$itemtype][2]['field'] = 'id'; $search[$itemtype][2]['name'] = __('ID'); $search[$itemtype][2]['searchtype'] = 'contains'; $search[$itemtype][31]['table'] = 'glpi_states'; $search[$itemtype][31]['field'] = 'completename'; $search[$itemtype][31]['name'] = __('Status'); $search[$itemtype] += NetworkPort::getSearchOptionsToAdd('networkport_types'); break; case 'AllAssets': $search[$itemtype]['common'] = __('Characteristics'); $search[$itemtype][1]['table'] = 'asset_types'; $search[$itemtype][1]['field'] = 'name'; $search[$itemtype][1]['name'] = __('Name'); $search[$itemtype][1]['datatype'] = 'itemlink'; $search[$itemtype][1]['searchtype'] = 'contains'; $search[$itemtype][2]['table'] = 'asset_types'; $search[$itemtype][2]['field'] = 'id'; $search[$itemtype][2]['name'] = __('ID'); $search[$itemtype][2]['searchtype'] = 'contains'; $search[$itemtype][31]['table'] = 'glpi_states'; $search[$itemtype][31]['field'] = 'completename'; $search[$itemtype][31]['name'] = __('Status'); $search[$itemtype] += Location::getSearchOptionsToAdd(); $search[$itemtype][5]['table'] = 'asset_types'; $search[$itemtype][5]['field'] = 'serial'; $search[$itemtype][5]['name'] = __('Serial number'); $search[$itemtype][6]['table'] = 'asset_types'; $search[$itemtype][6]['field'] = 'otherserial'; $search[$itemtype][6]['name'] = __('Inventory number'); $search[$itemtype][16]['table'] = 'asset_types'; $search[$itemtype][16]['field'] = 'comment'; $search[$itemtype][16]['name'] = __('Comments'); $search[$itemtype][16]['datatype'] = 'text'; $search[$itemtype][70]['table'] = 'glpi_users'; $search[$itemtype][70]['field'] = 'name'; $search[$itemtype][70]['name'] = __('User'); $search[$itemtype][7]['table'] = 'asset_types'; $search[$itemtype][7]['field'] = 'contact'; $search[$itemtype][7]['name'] = __('Alternate username'); $search[$itemtype][7]['datatype'] = 'string'; $search[$itemtype][8]['table'] = 'asset_types'; $search[$itemtype][8]['field'] = 'contact_num'; $search[$itemtype][8]['name'] = __('Alternate username number'); $search[$itemtype][8]['datatype'] = 'string'; $search[$itemtype][71]['table'] = 'glpi_groups'; $search[$itemtype][71]['field'] = 'completename'; $search[$itemtype][71]['name'] = __('Group'); $search[$itemtype][19]['table'] = 'asset_types'; $search[$itemtype][19]['field'] = 'date_mod'; $search[$itemtype][19]['name'] = __('Last update'); $search[$itemtype][19]['datatype'] = 'datetime'; $search[$itemtype][19]['massiveaction'] = false; $search[$itemtype][23]['table'] = 'glpi_manufacturers'; $search[$itemtype][23]['field'] = 'name'; $search[$itemtype][23]['name'] = __('Manufacturer'); $search[$itemtype][24]['table'] = 'glpi_users'; $search[$itemtype][24]['field'] = 'name'; $search[$itemtype][24]['linkfield'] = 'users_id_tech'; $search[$itemtype][24]['name'] = __('Technician in charge of the hardware'); $search[$itemtype][80]['table'] = 'glpi_entities'; $search[$itemtype][80]['field'] = 'completename'; $search[$itemtype][80]['name'] = __('Entity'); break; default: if ($item = getItemForItemtype($itemtype)) { $search[$itemtype] = $item->getSearchOptions(); } break; } if (Session::getLoginUserID() && in_array($itemtype, $CFG_GLPI["ticket_types"])) { $search[$itemtype]['tracking'] = __('Assistance'); $search[$itemtype][60]['table'] = 'glpi_tickets'; $search[$itemtype][60]['field'] = 'id'; $search[$itemtype][60]['datatype'] = 'count'; $search[$itemtype][60]['name'] = _x('quantity', 'Number of tickets'); $search[$itemtype][60]['forcegroupby'] = true; $search[$itemtype][60]['usehaving'] = true; $search[$itemtype][60]['massiveaction'] = false; $search[$itemtype][60]['joinparams'] = array('beforejoin' => array('table' => 'glpi_items_tickets', 'joinparams' => array('jointype' => 'itemtype_item')), 'condition' => getEntitiesRestrictRequest('AND', 'NEWTABLE')); $search[$itemtype][140]['table'] = 'glpi_problems'; $search[$itemtype][140]['field'] = 'id'; $search[$itemtype][140]['datatype'] = 'count'; $search[$itemtype][140]['name'] = _x('quantity', 'Number of problems'); $search[$itemtype][140]['forcegroupby'] = true; $search[$itemtype][140]['usehaving'] = true; $search[$itemtype][140]['massiveaction'] = false; $search[$itemtype][140]['joinparams'] = array('beforejoin' => array('table' => 'glpi_items_problems', 'joinparams' => array('jointype' => 'itemtype_item')), 'condition' => getEntitiesRestrictRequest('AND', 'NEWTABLE')); } if (in_array($itemtype, $CFG_GLPI["networkport_types"]) || $itemtype == 'AllAssets') { $search[$itemtype] += NetworkPort::getSearchOptionsToAdd($itemtype); } if (in_array($itemtype, $CFG_GLPI["contract_types"]) || $itemtype == 'AllAssets') { $search[$itemtype] += Contract::getSearchOptionsToAdd(); } if (Document::canApplyOn($itemtype) || $itemtype == 'AllAssets') { $search[$itemtype] += Document::getSearchOptionsToAdd(); } if (InfoCom::canApplyOn($itemtype) || $itemtype == 'AllAssets') { $search[$itemtype] += Infocom::getSearchOptionsToAdd($itemtype); } if (in_array($itemtype, $CFG_GLPI["link_types"])) { $search[$itemtype]['link'] = _n('External link', 'External links', Session::getPluralNumber()); $search[$itemtype] += Link::getSearchOptionsToAdd($itemtype); } if ($withplugins) { // Search options added by plugins $plugsearch = Plugin::getAddSearchOptions($itemtype); if (count($plugsearch)) { $search[$itemtype] += array('plugins' => _n('Plugin', 'Plugins', Session::getPluralNumber())); $search[$itemtype] += $plugsearch; } } // Complete linkfield if not define if (is_null($item)) { // Special union type $itemtable = $CFG_GLPI['union_search_type'][$itemtype]; } else { if ($item = getItemForItemtype($itemtype)) { $itemtable = $item->getTable(); } } foreach ($search[$itemtype] as $key => $val) { if (!is_array($val)) { // skip sub-menu continue; } // Compatibility before 0.80 : Force massive action to false if linkfield is empty : if (isset($val['linkfield']) && empty($val['linkfield'])) { $search[$itemtype][$key]['massiveaction'] = false; } // Set default linkfield if (!isset($val['linkfield']) || empty($val['linkfield'])) { if (strcmp($itemtable, $val['table']) == 0 && (!isset($val['joinparams']) || count($val['joinparams']) == 0)) { $search[$itemtype][$key]['linkfield'] = $val['field']; } else { $search[$itemtype][$key]['linkfield'] = getForeignKeyFieldForTable($val['table']); } } // Set default datatype // if (!isset($val['datatype']) || empty($val['datatype'])) { // if ((strcmp($itemtable,$val['table']) != 0) // && ($val['field'] == 'name' || $val['field'] == 'completename')) { // $search[$itemtype][$key]['datatype'] = 'dropdown'; // } else { // $search[$itemtype][$key]['datatype'] = 'string'; // } // } // Add default joinparams if (!isset($val['joinparams'])) { $search[$itemtype][$key]['joinparams'] = array(); } } } return $search[$itemtype]; }
/** * Get the SEARCH_OPTION array * * @param $itemtype * @param $withplugins boolean get search options from plugins * * @return the reference to array of search options for the given item type **/ static function &getOptions($itemtype, $withplugins = true) { global $LANG, $CFG_GLPI; static $search = array(); if (!isset($search[$itemtype])) { // standard type first if ($itemtype == 'States') { $search[$itemtype]['common'] = $LANG['common'][32]; $search['States'][1]['table'] = 'state_types'; $search['States'][1]['field'] = 'name'; $search['States'][1]['name'] = $LANG['common'][16]; $search['States'][1]['datatype'] = 'itemlink'; $search['States'][1]['searchtype'] = 'contains'; $search['States'][2]['table'] = 'state_types'; $search['States'][2]['field'] = 'id'; $search['States'][2]['name'] = $LANG['common'][2]; $search['States'][2]['searchtype'] = 'contains'; $search['States'][31]['table'] = 'glpi_states'; $search['States'][31]['field'] = 'name'; $search['States'][31]['name'] = $LANG['state'][0]; $search['States'] += Location::getSearchOptionsToAdd(); $search['States'][5]['table'] = 'state_types'; $search['States'][5]['field'] = 'serial'; $search['States'][5]['name'] = $LANG['common'][19]; $search['States'][6]['table'] = 'state_types'; $search['States'][6]['field'] = 'otherserial'; $search['States'][6]['name'] = $LANG['common'][20]; $search['States'][16]['table'] = 'state_types'; $search['States'][16]['field'] = 'comment'; $search['States'][16]['name'] = $LANG['common'][25]; $search['States'][16]['datatype'] = 'text'; $search['States'][70]['table'] = 'glpi_users'; $search['States'][70]['field'] = 'name'; $search['States'][70]['name'] = $LANG['common'][34]; $search['States'][71]['table'] = 'glpi_groups'; $search['States'][71]['field'] = 'name'; $search['States'][71]['name'] = $LANG['common'][35]; $search['States'][19]['table'] = 'state_types'; $search['States'][19]['field'] = 'date_mod'; $search['States'][19]['name'] = $LANG['common'][26]; $search['States'][19]['datatype'] = 'datetime'; $search['States'][19]['massiveaction'] = false; $search['States'][23]['table'] = 'glpi_manufacturers'; $search['States'][23]['field'] = 'name'; $search['States'][23]['name'] = $LANG['common'][5]; $search['States'][24]['table'] = 'glpi_users'; $search['States'][24]['field'] = 'name'; $search['States'][24]['name'] = $LANG['common'][10]; $search['States'][80]['table'] = 'glpi_entities'; $search['States'][80]['field'] = 'completename'; $search['States'][80]['name'] = $LANG['entity'][0]; } else { if (class_exists($itemtype)) { $item = new $itemtype(); $search[$itemtype] = $item->getSearchOptions(); } } if (getLoginUserID() && in_array($itemtype, $CFG_GLPI["ticket_types"])) { $search[$itemtype]['tracking'] = $LANG['title'][24]; $search[$itemtype][60]['table'] = 'glpi_tickets'; $search[$itemtype][60]['linkfield'] = 'items_id'; $search[$itemtype][60]['field'] = 'count'; $search[$itemtype][60]['name'] = $LANG['stats'][13]; $search[$itemtype][60]['forcegroupby'] = true; $search[$itemtype][60]['usehaving'] = true; $search[$itemtype][60]['datatype'] = 'number'; $search[$itemtype][60]['massiveaction'] = false; $search[$itemtype][60]['joinparams'] = array('jointype' => "itemtype_item", 'condition' => getEntitiesRestrictRequest('AND', 'NEWTABLE')); } if (in_array($itemtype, $CFG_GLPI["networkport_types"])) { $search[$itemtype] += NetworkPort::getSearchOptionsToAdd($itemtype); } if (in_array($itemtype, $CFG_GLPI["contract_types"])) { $search[$itemtype] += Contract::getSearchOptionsToAdd(); } if (in_array($itemtype, $CFG_GLPI["infocom_types"])) { $search[$itemtype] += Infocom::getSearchOptionsToAdd($itemtype); } if ($withplugins) { // Search options added by plugins $plugsearch = getPluginSearchOptions($itemtype); if (count($plugsearch)) { $search[$itemtype] += array('plugins' => $LANG['common'][29]); $search[$itemtype] += $plugsearch; } } // Complete linkfield if not define if ($itemtype === 'States') { $itemtable = 'states_types'; } else { $itemtable = $item->getTable(); } foreach ($search[$itemtype] as $key => $val) { // Compatibility before 0.80 : Force massive action to false if linkfield is empty : if (isset($val['linkfield']) && empty($val['linkfield'])) { $search[$itemtype][$key]['massiveaction'] = false; } if (!isset($val['linkfield']) || empty($val['linkfield'])) { if (strcmp($itemtable, $val['table']) == 0 && (!isset($val['joinparams']) || count($val['joinparams']) == 0)) { $search[$itemtype][$key]['linkfield'] = $val['field']; } else { $search[$itemtype][$key]['linkfield'] = getForeignKeyFieldForTable($val['table']); } } // Add default joinparams if (!isset($val['joinparams'])) { $search[$itemtype][$key]['joinparams'] = array(); } } } return $search[$itemtype]; }
function getSearchOptions() { $tab = array(); $tab['common'] = __('Unmanaged device', 'fusioninventory'); $tab[1]['table'] = $this->getTable(); $tab[1]['field'] = 'name'; $tab[1]['linkfield'] = 'name'; $tab[1]['name'] = __('Name'); $tab[1]['datatype'] = 'itemlink'; $tab[1]['itemlink_type'] = $this->getType(); $tab[2]['table'] = $this->getTable(); $tab[2]['field'] = 'id'; $tab[2]['linkfield'] = ''; $tab[2]['name'] = __('ID'); $tab[3]['table'] = 'glpi_locations'; $tab[3]['field'] = 'name'; $tab[3]['linkfield'] = 'locations_id'; $tab[3]['name'] = __('Location'); $tab[3]['datatype'] = 'dropdown'; $tab[4]['table'] = $this->getTable(); $tab[4]['field'] = 'serial'; $tab[4]['linkfield'] = 'serial'; $tab[4]['name'] = __('Serial Number'); $tab[5]['table'] = $this->getTable(); $tab[5]['field'] = 'otherserial'; $tab[5]['linkfield'] = 'otherserial'; $tab[5]['name'] = __('Inventory number'); $tab[6]['table'] = $this->getTable(); $tab[6]['field'] = 'contact'; $tab[6]['linkfield'] = 'contact'; $tab[6]['name'] = __('Contact'); $tab[7]['table'] = $this->getTable(); $tab[7]['field'] = 'hub'; $tab[7]['linkfield'] = 'hub'; $tab[7]['name'] = __('Network hub', 'fusioninventory'); $tab[7]['datatype'] = 'bool'; $tab[8]['table'] = 'glpi_entities'; $tab[8]['field'] = 'completename'; $tab[8]['linkfield'] = 'entities_id'; $tab[8]['name'] = __('Entity'); $tab[9]['table'] = 'glpi_domains'; $tab[9]['field'] = 'name'; $tab[9]['linkfield'] = 'domain'; $tab[9]['name'] = __('Domain'); $tab[9]['datatype'] = 'dropdown'; $tab[10]['table'] = $this->getTable(); $tab[10]['field'] = 'comment'; $tab[10]['linkfield'] = 'comment'; $tab[10]['name'] = __('Comments'); $tab[10]['datatype'] = 'text'; $tab[13]['table'] = $this->getTable(); $tab[13]['field'] = 'item_type'; $tab[13]['linkfield'] = 'item_type'; $tab[13]['name'] = __('Type'); $tab[13]['datatype'] = 'dropdown'; $tab[14]['table'] = $this->getTable(); $tab[14]['field'] = 'date_mod'; $tab[14]['linkfield'] = ''; $tab[14]['name'] = __('Last update'); $tab[14]['datatype'] = 'datetime'; $tab[15]['table'] = $this->getTable(); $tab[15]['field'] = 'sysdescr'; $tab[15]['linkfield'] = ''; $tab[15]['name'] = __('Sysdescr', 'fusioninventory'); $tab[15]['datatype'] = 'text'; $tab[17]['table'] = 'glpi_plugin_fusioninventory_configsecurities'; $tab[17]['field'] = 'name'; $tab[17]['linkfield'] = 'plugin_fusioninventory_configsecurities_id'; $tab[17]['name'] = __('SNMP authentication', 'fusioninventory'); $tab[17]['datatype'] = 'dropdown'; $tab += NetworkPort::getSearchOptionsToAdd("PluginFusioninventoryUnmanaged"); return $tab; }
/** * Add blacklisted fields for an itemtype * * @param $itemtype the itemtype * * @return the array of all blacklisted fields */ static function getBlacklistedOptions($itemtype) { global $CFG_GLPI; //2 : id // 19 : date_mod // 80 : entity $blacklist = array(2, 19, 80); //add document fields if (in_array($itemtype, $CFG_GLPI["document_types"])) { $tabs = Document::getSearchOptionsToAdd(); $document_fields = array(); unset($tabs['document']); foreach ($tabs as $k => $v) { $document_fields[] = $k; } $blacklist = array_merge($blacklist, $document_fields); } //add infocoms fields if (in_array($itemtype, $CFG_GLPI["infocom_types"])) { $tabs = Infocom::getSearchOptionsToAdd($itemtype); $infocom_fields = array(); unset($tabs['financial']); foreach ($tabs as $k => $v) { $infocom_fields[] = $k; } $blacklist = array_merge($blacklist, $infocom_fields); } //add contract fields if (in_array($itemtype, $CFG_GLPI["contract_types"])) { $tabs = Contract::getSearchOptionsToAdd(); $contract_fields = array(); unset($tabs['contract']); foreach ($tabs as $k => $v) { $contract_fields[] = $k; } $blacklist = array_merge($blacklist, $contract_fields); } //add networkport fields if (in_array($itemtype, $CFG_GLPI["networkport_types"])) { $tabs = NetworkPort::getSearchOptionsToAdd($itemtype); $networkport_fields = array(); unset($tabs['network']); foreach ($tabs as $k => $v) { $networkport_fields[] = $k; } $blacklist = array_merge($blacklist, $networkport_fields); } //add ticket_types fields if (in_array($itemtype, $CFG_GLPI["ticket_types"])) { $ticket_fields = array(60, 140); $blacklist = array_merge($blacklist, $ticket_fields); } return $blacklist; }