function cleanDBonPurge() { global $DB; // Delete all licenses $query2 = "SELECT `id`\n FROM `glpi_softwarelicenses`\n WHERE `softwares_id` = '" . $this->fields['id'] . "'"; if ($result2 = $DB->query($query2)) { if ($DB->numrows($result2)) { $lic = new SoftwareLicense(); while ($data = $DB->fetch_assoc($result2)) { $lic->delete(array("id" => $data["id"])); } } } $version = new SoftwareVersion(); $version->cleanDBonItemDelete(__CLASS__, $this->fields['id']); $ip = new Item_Problem(); $ip->cleanDBonItemDelete(__CLASS__, $this->fields['id']); }
if (!isset($_GET["id"])) { $_GET["id"] = ""; } if (!isset($_GET["softwares_id"])) { $_GET["softwares_id"] = ""; } $license = new SoftwareLicense(); if (isset($_POST["add"])) { $license->check(-1, 'w', $_POST); $newID = $license->add($_POST); Event::log($_POST['softwares_id'], "software", 4, "inventory", $_SESSION["glpiname"] . " " . $LANG['log'][85] . " {$newID}."); glpi_header($_SERVER['HTTP_REFERER']); } else { if (isset($_POST["delete"])) { $license->check($_POST['id'], 'd'); $license->delete($_POST); Event::log($license->fields['softwares_id'], "software", 4, "inventory", $_SESSION["glpiname"] . " " . $LANG['log'][87] . " " . $_POST["id"]); $license->redirectToList(); } else { if (isset($_POST["update"])) { $license->check($_POST['id'], 'w'); $license->update($_POST); Event::log($license->fields['softwares_id'], "software", 4, "inventory", $_SESSION["glpiname"] . " " . $LANG['log'][86] . " " . $_POST["id"]); glpi_header($_SERVER['HTTP_REFERER']); } else { commonHeader($LANG['Menu'][4], $_SERVER['PHP_SELF'], "inventory", "software"); $license->showForm($_GET["id"], array('softwares_id' => $_GET["softwares_id"])); commonFooter(); } } }
if ($_SESSION['glpibackcreated']) { Html::redirect($license->getFormURL() . "?id=" . $newID); } } Html::back(); } else { if (isset($_POST["restore"])) { $license->check($_POST['id'], DELETE); if ($license->restore($_POST)) { Event::log($_POST["id"], "software", 4, "inventory", sprintf(__('%s restores an item'), $_SESSION["glpiname"])); } $license->redirectToList(); } else { if (isset($_POST["delete"])) { $license->check($_POST['id'], DELETE); $license->delete($_POST, 0); Event::log($license->fields['softwares_id'], "software", 4, "inventory", sprintf(__('%1$s deletes the license %2$s'), $_SESSION["glpiname"], $_POST["id"])); $license->redirectToList(); } else { if (isset($_POST["purge"])) { $license->check($_POST['id'], PURGE); $license->delete($_POST, 1); Event::log($license->fields['softwares_id'], "software", 4, "inventory", sprintf(__('%1$s purges the license %2$s'), $_SESSION["glpiname"], $_POST["id"])); $license->redirectToList(); } else { if (isset($_POST["update"])) { $license->check($_POST['id'], UPDATE); $license->update($_POST); Event::log($license->fields['softwares_id'], "software", 4, "inventory", sprintf(__('%1$s updates the license %2$s'), $_SESSION["glpiname"], $_POST["id"])); Html::back(); } else {
/** * Transfer affected licenses to a computer * * @param $ID ID of the License **/ function transferAffectedLicense($ID) { global $DB; $computer_softwarelicense = new Computer_SoftwareLicense(); $license = new SoftwareLicense(); if ($computer_softwarelicense->getFromDB($ID)) { if ($license->getFromDB($computer_softwarelicense->getField('softwarelicenses_id'))) { //// Update current : decrement number by 1 if valid if ($license->getField('number') > 1) { $license->update(array('id' => $license->getID(), 'number' => $license->getField('number') - 1)); } else { if ($license->getField('number') == 1) { // Drop license $license->delete(array('id' => $license->getID())); } } // Create new license : need to transfer softwre and versions before $input = array(); $newsoftID = $this->copySingleSoftware($license->fields['softwares_id']); if ($newsoftID > 0) { //// If license already exists : increment number by one $query = "SELECT *\n FROM `glpi_softwarelicenses`\n WHERE `softwares_id` = '{$newsoftID}'\n AND `name` = '" . addslashes($license->fields['name']) . "'\n AND `serial` = '" . addslashes($license->fields['serial']) . "'"; $newlicID = -1; if ($result = $DB->query($query)) { //// If exists : increment number by 1 if ($DB->numrows($result) > 0) { $data = $DB->fetch_assoc($result); $newlicID = $data['id']; $license->update(array('id' => $data['id'], 'number' => $data['number'] + 1)); } else { //// If not exists : create with number = 1 $input = $license->fields; foreach (array('softwareversions_id_buy', 'softwareversions_id_use') as $field) { if ($license->fields[$field] > 0) { $newversID = $this->copySingleVersion($license->fields[$field]); if ($newversID > 0 && $newversID != $license->fields[$field]) { $input[$field] = $newversID; } } } unset($input['id']); $input['number'] = 1; $input['entities_id'] = $this->to; $input['softwares_id'] = $newsoftID; $newlicID = $license->add(toolbox::addslashes_deep($input)); } } if ($newlicID > 0) { $input = array('id' => $ID, 'softwarelicenses_id' => $newlicID); $computer_softwarelicense->update($input); } } } } // getFromDB }
/** * Delete old licenses software entries * * @param $glpi_computers_id integer : glpi computer id. * * @return nothing. * */ static function resetOfficePack($glpi_computers_id) { global $DB; $query = "SELECT *\n FROM `glpi_computers_softwarelicenses`\n WHERE `computers_id` = '{$glpi_computers_id}' AND `is_dynamic`"; $result = $DB->query($query); if ($DB->numrows($result) > 0) { while ($data = $DB->fetch_assoc($result)) { $query2 = "SELECT COUNT(*)\n FROM `glpi_computers_softwarelicenses`\n WHERE `softwarelicenses_id` = '" . $data['softwarelicenses_id'] . "'"; $result2 = $DB->query($query2); if ($DB->result($result2, 0, 0) == 1) { $license = new SoftwareLicense(); $license->getFromDB($data['softwarelicenses_id']); $query3 = "SELECT COUNT(*)\n FROM `glpi_softwarelicenses`\n WHERE `softwares_id`='" . $license->fields['softwares_id'] . "'"; $result3 = $DB->query($query3); if ($DB->result($result3, 0, 0) == 1) { $soft = new Software(); $soft->delete(array('id' => $license->fields['softwares_id']), 1); } $license->delete(array("id" => $data['softwareversions_id'])); } } $computer_softwarelicenses = new Computer_SoftwareVersion(); $computer_softwarelicenses->deleteByCriteria(array('computers_id' => $glpi_computers_id)); } }