static function pdfForSoftware(PluginPdfSimplePDF $pdf, Software $software, $infocom = false) { global $DB; $sID = $software->getField('id'); $license = new SoftwareLicense(); $query = "SELECT `id`\n FROM `glpi_softwarelicenses`\n WHERE `softwares_id` = '" . $sID . "' " . getEntitiesRestrictRequest('AND', 'glpi_softwarelicenses', '', '', true) . "\n ORDER BY `name`"; $pdf->setColumnsSize(100); $pdf->displayTitle('<b>' . _n('License', 'Licenses', 2) . '</b>'); if ($result = $DB->query($query)) { if ($DB->numrows($result)) { for ($tot = 0; $data = $DB->fetch_assoc($result);) { if ($license->getFromDB($data['id'])) { self::pdfMain($pdf, $license, false); if ($infocom) { PluginPdfInfocom::pdfForItem($pdf, $license); } } } } else { $pdf->displayLine(__('No item found')); } } else { $pdf->displayLine(__('No item found')); } $pdf->displaySpace(); }
/** * 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)); } // 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_array($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($input); } } if ($newlicID > 0) { $input = array('id' => $ID, 'softwarelicenses_id' => $newlicID); $computer_softwarelicense->update($input); } } } } // getFromDB }
/** * @since version 0.85 * * @see CommonDBTM::processMassiveActionsForOneItemtype() **/ static function processMassiveActionsForOneItemtype(MassiveAction $ma, CommonDBTM $item, array $ids) { global $DB; switch ($ma->getAction()) { case 'move_license': $input = $ma->getInput(); if (isset($input['softwarelicenses_id'])) { foreach ($ids as $id) { if ($item->can($id, UPDATE)) { //Process rules if ($item->update(array('id' => $id, 'softwarelicenses_id' => $input['softwarelicenses_id']))) { $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_OK); } else { $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO); $ma->addMessage($item->getErrorMessage(ERROR_ON_ACTION)); } } else { $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_NORIGHT); $ma->addMessage($item->getErrorMessage(ERROR_RIGHT)); } } } else { $ma->itemDone($item->getType(), $ids, MassiveAction::ACTION_KO); } return; case 'install': $csl = new self(); $csv = new Computer_SoftwareVersion(); foreach ($ids as $id) { if ($csl->getFromDB($id)) { $sl = new SoftwareLicense(); if ($sl->getFromDB($csl->fields["softwarelicenses_id"])) { $version = 0; if ($sl->fields["softwareversions_id_use"] > 0) { $version = $sl->fields["softwareversions_id_use"]; } else { $version = $sl->fields["softwareversions_id_buy"]; } if ($version > 0) { $params = array('computers_id' => $csl->fields['computers_id'], 'softwareversions_id' => $version); //Get software name and manufacturer if ($csv->can(-1, CREATE, $params)) { //Process rules if ($csv->add($params)) { $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_OK); } else { $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO); } } else { $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_NORIGHT); } } else { $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO); } } else { $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO); } } } return; } parent::processMassiveActionsForOneItemtype($ma, $item, $ids); }
} else { if (isset($_POST["delete_item"])) { if (isset($_POST["plugin_order_orders_id"]) && $_POST["plugin_order_orders_id"] > 0 && isset($_POST["item"])) { foreach ($_POST["item"] as $ID => $val) { if ($val == 1) { $pluginOrderOrder_Item->getFromDB($ID); if ($pluginOrderOrder_Item->fields["itemtype"] == 'SoftwareLicense') { $result = $pluginOrderOrder_Item->queryRef($_POST["plugin_order_orders_id"], $pluginOrderOrder_Item->fields["plugin_order_references_id"], $pluginOrderOrder_Item->fields["price_taxfree"], $pluginOrderOrder_Item->fields["discount"]); $nb = $DB->numrows($result); if ($nb) { for ($i = 0; $i < $nb; $i++) { $ID = $DB->result($result, $i, 'id'); $items_id = $DB->result($result, $i, 'items_id'); if ($items_id) { $lic = new SoftwareLicense(); $lic->getFromDB($items_id); $values["id"] = $lic->fields["id"]; $values["number"] = $lic->fields["number"] - 1; $lic->update($values); } $input["id"] = $ID; $pluginOrderOrder_Item->delete(array('id' => $input["id"])); } $new_value = __("Remove reference", "order") . " "; $new_value .= Dropdown::getDropdownName("glpi_plugin_order_references", $ID); $pluginOrderOrder->addHistory("PluginOrderOrder", "", $new_value, $_POST["plugin_order_orders_id"]); } } else { $new_value = __("Remove reference", "order") . " "; $new_value .= Dropdown::getDropdownName("glpi_plugin_order_references", $ID); $pluginOrderOrder->addHistory("PluginOrderOrder", "", $new_value, $_POST["plugin_order_orders_id"]);
public function deleteLinkWithItem($detailID, $itemtype, $plugin_order_orders_id) { global $DB; if ($itemtype == 'SoftWareLicense') { $detail = new PluginOrderOrder_Item(); $detail->getFromDB($detailID); $license = $detail->fields["items_id"]; $this->removeInfoComRelatedToOrder($itemtype, $license); $result = $PluginOrderOrder_Item->queryRef($detail->fields["plugin_order_orders_id"], $detail->fields["plugin_order_references_id"], $detail->fields["price_taxfree"], $detail->fields["discount"], PluginOrderOrder::ORDER_DEVICE_DELIVRED); $nb = $DB->numrows($result); if ($nb) { for ($i = 0; $i < $nb; $i++) { $ID = $DB->result($result, $i, 'id'); $input["id"] = $ID; $input["items_id"] = 0; $detail->update($input); $lic = new SoftwareLicense(); $lic->getFromDB($license); $values["id"] = $lic->fields["id"]; $values["number"] = $lic->fields["number"] - 1; $lic->update($values); } $order = new PluginOrderOrder(); $order->getFromDB($detail->fields["plugin_order_orders_id"]); $new_value = __("Item unlink form order", "order") . ' : ' . $order->fields["name"]; $order->addHistory($itemtype, '', $new_value, $license); $item = new $itemtype(); $item->getFromDB($license); $new_value = __("Item unlink form order", "order") . ' : ' . $item->getField("name"); $order->addHistory('PluginOrderOrder', '', $new_value, $order->fields["id"]); } } else { $order = new PluginOrderOrder(); $order->getFromDB($plugin_order_orders_id); $detail = new PluginOrderOrder_Item(); $detail->getFromDB($detailID); $items_id = $detail->fields["items_id"]; $this->removeInfoComRelatedToOrder($itemtype, $items_id); if ($items_id != 0) { $input = $detail->fields; $input["items_id"] = 0; $detail->update($input); } else { Session::addMessageAfterRedirect(__("One or several selected rows haven't linked items", "order"), TRUE, ERROR); } $new_value = __("Item unlink form order", "order") . ' : ' . $order->fields["name"]; $order->addHistory($itemtype, '', $new_value, $items_id); $item = new $itemtype(); $item->getFromDB($items_id); $new_value = __("Item unlink form order", "order") . ' : ' . $item->getField("name"); $order->addHistory('PluginOrderOrder', '', $new_value, $order->fields["id"]); } }
/** * @since version 0.84 * * @see CommonDBTM::doSpecificMassiveActions() **/ function doSpecificMassiveActions($input = array()) { $res = array('ok' => 0, 'ko' => 0, 'noright' => 0); switch ($input['action']) { case "move_license": if (isset($input['softwarelicenses_id'])) { foreach ($input["item"] as $key => $val) { if ($val == 1) { //Get software name and manufacturer if ($this->can($key, 'w')) { //Process rules if ($this->update(array('id' => $key, 'softwarelicenses_id' => $input['softwarelicenses_id']))) { $res['ok']++; } else { $res['ko']++; } } else { $res['noright']++; } } } } else { $res['ko']++; } break; case "install": $csl = new self(); $csv = new Computer_SoftwareVersion(); foreach ($input["item"] as $key => $val) { if ($val == 1) { if ($csl->getFromDB($key)) { $sl = new SoftwareLicense(); if ($sl->getFromDB($csl->fields["softwarelicenses_id"])) { $version = 0; if ($sl->fields["softwareversions_id_use"] > 0) { $version = $sl->fields["softwareversions_id_use"]; } else { $version = $sl->fields["softwareversions_id_buy"]; } if ($version > 0) { $params = array('computers_id' => $csl->fields['computers_id'], 'softwareversions_id' => $version); //Get software name and manufacturer if ($csv->can(-1, 'w', $params)) { //Process rules if ($csv->add($params)) { $res['ok']++; } else { $res['ko']++; } } else { $res['noright']++; } } else { $res['ko']++; } } else { $res['ko']++; } } else { $res['ko']++; } } } break; default: return parent::doSpecificMassiveActions($input); } return $res; }
/** * 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)); } }