Example #1
0
 /**
  * Merge softwares with current
  *
  * @param $item array of software ID to be merged
  *
  * @return boolean about success
  **/
 function merge($item)
 {
     global $DB;
     $ID = $this->getField('id');
     echo "<div class='center'>";
     echo "<table class='tab_cadrehov'><tr><th>" . __('Merging') . "</th></tr>";
     echo "<tr class='tab_bg_2'><td>";
     Html::createProgressBar(__('Work in progress...'));
     echo "</td></tr></table></div>\n";
     $item = array_keys($item);
     // Search for software version
     $req = $DB->request("glpi_softwareversions", array("softwares_id" => $item));
     $i = 0;
     if ($nb = $req->numrows()) {
         foreach ($req as $from) {
             $found = false;
             foreach ($DB->request("glpi_softwareversions", array("softwares_id" => $ID, "name" => $from["name"])) as $dest) {
                 // Update version ID on License
                 $sql = "UPDATE `glpi_softwarelicenses`\n                       SET `softwareversions_id_buy` = '" . $dest["id"] . "'\n                       WHERE `softwareversions_id_buy` = '" . $from["id"] . "'";
                 $DB->query($sql);
                 $sql = "UPDATE `glpi_softwarelicenses`\n                       SET `softwareversions_id_use` = '" . $dest["id"] . "'\n                       WHERE `softwareversions_id_use` = '" . $from["id"] . "'";
                 $DB->query($sql);
                 // Move installation to existing version in destination software
                 $sql = "UPDATE `glpi_computers_softwareversions`\n                       SET `softwareversions_id` = '" . $dest["id"] . "'\n                       WHERE `softwareversions_id` = '" . $from["id"] . "'";
                 $found = $DB->query($sql);
             }
             if ($found) {
                 // Installation has be moved, delete the source version
                 $sql = "DELETE\n                       FROM `glpi_softwareversions`\n                       WHERE `id` = '" . $from["id"] . "'";
             } else {
                 // Move version to destination software
                 $sql = "UPDATE `glpi_softwareversions`\n                       SET `softwares_id` = '{$ID}',\n                           `entities_id` = '" . $this->getField('entities_id') . "'\n                       WHERE `id` = '" . $from["id"] . "'";
             }
             if ($DB->query($sql)) {
                 $i++;
             }
             Html::changeProgressBarPosition($i, $nb + 1);
         }
     }
     // Move software license
     $sql = "UPDATE `glpi_softwarelicenses`\n              SET `softwares_id` = '{$ID}'\n              WHERE `softwares_id` IN ('" . implode("','", $item) . "')";
     if ($DB->query($sql)) {
         $i++;
     }
     if ($i == $nb + 1) {
         //error_log ("All merge operations ok.");
         $soft = new self();
         foreach ($item as $old) {
             $soft->putInTrash($old, __('Software deleted after merging'));
         }
     }
     Html::changeProgressBarPosition($i, $nb + 1, __('Task completed.'));
     return $i == $nb + 1;
 }