static function displayAjaxValues($config, $request_data, $rand, $mode)
 {
     global $CFG_GLPI;
     $pfDeployPackage = new PluginFusioninventoryDeployPackage();
     $pfDeployOrder = new PluginFusioninventoryDeployOrder();
     if (isset($request_data['orders_id'])) {
         $pfDeployOrder->getFromDB($request_data['orders_id']);
         $pfDeployPackage->getFromDB($pfDeployOrder->fields['plugin_fusioninventory_deploypackages_id']);
     } else {
         $pfDeployPackage->getEmpty();
     }
     $p2p = 0;
     $p2p_retention_duration = 0;
     $uncompress = 0;
     if ($mode === 'create') {
         $source = $request_data['value'];
         /**
          * No need to continue if there is no selected source
          */
         if ($source === '0') {
             return;
         }
     } else {
         $p2p = $config['data']['p2p'];
         $p2p_retention_duration = $config['data']['p2p-retention-duration'];
         $uncompress = $config['data']['uncompress'];
     }
     echo "<table class='package_item'>";
     /*
      * Display file upload input only in 'create' mode
      */
     echo "<tr>";
     echo "<th>" . __("File", 'fusioninventory') . "</th>";
     echo "<td>";
     if ($mode === 'create') {
         switch ($source) {
             case "Computer":
                 echo "<input type='file' name='file' value='" . __("filename", 'fusioninventory') . "' />";
                 echo "<i>" . self::getMaxUploadSize() . "</i>";
                 break;
             case "Server":
                 echo "<input type='text' name='filename' id='server_filename{$rand}'" . " style='width:120px;float:left' />";
                 echo "<input type='button' class='submit' value='" . __("Choose", 'fusioninventory') . "' onclick='fileModal{$rand}.dialog(\"open\");' />";
                 Ajax::createModalWindow("fileModal{$rand}", $CFG_GLPI['root_doc'] . "/plugins/fusioninventory/ajax/deployfilemodal.php", array('title' => __('Select the file on server', 'fusioninventory'), 'extraparams' => array('rand' => $rand)));
                 break;
         }
     } else {
         /*
          * Display only name in 'edit' mode
          */
         echo $config['data']['name'];
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<th>" . __("Uncompress", 'fusioninventory') . "<img style='float:right' " . "src='" . $CFG_GLPI["root_doc"] . "/plugins/fusioninventory//pics/uncompress.png' /></th>";
     echo "<td>";
     Html::showCheckbox(array('name' => 'uncompress', 'checked' => $uncompress));
     echo "</td>";
     echo "</tr><tr>";
     echo "<th>" . __("P2P", 'fusioninventory') . "<img style='float:right' src='" . $CFG_GLPI["root_doc"] . "/plugins/fusioninventory//pics/p2p.png' /></th>";
     echo "<td>";
     Html::showCheckbox(array('name' => 'p2p', 'checked' => $p2p));
     echo "</td>";
     echo "</tr><tr>";
     echo "<th>" . __("retention days", 'fusioninventory') . "</th>";
     echo "<td>";
     /*
      * TODO: use task periodicity input to propose days, months and years
      */
     Dropdown::showNumber('p2p-retention-duration', array('value' => $p2p_retention_duration, 'min' => 0, 'max' => 400));
     echo "</td>";
     echo "</tr><tr>";
     echo "<td>";
     echo "</td><td>";
     if ($pfDeployPackage->can($pfDeployPackage->getID(), UPDATE)) {
         if ($mode === 'edit') {
             echo "<input type='submit' name='save_item' value=\"" . _sx('button', 'Save') . "\" class='submit' >";
         } else {
             echo "<input type='submit' name='add_item' value=\"" . _sx('button', 'Add') . "\" class='submit' >";
         }
     }
     echo "</td>";
     echo "</tr></table>";
 }
 static function displayAjaxValues($config, $request_data, $rand, $mode)
 {
     global $CFG_GLPI;
     $pfDeployPackage = new PluginFusioninventoryDeployPackage();
     $pfDeployOrder = new PluginFusioninventoryDeployOrder();
     if (isset($request_data['orders_id'])) {
         $pfDeployOrder->getFromDB($request_data['orders_id']);
         $pfDeployPackage->getFromDB($pfDeployOrder->fields['plugin_fusioninventory_deploypackages_id']);
     } else {
         $pfDeployPackage->getEmpty();
     }
     /*
      * Get type from request params
      */
     $type = NULL;
     if ($mode === 'create') {
         $type = $request_data['values'];
     } else {
         $type = $config['type'];
         $config_data = $config['data'];
     }
     /*
      * Set default values
      */
     $value_type_1 = "input";
     $value_1 = "";
     $value_2 = "";
     $retChecks = NULL;
     /*
      * set values from element's config in 'edit' mode
      */
     switch ($type) {
         case 'move':
         case 'copy':
             $value_label_1 = __("From", 'fusioninventory');
             $name_label_1 = "from";
             $value_label_2 = __("To", 'fusioninventory');
             $name_label_2 = "to";
             if ($mode === 'edit') {
                 $value_1 = $config_data['from'];
                 $value_2 = $config_data['to'];
             }
             break;
         case 'cmd':
             $value_label_1 = __("exec", 'fusioninventory');
             $name_label_1 = "exec";
             $value_label_2 = FALSE;
             $value_type_1 = "textarea";
             if ($mode === 'edit') {
                 $value_1 = $config_data['exec'];
                 if (isset($config_data['retChecks'])) {
                     $retChecks = $config_data['retChecks'];
                 }
             }
             break;
         case 'delete':
         case 'mkdir':
             $value_label_1 = __("path", 'fusioninventory');
             $name_label_1 = "list[]";
             $value_label_2 = FALSE;
             if ($mode === 'edit') {
                 /*
                  * TODO : Add list input like `retChecks` on `mkdir` and `delete`
                  * because those methods are defined as list in specification
                  */
                 $value_1 = array_shift($config_data['list']);
             }
             break;
         default:
             return FALSE;
     }
     echo "<table class='package_item'>";
     echo "<tr>";
     echo "<th>{$value_label_1}</th>";
     echo "<td>";
     switch ($value_type_1) {
         case "input":
             echo "<input type='text' name='{$name_label_1}' value='{$value_1}' />";
             break;
         case "textarea":
             echo "<textarea name='{$name_label_1}' rows='3'>{$value_1}</textarea>";
             break;
     }
     echo "</td>";
     echo "</tr>";
     if ($value_label_2 !== FALSE) {
         echo "<tr>";
         echo "<th>{$value_label_2}</th>";
         echo "<td><input type='text' name='{$name_label_2}' value='{$value_2}'/></td>";
         echo "</tr>";
     }
     //specific case for cmd : add retcheck form
     if ($type == "cmd") {
         echo "<tr>";
         echo "<th>" . __("Execution checks", 'fusioninventory');
         PluginFusioninventoryDeployPackage::plusButton("retchecks", ".table_retchecks.template");
         echo "</th>";
         echo "<td>";
         $display = "style='display:none'";
         if ($retChecks) {
             $display = "style='display:block'";
         }
         echo "<span id='retchecks' style='display:block'>";
         if (is_array($retChecks) && count($retChecks)) {
             foreach ($retChecks as $retcheck) {
                 echo "<table class='table_retchecks'>";
                 echo "<tr>";
                 echo "<td>";
                 Dropdown::showFromArray('retchecks_type[]', self::retchecks_entries(), array('value' => $retcheck['type']));
                 echo "</td>";
                 echo "<td>";
                 echo "<input type='text' name='retchecks_value[]' value='" . $retcheck['values'][0] . "' />";
                 echo "</td>";
                 echo "<td><a class='edit' onclick='removeLine(this)'><img src='" . $CFG_GLPI["root_doc"] . "/pics/delete.png' /></a></td>";
                 echo "</tr>";
                 echo "</table>";
             }
         }
         echo "<table class='table_retchecks template' style='display:none'>";
         echo "<tr>";
         echo "<td>";
         //Toolbox::logDebug(self::retchecks_entries());
         Dropdown::showFromArray('retchecks_type[]', self::retchecks_entries(), array());
         echo "</td>";
         echo "<td><input type='text' name='retchecks_value[]' /></td>";
         echo "<td><a class='edit' onclick='removeLine(this)'><img src='" . $CFG_GLPI["root_doc"] . "/pics/delete.png' /></a></td>";
         echo "</tr>";
         echo "</table>";
         echo "</span>";
         echo "</td>";
         echo "</tr>";
     }
     echo "<tr>";
     echo "<td></td><td>";
     if ($pfDeployPackage->can($pfDeployPackage->getID(), UPDATE)) {
         if ($mode === 'edit') {
             echo "<input type='submit' name='save_item' value=\"" . _sx('button', 'Save') . "\" class='submit' >";
         } else {
             echo "<input type='submit' name='add_item' value=\"" . _sx('button', 'Add') . "\" class='submit' >";
         }
     }
     echo "</td>";
     echo "</tr></table>";
     echo "<script type='text/javascript'>\n         function removeLine(item) {\n            var tag_table = item.parentNode.parentNode.parentNode.parentNode;\n            var parent = tag_table.parentNode;\n               parent.removeChild(tag_table);\n         }\n      </script>";
 }
        $json_response['success'] = FALSE;
        $json_response['reason'] = __('Package modification is forbidden by your profile.');
    }
    echo json_encode($json_response);
    exit;
}
if (!isset($_REQUEST['orders_id']) && !isset($_REQUEST['rand']) && !isset($_REQUEST['subtype'])) {
    exit;
}
if (!is_numeric($_REQUEST['orders_id'])) {
    Toolbox::logDebug("Error: orders_id in request is not an integer");
    Toolbox::logDebug(var_dump($_REQUEST['orders_id']));
    exit;
}
$order = new PluginFusioninventoryDeployOrder();
$order->getFromDB($_REQUEST['orders_id']);
//TODO: In the displayForm function, $_REQUEST is somewhat too much for the '$datas' parameter
// I think we could use only $order -- Kevin 'kiniou' Roy
switch ($_REQUEST['subtype']) {
    case 'check':
        PluginFusioninventoryDeployCheck::displayForm($order, $_REQUEST, $_REQUEST['rand'], $_POST['mode']);
        break;
    case 'file':
        PluginFusioninventoryDeployFile::displayForm($order, $_REQUEST, $_REQUEST['rand'], $_POST['mode']);
        break;
    case 'action':
        PluginFusioninventoryDeployAction::displayForm($order, $_REQUEST, $_REQUEST['rand'], $_POST['mode']);
        break;
    case 'package_json_debug':
        if (isset($order->fields['json'])) {
            PluginFusioninventoryDeployPackage::display_json_debug($order);
 static function displayAjaxValues($config, $request_data, $rand, $mode)
 {
     $pfDeployPackage = new PluginFusioninventoryDeployPackage();
     $pfDeployOrder = new PluginFusioninventoryDeployOrder();
     if (isset($request_data['orders_id'])) {
         $pfDeployOrder->getFromDB($request_data['orders_id']);
         $pfDeployPackage->getFromDB($pfDeployOrder->fields['plugin_fusioninventory_deploypackages_id']);
     } else {
         $pfDeployPackage->getEmpty();
     }
     /*
      * Get type from request params
      */
     $type = NULL;
     if ($mode === 'create') {
         $type = $request_data['value'];
         $config_data = NULL;
     } else {
         $type = $config['type'];
         $config_data = $config['data'];
     }
     $values = self::getValues($type, $config_data, $mode);
     if ($values === FALSE) {
         return FALSE;
     }
     echo "<table class='package_item'>";
     echo "<tr>";
     echo "<th>{$values['path_label']}</th>";
     echo "<td><input type='text' name='path' id='check_path{$rand}' value='{$values['path_value']}' /></td>";
     echo "</tr>";
     if ($values['value_label'] !== FALSE) {
         echo "<tr>";
         echo "<th>{$values['value_label']}</th>";
         switch ($values['value_type']) {
             case "textarea":
                 echo "<td><textarea name='value' id='check_value{$rand}' rows='5'>" . $values['value'] . "</textarea></td>";
                 break;
             case "input":
                 echo "<td><input type='text' name='value' id='check_value{$rand}' value='" . $values['value'] . "' /></td>";
                 break;
             case "input+unit":
                 $value = $values['value'];
                 // freespaceGreater check is saved as MiB
                 if ($type == 'freespaceGreater') {
                     $value = $value * 1024 * 1024;
                 }
                 $options['value'] = 'KB';
                 if ($mode === 'edit') {
                     if ($value >= self::getUnitSize('GB')) {
                         $value = $value / self::getUnitSize('GB');
                         $options['value'] = 'GB';
                     } elseif ($value >= self::getUnitSize('MB')) {
                         $value = $value / self::getUnitSize('MB');
                         $options['value'] = 'MB';
                     } elseif ($value >= self::getUnitSize('KB')) {
                         $value = $value / self::getUnitSize('KB');
                         $options['value'] = 'KB';
                     } else {
                         $options['value'] = 'B';
                     }
                 }
                 echo "<td>";
                 echo "<input " . "type='text' " . "name='value' " . "id='check_value{$rand}' " . "value='{$value}' " . "/>";
                 echo "</td>";
                 echo "</tr><tr>";
                 echo "<th>" . __("Unit", 'fusioninventory') . "</th>";
                 echo "<td>";
                 $unit_labels = self::getUnitLabel();
                 /*
                  * The freespaceGreater check does not need to propose KiB or B
                  * because its value is based on MiB according to REST API.
                  *                               -- Kevin 'kiniou' Roy
                  */
                 if ($type == 'freespaceGreater') {
                     unset($unit_labels['KB']);
                     unset($unit_labels['B']);
                 }
                 Dropdown::showFromArray('unit', $unit_labels, $options);
                 echo "</td>";
                 break;
         }
         echo "</tr>";
     }
     echo "<tr>";
     echo "<th>" . __("In case of error", 'fusioninventory') . "</th>";
     echo "<td>";
     Dropdown::showFromArray('return', array("error" => __('Error', 'fusioninventory'), "ignore" => __("Ignore", 'fusioninventory')), array('value' => $values['return']));
     echo "</td>";
     echo "</tr>";
     echo "<tr><td></td><td>";
     if ($pfDeployPackage->can($pfDeployPackage->getID(), UPDATE)) {
         if ($mode === 'edit') {
             echo "<input type='submit' name='save_item' value=\"" . _sx('button', 'Save') . "\" class='submit' >";
         } else {
             echo "<input type='submit' name='add_item' value=\"" . _sx('button', 'Add') . "\" class='submit' >";
         }
     }
     echo "</td></tr>";
     echo "</table>";
 }