Software::addOrRestoreFromTrash PHP Method

addOrRestoreFromTrash() public method

Add a software. If already exist in dustbin restore it
public addOrRestoreFromTrash ( $name, $manufacturer, $entity, $comment = '', $is_recursive = false, $is_helpdesk_visible = NULL )
    function addOrRestoreFromTrash($name, $manufacturer, $entity, $comment = '', $is_recursive = false, $is_helpdesk_visible = NULL)
    {
        global $DB;
        //Look for the software by his name in GLPI for a specific entity
        $manufacturer_id = 0;
        if ($manufacturer != '') {
            $manufacturer_id = Dropdown::import('Manufacturer', array('name' => $manufacturer));
        }
        $query_search = "SELECT `glpi_softwares`.`id`, `glpi_softwares`.`is_deleted`\n                       FROM `glpi_softwares`\n                       WHERE `name` = '{$name}'\n                             AND `manufacturers_id` = '{$manufacturer_id}'\n                             AND `is_template` = '0' " . getEntitiesRestrictRequest('AND', 'glpi_softwares', 'entities_id', $entity, true);
        $result_search = $DB->query($query_search);
        if ($DB->numrows($result_search) > 0) {
            //Software already exists for this entity, get his ID
            $data = $DB->fetch_assoc($result_search);
            $ID = $data["id"];
            // restore software
            if ($data['is_deleted']) {
                $this->removeFromTrash($ID);
            }
        } else {
            $ID = 0;
        }
        if (!$ID) {
            $ID = $this->addSoftware($name, $manufacturer_id, $entity, $comment, $is_recursive, $is_helpdesk_visible);
        }
        return $ID;
    }

Usage Example

 /**
  * Replay dictionnary on one software
  *
  * @param &$new_softs      array containing new softwares already computed
  * @param $res_rule        array of rule results
  * @param $ID                    ID of the software
  * @param $entity                working entity ID
  * @param $name                  softwrae name
  * @param $manufacturer          manufacturer name
  * @param &$soft_ids       array containing replay software need to be dustbined
  **/
 function replayDictionnaryOnOneSoftware(array &$new_softs, array $res_rule, $ID, $entity, $name, $manufacturer, array &$soft_ids)
 {
     global $DB;
     $input["name"] = $name;
     $input["manufacturer"] = $manufacturer;
     $input["entities_id"] = $entity;
     if (empty($res_rule)) {
         $res_rule = $this->processAllRules($input, array(), array());
     }
     $soft = new Software();
     if (isset($res_rules['_ignore_import']) && $res_rules['_ignore_import'] == 1) {
         $soft->putInTrash($ID, __('Software deleted by GLPI dictionary rules'));
         return;
     }
     //Software's name has changed or entity
     if (isset($res_rule["name"]) && $res_rule["name"] != $name || !isset($res_rule["name"]) && isset($res_rule['new_entities_id']) && in_array($res_rule['new_entities_id'], getAncestorsOf('glpi_entities', $entity))) {
         if (isset($res_rule["name"])) {
             $new_name = $res_rule["name"];
         } else {
             $new_name = addslashes($name);
         }
         if (isset($res_rule["manufacturer"]) && $res_rule["manufacturer"]) {
             $manufacturer = $res_rule["manufacturer"];
         } else {
             $manufacturer = addslashes($manufacturer);
         }
         //New software not already present in this entity
         if (!isset($new_softs[$entity][$new_name])) {
             // create new software or restore it from dustbin
             $new_software_id = $soft->addOrRestoreFromTrash($new_name, $manufacturer, $entity, '', true);
             $new_softs[$entity][$new_name] = $new_software_id;
         } else {
             $new_software_id = $new_softs[$entity][$new_name];
         }
         // Move licenses to new software
         $this->moveLicenses($ID, $new_software_id);
     } else {
         $new_software_id = $ID;
         $res_rule["id"] = $ID;
         if (isset($res_rule["manufacturer"]) && $res_rule["manufacturer"]) {
             $res_rule["manufacturers_id"] = Dropdown::importExternal('Manufacturer', $res_rule["manufacturer"]);
             unset($res_rule["manufacturer"]);
         }
         $soft->update($res_rule);
     }
     // Add to software to deleted list
     if ($new_software_id != $ID) {
         $soft_ids[] = $ID;
     }
     //Get all the different versions for a software
     $result = $DB->query("SELECT *\n                            FROM `glpi_softwareversions`\n                            WHERE `softwares_id` = '{$ID}'");
     while ($version = $DB->fetch_assoc($result)) {
         $input["version"] = addslashes($version["name"]);
         $old_version_name = $input["version"];
         if (isset($res_rule["version"]) && $res_rule["version"] != '') {
             $new_version_name = $res_rule["version"];
         } else {
             $new_version_name = $version["name"];
         }
         if ($ID != $new_software_id || $new_version_name != $old_version_name) {
             $this->moveVersions($ID, $new_software_id, $version["id"], $old_version_name, $new_version_name, $entity);
         }
     }
 }
All Usage Examples Of Software::addOrRestoreFromTrash