/**
  * Add SNMPQUERY string to XML code
  *
  *@return nothing
  **/
 function addQuery($pxml, $task = 0)
 {
     $ptmi = new PluginFusioninventoryModelInfos();
     $ptsnmpa = new PluginFusioninventorySnmpauth();
     $pta = new PluginFusioninventoryAgents();
     $ptap = new PluginFusioninventoryAgentsProcesses();
     $ptrip = new PluginFusioninventoryRangeIP();
     $ptt = new PluginFusioninventoryTask();
     $agent = $pta->InfosByKey($pxml->DEVICEID);
     $count_range = $ptrip->Counter($agent["ID"], "query");
     $count_range += $ptt->Counter($agent["ID"], "SNMPQUERY");
     if ($task == "1") {
         $tasks = $ptt->ListTask($agent["ID"], "SNMPQUERY");
         foreach ($tasks as $task_id => $taskInfos) {
             file_put_contents(GLPI_PLUGIN_DOC_DIR . "/fusioninventory/query.log" . rand(), $agent["ID"]);
             if ($tasks[$task_id]["param"] == PLUGIN_FUSIONINVENTORY_SNMP_AGENTS) {
                 $task = "0";
             }
         }
         if ($task == "1") {
             $agent["core_query"] = 1;
             $agent["threads_query"] = 1;
         }
     }
     // Get total number of devices to query
     $ranges = $ptrip->ListRange($agent["ID"], "query");
     $modelslistused = array();
     foreach ($ranges as $range_id => $rangeInfos) {
         $modelslistused = $this->addDevice($sxml_option, 'networking', $ranges[$range_id]["ifaddr_start"], $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused, 0);
         $modelslistused = $this->addDevice($sxml_option, 'printer', $ranges[$range_id]["ifaddr_start"], $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused, 0);
     }
     if ($count_range > 0 and $agent["lock"] == 0 and !empty($modelslistused) or $task == "1") {
         $a_input = array();
         if ($_SESSION['glpi_plugin_fusioninventory_addagentprocess'] == '0') {
             $this->addProcessNumber($ptap->addProcess($pxml));
             $_SESSION['glpi_plugin_fusioninventory_addagentprocess'] = '1';
         }
         $a_input['query_core'] = $agent["core_query"];
         $a_input['query_threads'] = $agent["threads_query"];
         $ptap->updateProcess($this->sxml->PROCESSNUMBER, $a_input);
         $sxml_option = $this->sxml->addChild('OPTION');
         $sxml_option->addChild('NAME', 'SNMPQUERY');
         $sxml_param = $sxml_option->addChild('PARAM');
         $sxml_param->addAttribute('CORE_QUERY', $agent["core_query"]);
         $sxml_param->addAttribute('THREADS_QUERY', $agent["threads_query"]);
         $sxml_param->addAttribute('PID', $this->sxml->PROCESSNUMBER);
         if ($task == "1") {
             foreach ($tasks as $task_id => $taskInfos) {
                 // TODO : envoyer une plage avec juste cette ip ***
                 switch ($tasks[$task_id]['device_type']) {
                     case NETWORKING_TYPE:
                         $modelslistused = $this->addDevice($sxml_option, 'networking', 0, 0, "-1", $modelslistused, 1, $tasks[$task_id]['on_device']);
                         break;
                     case PRINTER_TYPE:
                         $modelslistused = $this->addDevice($sxml_option, 'printer', 0, 0, "-1", $modelslistused, 1, $tasks[$task_id]['on_device']);
                         break;
                 }
                 //
                 //
                 //                     $modelslistused = $this->addDevice($sxml_option, 'networking', $ranges[$range_id]["ifaddr_start"],
                 //                                 $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused);
             }
         } else {
             $ranges = $ptrip->ListRange($agent["ID"], "query");
             $modelslistused = array();
             foreach ($ranges as $range_id => $rangeInfos) {
                 $modelslistused = $this->addDevice($sxml_option, 'networking', $ranges[$range_id]["ifaddr_start"], $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused);
                 $modelslistused = $this->addDevice($sxml_option, 'printer', $ranges[$range_id]["ifaddr_start"], $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused);
             }
         }
         $snmpauthlist = $ptsnmpa->find();
         if (count($snmpauthlist)) {
             foreach ($snmpauthlist as $snmpauth) {
                 $this->addAuth($sxml_option, $snmpauth['ID']);
             }
         }
         $modelslist = $ptmi->find();
         if (count($modelslist)) {
             foreach ($modelslist as $model) {
                 if (isset($modelslistused[$model['ID']])) {
                     $this->addModel($sxml_option, $model['ID']);
                 }
             }
         }
     }
 }