Exemplo n.º 1
0
 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();
 }
Exemplo n.º 2
0
 /**
  * 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);
 }
Exemplo n.º 4
0
 } 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"]);
Exemplo n.º 5
0
 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));
     }
 }