public function showResult($output_type, $limit = 0) { global $DB; $arrayRet = $this->execQuery($_POST); $result = $arrayRet['query_result']; $query = $arrayRet['query']; $nbtot = $result ? $DB->numrows($result) : 0; if ($limit) { $start = isset($_GET["start"]) ? $_GET["start"] : 0; if ($start >= $nbtot) { $start = 0; } if ($start > 0 || $start + $limit < $nbtot) { $result = $DB->query($query . " LIMIT {$start},{$limit}"); } } else { $start = 0; } $nbCols = $DB->num_fields($result); $nbrows = $DB->numrows($result); $groupByRackName = true; if (isset($_POST['groupByRackName']) && $_POST['groupByRackName'] == "on") { $groupByRackName = false; } $title = date("d/m/Y H:i"); if ($nbtot == 0) { echo "<div class='center'><font class='red b'>" . __("No item found") . "</font></div>"; Html::footer(); } else { if ($output_type == Search::PDF_OUTPUT_LANDSCAPE || $output_type == Search::PDF_OUTPUT_PORTRAIT) { include GLPI_ROOT . "/lib/ezpdf/class.ezpdf.php"; } else { if ($output_type == Search::HTML_OUTPUT) { echo "<div class='center'><table class='tab_cadre_fixe'>"; echo "<tr class='tab_bg_1'><th>{$title}</th></tr>\n"; echo "<tr class='tab_bg_2 center'><td class='center'>"; echo "<form method='POST' action='" . $_SERVER["PHP_SELF"] . "?start={$start}' target='_blank'>\n"; $param = ""; foreach ($_POST as $key => $val) { if (is_array($val)) { foreach ($val as $k => $v) { echo "<input type='hidden' name='" . $key . "[{$k}]' value='{$v}' >"; if (!empty($param)) { $param .= "&"; } $param .= $key . "[" . $k . "]=" . urlencode($v); } } else { echo "<input type='hidden' name='{$key}' value='{$val}' >"; if (!empty($param)) { $param .= "&"; } $param .= "{$key}=" . urlencode($val); } } echo "<input type='hidden' name='result_search_reports' value='searchdone' >"; $param .= "&result_search_reports=searchdone&target=_blank"; Dropdown::showOutputFormat(); Html::closeForm(); echo "</td></tr>"; echo "</table></div>"; Html::printPager($start, $nbtot, $_SERVER['PHP_SELF'], $param); } } } if ($nbtot > 0) { if ($output_type == Search::HTML_OUTPUT) { echo "<form method='POST' action='" . $_SERVER["PHP_SELF"] . "?start={$start}'>\n"; } echo Search::showHeader($output_type, $nbrows, $nbCols, true); $showAllFieds = true; $listFields = array(); $cptField = 0; $showAllFieds = (!isset($_POST['cb_object_name']) || $_POST['cb_object_name'] != "on") && (!isset($_POST['cb_object_location']) || $_POST['cb_object_location'] != "on") && (!isset($_POST['cb_group']) || $_POST['cb_group'] != "on") && (!isset($_POST['cb_manufacturer']) || $_POST['cb_manufacturer'] != "on") && (!isset($_POST['cb_model']) || $_POST['cb_model'] != "on") && (!isset($_POST['cb_serial_number']) || $_POST['cb_serial_number'] != "on"); $num = 1; $cptRow = 1; if (!$showAllFieds) { $this->showTitle($output_type, $num, __("Bay name", "racks"), 'name', false); $cptField++; $this->showTitle($output_type, $num, _n("Place", "Places", 1, "racks"), 'location', false); $cptField++; $this->showTitle($output_type, $num, _n("Location", "Locations", 1, "racks"), 'roomlocation', false); $cptField++; $this->showTitle($output_type, $num, __("U", "racks"), 'u', false); $cptField++; $this->showTitle($output_type, $num, __("Front", "racks") . " / " . __("Back", "racks"), 'front_rear', false); $cptField++; if (isset($_POST['cb_object_name']) && $_POST['cb_object_name'] == "on") { $listFields['object_name'] = $_POST['cb_object_name']; $this->showTitle($output_type, $num, __("Object name", "racks"), 'object_name', false); $cptField++; } // Lieu if (isset($_POST['cb_object_location']) && $_POST['cb_object_location'] == "on") { $listFields['object_location'] = $_POST['cb_object_location']; $this->showTitle($output_type, $num, __("Object location", "racks"), 'object_location', false); $cptField++; } // Groupe if (isset($_POST['cb_group']) && $_POST['cb_group'] == "on") { $listFields['group'] = $_POST['cb_group']; $this->showTitle($output_type, $num, __("Group"), 'roomlocation', false); $cptField++; } // Fabricant if (isset($_POST['cb_manufacturer']) && $_POST['cb_manufacturer'] == "on") { $listFields['manufacturer'] = $_POST['cb_manufacturer']; $this->showTitle($output_type, $num, __("Manufacturer"), 'manufacturer', false); $cptField++; } // Modèle if (isset($_POST['cb_model']) && $_POST['cb_model'] == "on") { $listFields['model'] = $_POST['cb_model']; $this->showTitle($output_type, $num, __("Model"), 'model', false); $cptField++; } // Numéro de série if (isset($_POST['cb_serial_number']) && $_POST['cb_serial_number'] == "on") { $listFields['serial_number'] = $_POST['cb_serial_number']; $this->showTitle($output_type, $num, __("Serial number", "racks"), 'group', false); $cptField++; } } else { $this->showTitle($output_type, $num, __("Bay name", "racks"), 'rack_name', false); $listFields['rack_name'] = true; $this->showTitle($output_type, $num, __("Place", "racks"), 'location', false); $listFields['location'] = true; $this->showTitle($output_type, $num, __("Location", "racks"), 'roomlocation', false); $listFields['roomlocation'] = true; $this->showTitle($output_type, $num, __("U", "racks"), 'u', false); $listFields['u'] = true; $this->showTitle($output_type, $num, __("Front", "racks") . " / " . __("Back", "racks"), 'front_rear', false); $listFields['front_rear'] = true; $this->showTitle($output_type, $num, __("Object name", "racks"), 'object_name', false); $listFields['object_name'] = true; $this->showTitle($output_type, $num, __("Object location", "racks"), 'object_location', false); $listFields['object_location'] = true; $this->showTitle($output_type, $num, __("Group"), false); $listFields['group'] = true; $this->showTitle($output_type, $num, __("Type"), 'type', false); $listFields['type'] = true; $this->showTitle($output_type, $num, __("Manufacturer"), 'manufacturer', false); $listFields['manufacturer'] = true; $this->showTitle($output_type, $num, __("Model"), 'model', false); $listFields['model'] = true; $this->showTitle($output_type, $num, __("Serial number", "racks"), 'serial_number', false); $listFields['serial_number'] = true; $this->showTitle($output_type, $num, __("Inventory number"), 'other_serial', false); $listFields['other_serial'] = true; $cptField = 13; } echo Search::showEndLine($output_type); $num = 1; $currentRack = -1; while ($row = $DB->fetch_array($result)) { // itemtype $itemtype = $row['itemtype']; $num = 1; $cptRow++; echo Search::showNewLine($output_type); if (isset($row['itemtype']) && $row['itemtype'] != "") { $class = substr($itemtype, 0, -5); $item = new $class(); $table = getTableForItemType($class); $r = $DB->query("SELECT * FROM `" . $table . "` WHERE `id` = '" . $row["items_id"] . "' "); $device = $DB->fetch_array($r); } // nom $link = Toolbox::getItemTypeFormURL("PluginRacksRack"); if ($groupByRackName || $currentRack != $row['id']) { if ($output_type == Search::HTML_OUTPUT) { echo Search::showItem($output_type, "<a href=\"" . $link . "?id=" . $row["id"] . "\">" . $row["name"] . "</a>", $num, $cptRow); } else { echo Search::showItem($output_type, $row["name"], $num, $cptRow); } } else { echo Search::showItem($output_type, " ", $num, $cptRow); } // lieu if ($groupByRackName || $currentRack != $row['id']) { $tmpId = $row['locations_id']; $tmpObj = new Location(); $tmpObj->getFromDB($tmpId); if (isset($tmpObj->fields['name'])) { echo Search::showItem($output_type, $tmpObj->fields['name'], $num, $cptRow); } else { echo Search::showItem($output_type, " ", $num, $cptRow); } } else { echo Search::showItem($output_type, " ", $num, $cptRow); } // Emplacement if ($groupByRackName || $currentRack != $row['id']) { $tmpId = $row['plugin_racks_roomlocations_id']; $tmpObj = new PluginRacksRoomLocation(); $tmpObj->getFromDB($tmpId); if (isset($tmpObj->fields['name'])) { echo Search::showItem($output_type, $tmpObj->fields['name'], $num, $cptRow); } else { echo Search::showItem($output_type, ' ', $num, $cptRow); } } else { echo Search::showItem($output_type, " ", $num, $cptRow); } if (isset($row['itemtype']) && $row['itemtype'] != "") { // U if (isset($row['position']) && $row['position'] != "") { echo Search::showItem($output_type, $row['position'], $num, $cptRow); } else { echo Search::showItem($output_type, " ", $num, $cptRow); } // avant / arrière if ($row['faces_id'] == 1) { echo Search::showItem($output_type, __("Front", "racks"), $num, $cptRow); } else { echo Search::showItem($output_type, __("Back", "racks"), $num, $cptRow); } // Nom de l'objet if (array_key_exists("object_name", $listFields)) { $link = Toolbox::getItemTypeFormURL(substr($itemtype, 0, -5)); if ($itemtype != 'PluginRacksOtherModel') { if ($output_type == Search::HTML_OUTPUT) { echo Search::showItem($output_type, "<a href=\"" . $link . "?id=" . $row["items_id"] . "\">" . $device["name"] . "</a>", $num, $cptRow); } else { echo Search::showItem($output_type, $device["name"], $num, $cptRow); } } else { echo Search::showItem($output_type, $device["name"], $num, $cptRow); } } // Lieu de l'objet if (array_key_exists("object_location", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_locations", $device["locations_id"]), $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // Groupe if (array_key_exists("group", $listFields)) { // Groupe if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_groups", $device["groups_id_tech"]), $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // type if (array_key_exists("type", $listFields)) { echo Search::showItem($output_type, $item->getTypeName(), $num, $cptRow); } // fabricant if (array_key_exists("manufacturer", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_manufacturers", $device["manufacturers_id"]), $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // modèle //TODO = model du rack => model des objets if (array_key_exists("model", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { $model_table = getTableForItemType($itemtype); $modelfield = getForeignKeyFieldForTable(getTableForItemType($itemtype)); echo Search::showItem($output_type, Dropdown::getDropdownName($model_table, $device[$modelfield]), $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // numéro de série if (array_key_exists("serial_number", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, $device['serial'], $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // numéro d'inventaire if (array_key_exists("other_serial", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, $device['otherserial'], $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } $currentRack = $row['id']; } else { for ($k = 0; $k < $cptField - 3; $k++) { echo Search::showItem($output_type, " ", $num, $cptRow, ""); } } echo Search::showEndLine($output_type); } if ($output_type == Search::HTML_OUTPUT) { Html::closeForm(); } echo Search::showFooter($output_type, $title); } }
/** * sons / ancestors for CommonTreeDropdown */ public function testTree() { $entity = $this->sharedFixture['entity'][0]; $loc = new Location(); // A $id[0] = $loc->add(array('entities_id' => $entity, 'locations_id' => 0, 'name' => 'A')); $this->assertGreaterThan(0, $id[0]); // A > AA $id[1] = $loc->add(array('entities_id' => $entity, 'locations_id' => $id[0], 'name' => 'AA')); $this->assertGreaterThan(0, $id[1]); $this->assertTrue($loc->getFromDB($id[1])); $this->assertEquals('A > AA', $loc->fields['completename']); // A > BB $id[2] = $loc->add(array('entities_id' => $entity, 'locations_id' => $id[0], 'name' => 'BB')); $this->assertGreaterThan(0, $id[2]); $this->assertTrue($loc->getFromDB($id[2])); $this->assertEquals('A > BB', $loc->fields['completename']); // Sons of A (A, AA, BB) $sons = getSonsOf('glpi_locations',$id[0]); $this->assertEquals(3, count($sons)); $this->assertArrayHasKey($id[0], $sons); $this->assertArrayHasKey($id[1], $sons); $this->assertArrayHasKey($id[2], $sons); // Ancestors of A (none) $parent = getAncestorsOf('glpi_locations', $id[0]); $this->assertEquals(0, count($parent)); // Ancestors of AA (A) $parent = getAncestorsOf('glpi_locations', $id[1]); $this->assertEquals(1, count($parent)); $this->assertArrayHasKey($id[0], $parent); // Ancestors of BB (none) $parent = getAncestorsOf('glpi_locations', $id[2]); $this->assertEquals(1, count($parent)); $this->assertArrayHasKey($id[0], $parent); // B $id[3] = $loc->add(array('entities_id' => $entity, 'locations_id' => 0, 'name' => 'B')); $this->assertGreaterThan(0, $id[3]); // B > CC $id[4] = $loc->add(array('entities_id' => $entity, 'locations_id' => $id[3], 'name' => 'CC')); $this->assertGreaterThan(0, $id[4]); $this->assertTrue($loc->getFromDB($id[4])); $this->assertEquals('B > CC', $loc->fields['completename']); $sons = getSonsOf('glpi_locations',$id[3]); $this->assertEquals(2, count($sons)); $this->assertArrayHasKey($id[4], $sons); // B > CC > XXX $id[5] = $loc->add(array('entities_id' => $entity, 'locations_id' => $id[4], 'name' => 'XXX')); $this->assertGreaterThan(0, $id[5]); $this->assertTrue($loc->getFromDB($id[5])); $this->assertEquals('B > CC > XXX', $loc->fields['completename']); // B > CC => A > CC $res = $loc->update(array('id' => $id[4], 'locations_id' => $id[0])); $this->assertTrue($res); $this->assertTrue($loc->getFromDB($id[4])); $this->assertEquals('A > CC', $loc->fields['completename']); // B > CC > XXX => A > CC > XXX $this->assertTrue($loc->getFromDB($id[5])); $this->assertEquals('A > CC > XXX', $loc->fields['completename']); // New parent of CC (A) $parent = getAncestorsOf('glpi_locations', $id[4]); $this->assertEquals(1, count($parent)); $this->assertArrayHasKey($id[0], $parent); // New sons of B (only B) $sons = getSonsOf('glpi_locations',$id[3]); $this->assertEquals(1, count($sons)); $this->assertArrayHasKey($id[3], $sons); // New sons of A (A, AA, BB, CC) $sons = getSonsOf('glpi_locations',$id[0]); $this->assertEquals(5, count($sons)); $this->assertArrayHasKey($id[4], $sons); $this->assertArrayHasKey($id[5], $sons); // Rename A => C $res = $loc->update(array('id' => $id[0], 'name' => 'C')); $this->assertTrue($res); // Check complete name of sons $this->assertTrue($loc->getFromDB($id[4])); $this->assertEquals('C > CC', $loc->fields['completename']); $this->assertTrue($loc->getFromDB($id[5])); $this->assertEquals('C > CC > XXX', $loc->fields['completename']); $this->assertEquals(3, $loc->fields['level']); // Delete CC and move child under B $res = $loc->delete(array('id' => $id[4], '_replace_by' => $id[3])); $this->assertTrue($res); // Sons of B (B and XXX) $sons = getSonsOf('glpi_locations',$id[3]); $this->assertEquals(2, count($sons)); $this->assertArrayHasKey($id[5], $sons); $this->assertTrue($loc->getFromDB($id[5])); $this->assertEquals('B > XXX', $loc->fields['completename']); $this->assertEquals(2, $loc->fields['level']); }
public function generateOrder($params) { global $DB; $ID = $params['id']; $template = $params['template']; $signature = $params['sign']; if ($template) { $config = array('PATH_TO_TMP' => GLPI_DOC_DIR . '/_tmp'); $odf = new Odtphp\Odf(PLUGIN_ORDER_TEMPLATE_DIR . "{$template}", $config); $this->getFromDB($ID); if (file_exists(PLUGIN_ORDER_TEMPLATE_CUSTOM_DIR . "custom.php")) { include_once PLUGIN_ORDER_TEMPLATE_CUSTOM_DIR . "custom.php"; } if (function_exists("plugin_order_getCustomFieldsForODT")) { plugin_order_getCustomFieldsForODT($ID, $template, $odf, $signature); } else { $PluginOrderOrder_Item = new PluginOrderOrder_Item(); $PluginOrderReference_Supplier = new PluginOrderReference_Supplier(); try { $odf->setImage('logo', PLUGIN_ORDER_TEMPLATE_LOGO_DIR . '/logo.jpg'); } catch (\Odtphp\Exceptions\OdfException $e) { } $values = array(); $values['title_order'] = __("Order number", "order"); $values['num_order'] = $this->fields["num_order"]; $values['title_invoice_address'] = __("Invoice address", "order"); $values['comment_order'] = $this->fields["comment"]; $entity = new Entity(); $entity->getFromDB($this->fields["entities_id"]); $town = ''; if ($this->fields["entities_id"] != 0) { $name_entity = $entity->fields["name"]; } else { $name_entity = __("Root entity"); } $values['entity_name'] = $name_entity; if ($entity->getFromDB($this->fields["entities_id"])) { $town = $entity->fields["town"]; $values['entity_address'] = $entity->fields["address"]; $values['entity_postcode'] = $entity->fields["postcode"]; $values['entity_town'] = $entity->fields["town"]; $values['entity_country'] = $entity->fields["country"]; } $supplier = new Supplier(); if ($supplier->getFromDB($this->fields["suppliers_id"])) { $values['supplier_name'] = $supplier->fields["name"]; $values['supplier_address'] = $supplier->fields["address"]; $values['supplier_postcode'] = $supplier->fields["postcode"]; $values['supplier_town'] = $supplier->fields["town"]; $values['supplier_country'] = $supplier->fields["country"]; } $location = new Location(); if ($location->getFromDB($this->fields["locations_id"])) { $values['title_delivery_address'] = __("Delivery address", "order"); $values['comment_delivery_address'] = $location->fields['comment']; } if ($town) { $town = $town . ", "; } $order_date = Html::convDate($this->fields["order_date"]); $username = Html::clean(getUserName(Session::getLoginUserID())); $values['title_date_order'] = $town . __("The", "order") . " "; $values['date_order'] = $order_date; $values['title_sender'] = __("Issuer order", "order"); $values['sender'] = $username; $values['title_budget'] = __("Budget"); $budget = new Budget(); if ($budget->getFromDB($this->fields["budgets_id"])) { $values['budget'] = $budget->fields['name']; } else { $values['budget'] = ''; } $output = ''; $contact = new Contact(); if ($contact->getFromDB($this->fields["contacts_id"])) { $output = formatUserName($contact->fields["id"], "", $contact->fields["name"], $contact->fields["firstname"]); } $values['title_recipient'] = __("Recipient", "order"); $values['recipient'] = Html::clean($output); $values['nb'] = __("Quantity", "order"); $values['title_item'] = __("Designation", "order"); $values['title_ref'] = __("Reference"); $values['HTPrice_item'] = __("Unit price", "order"); $values['TVA_item'] = __("VAT", "order"); $values['title_discount'] = __("Discount rate", "order"); $values['HTPriceTotal_item'] = __("Sum tax free", "order"); $values['ATIPriceTotal_item'] = __("Price ATI", "order"); $listeArticles = array(); $result = $PluginOrderOrder_Item->queryDetail($ID); $num = $DB->numrows($result); while ($data = $DB->fetch_array($result)) { $quantity = $PluginOrderOrder_Item->getTotalQuantityByRefAndDiscount($ID, $data["id"], $data["price_taxfree"], $data["discount"]); $listeArticles[] = array('quantity' => $quantity, 'ref' => utf8_decode($data["name"]), 'taxe' => Dropdown::getDropdownName(getTableForItemType("PluginOrderOrderTax"), $data["plugin_order_ordertaxes_id"]), 'refnumber' => $PluginOrderReference_Supplier->getReferenceCodeByReferenceAndSupplier($data["id"], $this->fields["suppliers_id"]), 'price_taxfree' => $data["price_taxfree"], 'discount' => $data["discount"], false, 0, 'price_discounted' => $data["price_discounted"] * $quantity, 'price_ati' => $data["price_ati"]); } $article = $odf->setSegment('articles'); foreach ($listeArticles as $element) { $article->nbA($element['quantity']); $article->titleArticle($element['ref']); $article->refArticle($element['refnumber']); $article->TVAArticle($element['taxe']); $article->HTPriceArticle(Html::clean(Html::formatNumber($element['price_taxfree']))); if ($element['discount'] != 0) { $article->discount(Html::clean(Html::formatNumber($element['discount'])) . " %"); } else { $article->discount(""); } $article->HTPriceTotalArticle(Html::clean(Html::formatNumber($element['price_discounted']))); $total_TTC_Article = $element['price_discounted'] * (1 + $element['taxe'] / 100); $article->ATIPriceTotalArticle(Html::clean(Html::formatNumber($total_TTC_Article))); $article->merge(); } $odf->mergeSegment($article); $prices = $PluginOrderOrder_Item->getAllPrices($ID); // total price (with postage) $postagewithTVA = $PluginOrderOrder_Item->getPricesATI($this->fields["port_price"], Dropdown::getDropdownName("glpi_plugin_order_ordertaxes", $this->fields["plugin_order_ordertaxes_id"])); $total_HT = $prices["priceHT"] + $this->fields["port_price"]; $total_TVA = $prices["priceTVA"] + $postagewithTVA - $this->fields["port_price"]; $total_TTC = $prices["priceTTC"] + $postagewithTVA; if ($signature) { try { $odf->setImage('sign', PLUGIN_ORDER_SIGNATURE_DIR . $signature); } catch (\Odtphp\Exceptions\OdfException $e) { } } else { try { $odf->setImage('sign', '../pics/nothing.gif'); } catch (\Odtphp\Exceptions\OdfException $e) { } } $name = Dropdown::getDropdownName("glpi_plugin_order_orderpayments", $this->fields["plugin_order_orderpayments_id"]); $values['title_totalht'] = __("Price tax free", "order"); $values['totalht'] = Html::clean(Html::formatNumber($prices['priceHT'])); $values['title_port'] = __("Price tax free with postage", "order"); $values['totalht_port_price'] = Html::clean(Html::formatNumber($total_HT)); $values['title_price_port'] = __("Postage", "order"); $values['price_port_tva'] = " (" . Html::clean(Dropdown::getDropdownName("glpi_plugin_order_ordertaxes", $this->fields["plugin_order_ordertaxes_id"])) . "%)"; $values['port_price'] = Html::clean(Html::formatNumber($postagewithTVA)); $values['title_tva'] = __("VAT", "order"); $values['totaltva'] = Html::clean(Html::formatNumber($total_TVA)); $values['title_totalttc'] = __("Price ATI", "order"); $values['totalttc'] = Html::clean(Html::formatNumber($total_TTC)); $values['title_money'] = __("€", "order"); $values['title_sign'] = __("Signature of issuing order", "order"); $values['title_conditions'] = __("Payment conditions", "order"); $values['payment_conditions'] = $name; // Set variables in odt template foreach ($values as $field => $val) { try { $odf->setVars($field, $val, true, 'UTF-8'); } catch (\Odtphp\Exceptions\OdfException $e) { } } } $message = "_"; if (Session::isMultiEntitiesMode()) { $entity = new Entity(); $entity->getFromDB($this->fields['entities_id']); $message .= $entity->getName(); } $message .= "_" . $this->fields['num_order'] . "_"; $message .= Html::convDateTime($_SESSION['glpi_currenttime']); $message = str_replace(" ", "_", $message); $outputfile = str_replace(".odt", $message . ".odt", $template); // We export the file $odf->exportAsAttachedFile($outputfile); } }
/** * @see NotificationTargetCommonITILObject::getDatasForObject() **/ function getDatasForObject(CommonDBTM $item, array $options, $simple = false) { global $CFG_GLPI; // Common ITIL datas $datas = parent::getDatasForObject($item, $options, $simple); $datas['##ticket.description##'] = Html::clean($datas['##ticket.description##']); $datas['##ticket.description##'] = $item->convertContentForNotification($datas['##ticket.description##'], $item); $datas['##ticket.content##'] = $datas['##ticket.description##']; // Specific datas $datas['##ticket.urlvalidation##'] = $this->formatURL($options['additionnaloption']['usertype'], "ticket_" . $item->getField("id") . "_TicketValidation\$1"); $datas['##ticket.globalvalidation##'] = TicketValidation::getStatus($item->getField('global_validation')); $datas['##ticket.type##'] = Ticket::getTicketTypeName($item->getField('type')); $datas['##ticket.requesttype##'] = Dropdown::getDropdownName('glpi_requesttypes', $item->getField('requesttypes_id')); $autoclose_value = Entity::getUsedConfig('autoclose_delay', $this->getEntity(), '', Entity::CONFIG_NEVER); $datas['##ticket.autoclose##'] = __('Never'); $datas['##lang.ticket.autoclosewarning##'] = ""; if ($autoclose_value > 0) { $datas['##ticket.autoclose##'] = $autoclose_value; $datas['##lang.ticket.autoclosewarning##'] = sprintf(_n('Without a reply, the ticket will be automatically closed after %s day', 'Without a reply, the ticket will be automatically closed after %s days', $autoclose_value), $autoclose_value); } $datas['##ticket.sla##'] = ''; if ($item->getField('slas_id')) { $datas['##ticket.sla##'] = Dropdown::getDropdownName('glpi_slas', $item->getField('slas_id')); } $datas['##ticket.location##'] = ''; if ($item->getField('locations_id')) { $datas['##ticket.location##'] = Dropdown::getDropdownName('glpi_locations', $item->getField('locations_id')); $locations = new Location(); $locations->getFromDB($item->getField('locations_id')); if ($locations->getField('comment')) { $datas['##ticket.location.comment##'] = $locations->getField('comment'); } if ($locations->getField('room')) { $datas['##ticket.location.room##'] = $locations->getField('room'); } if ($locations->getField('building')) { $datas['##ticket.location.building##'] = $locations->getField('building'); } if ($locations->getField('latitude')) { $datas['##ticket.location.latitude##'] = $locations->getField('latitude'); } if ($locations->getField('longitude')) { $datas['##ticket.location.longitude##'] = $locations->getField('longitude'); } if ($locations->getField('altitude')) { $datas['##ticket.location.altitude##'] = $locations->getField('altitude'); } } // is ticket deleted $datas['##ticket.isdeleted##'] = Dropdown::getYesNo($item->getField('is_deleted')); //Tags associated with the object linked to the ticket $datas['##ticket.itemtype##'] = ''; $datas['##ticket.item.name##'] = ''; $datas['##ticket.item.serial##'] = ''; $datas['##ticket.item.otherserial##'] = ''; $datas['##ticket.item.location##'] = ''; $datas['##ticket.item.locationcomment##'] = ''; $datas['##ticket.item.locationroom##'] = ''; $datas['##ticket.item.locationbuilding##'] = ''; $datas['##ticket.item.locationlatitude##'] = ''; $datas['##ticket.item.locationlongitude##'] = ''; $datas['##ticket.item.locationaltitude##'] = ''; $datas['##ticket.item.contact##'] = ''; $datas['##ticket.item.contactnumber##'] = ''; $datas['##ticket.item.user##'] = ''; $datas['##ticket.item.group##'] = ''; $datas['##ticket.item.model##'] = ''; $item_ticket = new Item_Ticket(); $items = $item_ticket->find("`tickets_id` = '" . $item->getField('id') . "'"); $datas['items'] = array(); if (count($items)) { foreach ($items as $val) { if (isset($val['itemtype']) && ($hardware = getItemForItemtype($val['itemtype'])) && isset($val["items_id"]) && $hardware->getFromDB($val["items_id"])) { $tmp = array(); //Object type $tmp['##ticket.itemtype##'] = $hardware->getTypeName(); //Object name $tmp['##ticket.item.name##'] = $hardware->getField('name'); //Object serial if ($hardware->isField('serial')) { $tmp['##ticket.item.serial##'] = $hardware->getField('serial'); } //Object contact if ($hardware->isField('contact')) { $tmp['##ticket.item.contact##'] = $hardware->getField('contact'); } //Object contact num if ($hardware->isField('contact_num')) { $tmp['##ticket.item.contactnumber##'] = $hardware->getField('contact_num'); } //Object otherserial if ($hardware->isField('otherserial')) { $tmp['##ticket.item.otherserial##'] = $hardware->getField('otherserial'); } //Object location if ($hardware->isField('locations_id')) { $tmp['##ticket.item.location##'] = Dropdown::getDropdownName('glpi_locations', $hardware->getField('locations_id')); $locations = new Location(); $locations->getFromDB($hardware->getField('locations_id')); if ($hardware->getField('comment')) { $datas['##ticket.item.locationcomment##'] = $locations->getField('comment'); } if ($hardware->getField('room')) { $datas['##ticket.item.locationroom##'] = $locations->getField('room'); } if ($hardware->getField('building')) { $datas['##ticket.item.locationbuilding##'] = $locations->getField('building'); } if ($hardware->getField('latitude')) { $datas['##ticket.item.locationlatitude##'] = $locations->getField('latitude'); } if ($hardware->getField('longitude')) { $datas['##ticket.item.locationlongitude##'] = $locations->getField('longitude'); } if ($hardware->getField('altitude')) { $datas['##ticket.item.locationaltitude##'] = $locations->getField('altitude'); } } //Object user if ($hardware->getField('users_id')) { $user_tmp = new User(); if ($user_tmp->getFromDB($hardware->getField('users_id'))) { $tmp['##ticket.item.user##'] = $user_tmp->getName(); } } //Object group if ($hardware->getField('groups_id')) { $tmp['##ticket.item.group##'] = Dropdown::getDropdownName('glpi_groups', $hardware->getField('groups_id')); } $modeltable = getSingular($hardware->getTable()) . "models"; $modelfield = getForeignKeyFieldForTable($modeltable); if ($hardware->isField($modelfield)) { $tmp['##ticket.item.model##'] = Dropdown::getDropdownName($modeltable, $hardware->getField($modelfield)); } $datas['items'][] = $tmp; } } } $datas['##ticket.numberofitems##'] = count($datas['items']); // Get followups, log, validation, satisfaction, linked tickets if (!$simple) { // Linked tickets $linked_tickets = Ticket_Ticket::getLinkedTicketsTo($item->getField('id')); $datas['linkedtickets'] = array(); if (count($linked_tickets)) { $linkedticket = new Ticket(); foreach ($linked_tickets as $data) { if ($linkedticket->getFromDB($data['tickets_id'])) { $tmp = array(); $tmp['##linkedticket.id##'] = $data['tickets_id']; $tmp['##linkedticket.link##'] = Ticket_Ticket::getLinkName($data['link']); $tmp['##linkedticket.url##'] = $this->formatURL($options['additionnaloption']['usertype'], "ticket_" . $data['tickets_id']); $tmp['##linkedticket.title##'] = $linkedticket->getField('name'); $tmp['##linkedticket.content##'] = $linkedticket->getField('content'); $datas['linkedtickets'][] = $tmp; } } } $datas['##ticket.numberoflinkedtickets##'] = count($datas['linkedtickets']); $restrict = "`tickets_id`='" . $item->getField('id') . "'"; $problems = getAllDatasFromTable('glpi_problems_tickets', $restrict); $datas['problems'] = array(); if (count($problems)) { $problem = new Problem(); foreach ($problems as $data) { if ($problem->getFromDB($data['problems_id'])) { $tmp = array(); $tmp['##problem.id##'] = $data['problems_id']; $tmp['##problem.date##'] = $problem->getField('date'); $tmp['##problem.title##'] = $problem->getField('name'); $tmp['##problem.url##'] = $this->formatURL($options['additionnaloption']['usertype'], "problem_" . $data['problems_id']); $tmp['##problem.content##'] = $problem->getField('content'); $datas['problems'][] = $tmp; } } } $datas['##ticket.numberofproblems##'] = count($datas['problems']); $restrict = "`tickets_id`='" . $item->getField('id') . "'"; $changes = getAllDatasFromTable('glpi_changes_tickets', $restrict); $datas['changes'] = array(); if (count($changes)) { $change = new Change(); foreach ($changes as $data) { if ($change->getFromDB($data['changes_id'])) { $tmp = array(); $tmp['##change.id##'] = $data['changes_id']; $tmp['##change.date##'] = $change->getField('date'); $tmp['##change.title##'] = $change->getField('name'); $tmp['##change.url##'] = $this->formatURL($options['additionnaloption']['usertype'], "change_" . $data['changes_id']); $tmp['##change.content##'] = $change->getField('content'); $datas['changes'][] = $tmp; } } } $datas['##ticket.numberofchanges##'] = count($datas['changes']); if (!isset($options['additionnaloption']['show_private']) || !$options['additionnaloption']['show_private']) { $restrict .= " AND `is_private` = '0'"; } $restrict .= " ORDER BY `date` DESC, `id` ASC"; //Followup infos $followups = getAllDatasFromTable('glpi_ticketfollowups', $restrict); $datas['followups'] = array(); foreach ($followups as $followup) { $tmp = array(); $tmp['##followup.isprivate##'] = Dropdown::getYesNo($followup['is_private']); $tmp['##followup.author##'] = Html::clean(getUserName($followup['users_id'])); $tmp['##followup.requesttype##'] = Dropdown::getDropdownName('glpi_requesttypes', $followup['requesttypes_id']); $tmp['##followup.date##'] = Html::convDateTime($followup['date']); $tmp['##followup.description##'] = $followup['content']; $datas['followups'][] = $tmp; } $datas['##ticket.numberoffollowups##'] = count($datas['followups']); // Approbation of solution $restrict .= " LIMIT 1"; $replysolved = getAllDatasFromTable('glpi_ticketfollowups', $restrict); $data = current($replysolved); $datas['##ticket.solution.approval.description##'] = $data['content']; $datas['##ticket.solution.approval.date##'] = Html::convDateTime($data['date']); $datas['##ticket.solution.approval.author##'] = Html::clean(getUserName($data['users_id'])); //Validation infos $restrict = "`tickets_id`='" . $item->getField('id') . "'"; if (isset($options['validation_id']) && $options['validation_id']) { $restrict .= " AND `glpi_ticketvalidations`.`id` = '" . $options['validation_id'] . "'"; } $restrict .= " ORDER BY `submission_date` DESC, `id` ASC"; $validations = getAllDatasFromTable('glpi_ticketvalidations', $restrict); $datas['validations'] = array(); foreach ($validations as $validation) { $tmp = array(); $tmp['##validation.submission.title##'] = sprintf(__('An approval request has been submitted by %s'), Html::clean(getUserName($validation['users_id']))); $tmp['##validation.answer.title##'] = sprintf(__('An answer to an an approval request was produced by %s'), Html::clean(getUserName($validation['users_id_validate']))); $tmp['##validation.author##'] = Html::clean(getUserName($validation['users_id'])); $tmp['##validation.status##'] = TicketValidation::getStatus($validation['status']); $tmp['##validation.storestatus##'] = $validation['status']; $tmp['##validation.submissiondate##'] = Html::convDateTime($validation['submission_date']); $tmp['##validation.commentsubmission##'] = $validation['comment_submission']; $tmp['##validation.validationdate##'] = Html::convDateTime($validation['validation_date']); $tmp['##validation.validator##'] = Html::clean(getUserName($validation['users_id_validate'])); $tmp['##validation.commentvalidation##'] = $validation['comment_validation']; $datas['validations'][] = $tmp; } // Ticket Satisfaction $inquest = new TicketSatisfaction(); $datas['##satisfaction.type##'] = ''; $datas['##satisfaction.datebegin##'] = ''; $datas['##satisfaction.dateanswered##'] = ''; $datas['##satisfaction.satisfaction##'] = ''; $datas['##satisfaction.description##'] = ''; if ($inquest->getFromDB($item->getField('id'))) { // internal inquest if ($inquest->fields['type'] == 1) { $datas['##ticket.urlsatisfaction##'] = $this->formatURL($options['additionnaloption']['usertype'], "ticket_" . $item->getField("id") . '_Ticket$3'); // external inquest } else { if ($inquest->fields['type'] == 2) { $datas['##ticket.urlsatisfaction##'] = Entity::generateLinkSatisfaction($item); } } $datas['##satisfaction.type##'] = $inquest->getTypeInquestName($inquest->getfield('type')); $datas['##satisfaction.datebegin##'] = Html::convDateTime($inquest->fields['date_begin']); $datas['##satisfaction.dateanswered##'] = Html::convDateTime($inquest->fields['date_answered']); $datas['##satisfaction.satisfaction##'] = $inquest->fields['satisfaction']; $datas['##satisfaction.description##'] = $inquest->fields['comment']; } } return $datas; }
/** * Get comments for host * $id, host id * default is current host instance * */ function getComments($id=-1) { global $CFG_GLPI; if ($id == -1) { $pm_Host = $this; } else { $pm_Host = new PluginMonitoringHost(); $pm_Host->getFromDB($id); } // Toolbox::logInFile("pm", "Host getcomments : $id : ".$pm_Host->getID()."\n"); $comment = ""; $toadd = array(); // associated computer ... $item = new $pm_Host->fields['itemtype']; $item->getFromDB($pm_Host->fields['items_id']); if ($pm_Host->getField('itemtype') == 'Computer') { if ($item->isField('completename')) { $toadd[] = array('name' => __('Complete name'), 'value' => nl2br($item->getField('completename'))); } $type = new ComputerType(); if ($item->getField("computertypes_id")) { $type->getFromDB($item->getField("computertypes_id")); $type = $type->getName(); if (! empty($type)) { $toadd[] = array('name' => __('Type'), 'value' => nl2br($type)); } } else { return $comment; } $model = new ComputerModel(); if ($item->getField("computermodels_id")) { $model->getFromDB($item->getField("computermodels_id")); $model = $model->getName(); if (! empty($model)) { $toadd[] = array('name' => __('Model'), 'value' => nl2br($model)); } } $state = new State(); $state->getFromDB($item->fields["states_id"]); $state = $state->getName(); if (! empty($state)) { $toadd[] = array('name' => __('State'), 'value' => nl2br($state)); } $entity = new Entity(); $entity->getFromDB($item->fields["entities_id"]); $entity = $entity->getName(); if (! empty($entity)) { $toadd[] = array('name' => __('Entity'), 'value' => nl2br($entity)); } $location = new Location(); $location->getFromDB($item->fields["locations_id"]); $location = $location->getName(array('complete' => true)); if (! empty($location)) { $toadd[] = array('name' => __('Location'), 'value' => nl2br($location)); } if (! empty($item->fields["serial"])) { $toadd[] = array('name' => __('Serial'), 'value' => nl2br($item->fields["serial"])); } if (! empty($item->fields["otherserial"])) { $toadd[] = array('name' => __('Inventory number'), 'value' => nl2br($item->fields["otherserial"])); } if (($pm_Host instanceof CommonDropdown) && $pm_Host->isField('comment')) { $toadd[] = array('name' => __('Comments'), 'value' => nl2br($pm_Host->getField('comment'))); } if (count($toadd)) { foreach ($toadd as $data) { $comment .= sprintf(__('%1$s: %2$s')."<br>", "<span class='b'>".$data['name'], "</span>".$data['value']); } } } else { $toadd[] = array('name' => __('Host type'), 'value' => nl2br($item->getTypeName())); if ($item->isField('completename')) { $toadd[] = array('name' => __('Complete name'), 'value' => nl2br($item->getField('completename'))); } } if (!empty($comment)) { return Html::showToolTip($comment, array('display' => false)); } }
/** Generate bigdump : Create networkport ethernet * * @since version 0.84 * * @param $itemtype item type * @param $items_id item ID * @param $entities_id item entity ID * @param $locations_id ID of the location trying to link with network equipment (default 0) **/ function addNetworkEthernetPort($itemtype, $items_id, $entities_id, $locations_id=0) { global $NET_LOC, $NET_PORT, $MAX, $VLAN_LOC; // Add networking ports $newIP = getNextIP(); $newMAC = getNextMAC(); if (($itemtype == 'NetworkEquipment') && $locations_id) { // Find father locations_id; $loc = new Location(); if ($loc->getFromDB($locations_id)) { $locations_id = $loc->getField('locations_id'); } else { $locations_id = 0; } } //insert netpoint $netpoint = new NetPoint(); $netpointID = $netpoint->add(toolbox::addslashes_deep( array('entities_id' => $entities_id, 'locations_id' => $locations_id, 'name' => getNextNETPOINT(), 'comment' => "comment 'netpoint $locations_id"))); if ($locations_id && !isset($VLAN_LOC[$locations_id])) { $vlanID = mt_rand(1,$MAX["vlan"]); $VLAN_LOC[$locations_id] = $vlanID; } if (!isset($NET_PORT[$itemtype][$items_id])) { $NET_PORT[$itemtype][$items_id]=0; } $np = new NetworkPort(); $nv = new NetworkPort_Vlan(); $newportname = "port of $itemtype-$items_id"; $refportID = 0; if ($locations_id && isset($NET_LOC[$locations_id]) && $NET_LOC[$locations_id]) { $refportname = "link 'port to $itemtype-$items_id"; $newportname .= " link to 'NetworkEquipment' -".$NET_LOC[$locations_id]; $newMAC2 = getNextMAC(); $newIP2 = getNextIP(); // Create new port on ref item $param = toolbox::addslashes_deep( array('itemtype' => 'NetworkEquipment', 'items_id' => $NET_LOC[$locations_id], 'entities_id' => $entities_id, 'logical_number' => $NET_PORT['NetworkEquipment'][$NET_LOC[$locations_id]]++, 'name' => "name '$refportname", 'instantiation_type' => 'NetworkPortEthernet', 'mac' => $newMAC2, 'comment' => "comment '$refportname", 'netpoints_id' => $netpointID, 'NetworkName_name' => "NetworkEquipment$itemtype-$items_id-$entities_id", 'NetworkName__ipaddresses' => array(-100 => $newIP2['ip']), )); $np->splitInputForElements($param); $refportID = $np->add($param); $np->updateDependencies(1); if (isset($VLAN_LOC[$locations_id]) && $refportID) { $nv->add(array('networkports_id' => $refportID, 'vlans_id' => $VLAN_LOC[$locations_id])); } } // $query = "INSERT INTO `glpi_networkports` // VALUES (NULL, '$netwID', 'NetworkEquipment', '$ID_entity', '0', // '".$NET_PORT['NetworkEquipment'][$netwID]++."', // 'link port to netw ".$NET_LOC[$data['locations_id']]."', // '".$newIP['ip']."', '$newMAC', '$iface', '$netpointID', // '".$newIP['netwmask']."', '".$newIP['gateway']."', // '".$newIP['subnet']."','comment')"; // $DB->query($query) or die("PB REQUETE ".$query); $param = toolbox::addslashes_deep( array('itemtype' => $itemtype, 'items_id' => $items_id, 'entities_id' => $entities_id, 'logical_number' => $NET_PORT[$itemtype][$items_id]++, 'name' => "name '$newportname", 'instantiation_type' => 'NetworkPortEthernet', 'mac' => $newMAC, 'comment' => "comment '$newportname", 'netpoints_id' => $netpointID, 'NetworkName_name' => "$itemtype-$items_id-$entities_id", 'NetworkName__ipaddresses' => array(-100 => $newIP['ip']), )); $np->splitInputForElements($param); $newportID = $np->add($param); $np->updateDependencies(1); if (isset($VLAN_LOC[$locations_id]) && $newportID) { $nv->add(array('networkports_id' => $newportID, 'vlans_id' => $VLAN_LOC[$locations_id])); } if ($locations_id && $refportID && $newportID) { // link ports $nn = new Networkport_Networkport(); $nn->add(array('networkports_id_1' => $refportID, 'networkports_id_2' => $newportID,)); } else { if ($locations_id) { } } }
/** * Transfer location * * @param $locID location ID * * @return new location ID **/ function transferDropdownLocation($locID) { global $DB; if ($locID > 0) { if (isset($this->already_transfer['locations_id'][$locID])) { return $this->already_transfer['locations_id'][$locID]; } // else // Not already transfer // Search init item $location = new Location(); if ($location->getFromDB($locID)) { $data = Toolbox::addslashes_deep($location->fields); $input['entities_id'] = $this->to; $input['completename'] = $data['completename']; $newID = $location->findID($input); if ($newID < 0) { $newID = $location->import($input); } $this->addToAlreadyTransfer('locations_id', $locID, $newID); return $newID; } } return 0; }
/** * Update location for a computer if needed after rule processing * * @param line_links * @param data * * @return nothing */ static function updateLocation($line_links, $data) { //If there's a location to update if (isset($data['locations_id'])) { $computer = new Computer(); $computer->getFromDB($line_links['computers_id']); $ancestors = getAncestorsOf('glpi_entities', $computer->fields['entities_id']); $location = new Location(); if ($location->getFromDB($data['locations_id'])) { //If location is in the same entity as the computer, or if the location is //defined in a parent entity, but recursive if ($location->fields['entities_id'] == $computer->fields['entities_id'] || in_array($location->fields['entities_id'], $ancestors) && $location->fields['is_recursive']) { $tmp['locations_id'] = $data['locations_id']; $tmp['id'] = $line_links['computers_id']; $computer->update($tmp); } } } }
} if ($number) { if ($config->fields['use_view_all_object'] && $_GET["name"] != "type") { $current_location = ''; while ($data = $DB->fetch_array($result)) { if (empty($current_location)) { $children = array(); $level = 1; $current_location = new Location(); $current_location->getFromDB($data['locations_id']); } elseif ($current_location->fields['id'] != $data['locations_id']) { array_push($out, array('text' => $current_location->fields['completename'], 'children' => $children)); $children = array(); $level = 1; $current_location = new Location(); $current_location->getFromDB($data['locations_id']); } $output = $data[$field]; $ID = $data['id']; if (empty($output)) { $output = "({$ID})"; } array_push($children, array('id' => $_GET['itemtype'] . ";" . $ID, 'text' => $output, 'level' => '1')); $level++; } array_push($out, array('text' => $current_location->fields['completename'], 'children' => $children)); } else { while ($data = $DB->fetch_array($result)) { $output = $data[$field]; $ID = $data['id']; if (empty($output)) {
static function showAddFromPlugin($locations_id) { global $CFG_GLPI; if (!Session::haveRight('plugin_positions', UPDATE)) { return false; } echo "<div align='center'>"; echo "<form method='post' action=\"" . $CFG_GLPI["root_doc"] . "/plugins/positions/front/position.form.php\" name='addfromplugin' id='addfromplugin'>"; $entity = $_SESSION["glpiactive_entity"]; $loc = new Location(); if ($loc->getFromDB($locations_id)) { $entity = $loc->fields["entities_id"]; } echo "<table class='tab_cadre' width='30%'>"; echo "<tr><th colspan='3'>" . __('Create coordinates', 'positions') . " :</th></tr>"; echo "<tr class='tab_bg_1'><td>"; echo _n('Associated item', 'Associated items', 2) . "</td>"; echo "<td>"; PluginPositionsImageItem::showAllItems("items_id", 0, 0, $entity, self::getTypes(), $locations_id); echo "</td>"; echo "<td>"; echo "<input type='hidden' name='locations_id' value='" . $locations_id . "'>"; echo "<input type='hidden' name='entities_id' value='{$entity}'>"; echo "<input type='submit' name='add' value=\"" . _sx('button', 'Add') . "\" class='submit'>"; echo "</td>"; echo "</tr>"; echo "</table>"; Html::closeForm(); echo "</div>"; }
/** * @covers Dropdown::import * @covers CommonTreeDropdown::import * @dataProvider dataTestTreeImport */ public function testTreeImport($input, $result, $complete, $msg) { $id = Dropdown::import('Location', $input); if ($result) { $this->assertGreaterThan(0, $id, $msg); $ut = new Location(); $this->assertTrue($ut->getFromDB($id), $msg); $this->assertEquals($result, $ut->getField('name'), $msg); $this->assertEquals($complete, $ut->getField('completename'), $msg); } else { $this->assertLessThanOrEqual(0, $id, $msg); } }
/** * @covers Dropdown::import * @covers CommonTreeDropdown::import * @dataProvider dataTestTreeImport */ public function testTreeImport($input, $result, $complete, $msg) { $input['entities_id'] = getItemByTypeName('Entity', '_test_root_entity', true); $id = Dropdown::import('Location', $input); if ($result) { $this->assertGreaterThan(0, $id, $msg); $ut = new Location(); $this->assertTrue($ut->getFromDB($id), $msg); $this->assertEquals($result, $ut->getField('name'), $msg); $this->assertEquals($complete, $ut->getField('completename'), $msg); } else { $this->assertLessThanOrEqual(0, $id, $msg); } }
/** * Update location for a computer if needed after rule processing * * @param $line_links * @param $data * @param $cfg_ocs * @return nothing * @internal param $line_links * @internal param $data * */ static function updateLocation($line_links, $data, $cfg_ocs) { //If there's a location to update if (isset($data['locations_id'])) { $computer = new Computer(); $computer->getFromDB($line_links['computers_id']); $ancestors = getAncestorsOf('glpi_entities', $computer->fields['entities_id']); $location = new Location(); if ($location->getFromDB($data['locations_id'])) { //If location is in the same entity as the computer, or if the location is //defined in a parent entity, but recursive if ($location->fields['entities_id'] == $computer->fields['entities_id'] || in_array($location->fields['entities_id'], $ancestors) && $location->fields['is_recursive']) { $ko = 0; $locks = self::getLocksForComputer($line_links['computers_id']); if (is_array($locks) && count($locks)) { if (in_array("locations_id", $locks)) { $ko = 1; } } if ($ko == 0) { $tmp['locations_id'] = $data['locations_id']; $tmp['id'] = $line_links['computers_id']; $computer->update($tmp, $cfg_ocs['history_hardware']); } } } } }