public function showItemFromPlugin($instID, $search = '') { global $DB, $CFG_GLPI; if (!$this->canView()) { return false; } $rand = mt_rand(); $PluginConnectionsConnection = new PluginConnectionsConnection(); if ($PluginConnectionsConnection->getFromDB($instID)) { $canedit = $PluginConnectionsConnection->can($instID, UPDATE); $query = "SELECT DISTINCT `itemtype`\n FROM `" . $this->getTable() . "`\n WHERE `plugin_connections_connections_id` = '" . (int) $instID . "'\n ORDER BY `itemtype`"; $result = $DB->query($query); $number = $DB->numrows($result); if (Session::isMultiEntitiesMode()) { $colsup = 1; } else { $colsup = 0; } echo "<form method='post' name='connections_form{$rand}' id='connections_form{$rand}'\n action=\"" . $CFG_GLPI["root_doc"] . "/plugins/connections/front/connection.form.php\">"; echo "<div class='center'><table class='tab_cadrehov'>"; echo "<tr><th colspan='" . ($canedit ? 5 + $colsup : 4 + $colsup) . "'>" . __('Associated element') . ":</th></tr><tr>"; if ($canedit) { echo "<th> </th>"; } echo "<th>" . __('Type') . "</th>"; echo "<th>" . __('Name') . "</th>"; if (Session::isMultiEntitiesMode()) { echo "<th>" . __('Entity') . "</th>"; } echo "<th>" . __('Serial Number') . "</th>"; echo "<th>" . __('Inventory number') . "</th>"; echo "</tr>"; for ($i = 0; $i < $number; $i++) { $type = $DB->result($result, $i, "itemtype"); if (!class_exists($type)) { continue; } $item = new $type(); if ($item->canView()) { $column = "name"; $table = getTableForItemType($type); $itemTable = $this->getTable(); $entitiesRestrict = getEntitiesRestrictRequest(" AND ", 't', '', '', $item->maybeRecursive()); $mayBeTemplate = $item->maybeTemplate() ? " AND t.`is_template` = '0'" : ''; $query = "SELECT t.*, it.`id` AS items_id, `glpi_entities`.`ID` AS entity\n FROM `{$itemTable}` it, `{$table}` t\n LEFT JOIN `glpi_entities` ON (`glpi_entities`.`id` = t.`entities_id`)\n WHERE t.`id` = it.`items_id`\n AND it.`itemtype` = '{$type}'\n AND it.`plugin_connections_connections_id` = '{$instID}'\n {$entitiesRestrict}\n {$mayBeTemplate}\n ORDER BY `glpi_entities`.`completename`, t.`{$column}`;"; if ($result_linked = $DB->query($query)) { if ($DB->numrows($result_linked)) { Session::initNavigateListItems($type, __('Connections', 'connections') . " = " . $PluginConnectionsConnection->fields['name']); while ($data = $DB->fetch_assoc($result_linked)) { $item->getFromDB($data["id"]); Session::addToNavigateListItems($type, $data["id"]); $ID = $_SESSION["glpiis_ids_visible"] || empty($data["name"]) ? " (" . $data["id"] . ")" : ""; $link = Toolbox::getItemTypeFormURL($type); $name = "<a href=\"" . $link . "?id=" . $data["id"] . "\">" . $data["name"] . $ID . "</a>"; echo "<tr class='tab_bg_1'>"; if ($canedit) { echo "<td width='10'>"; $sel = isset($_GET["select"]) && "all" == $_GET["select"] ? "checked" : ""; echo "<input type='checkbox' name='item[" . $data["items_id"] . "]' value='1' " . $sel . ">"; echo "</td>"; } echo "<td class='center'>" . $item->getTypeName() . "</td>"; $is_deleted = isset($data['is_deleted']) && $data['is_deleted'] ? "class='tab_bg_2_2'" : ""; echo "<td class='center' " . $is_deleted . ">" . $name . "</td>"; if (Session::isMultiEntitiesMode()) { echo "<td class='center'>"; echo Dropdown::getDropdownName("glpi_entities", $data['entity']); echo "</td>"; } echo "<td class='center'>"; echo isset($data["serial"]) ? $data["serial"] : "-"; echo "</td>"; echo "<td class='center'>"; echo isset($data["otherserial"]) ? $data["otherserial"] : "-"; echo "</td>"; echo "</tr>"; } } } } } if ($canedit) { echo "<tr class='tab_bg_1'><td colspan='" . (3 + $colsup) . "' class='center'>"; echo "<input type='hidden' name='plugin_connections_connections_id' value='{$instID}'>"; Dropdown::showAllItems("items_id", 0, 0, $PluginConnectionsConnection->fields['is_recursive'] ? -1 : $PluginConnectionsConnection->fields['entities_id'], $this->getClasses()); echo "</td>"; echo "<td colspan='2' class='center' class='tab_bg_2'>"; echo "<input type='submit' name='additem' value=\"" . __('Add') . "\" class='submit'>"; echo "</td></tr>"; echo "</table></div>"; Html::openArrowMassives("connections_form{$rand}"); Html::closeArrowMassives(array('deleteitem' => __('Delete'))); } else { echo "</table></div>"; } echo Html::closeForm(false); } }
function plugin_connections_MassiveActionsProcess($data) { $PluginConnectionsConnection = new PluginConnectionsConnection(); $PluginConnectionsConnection_Item = new PluginConnectionsConnection_Item(); switch ($data['action']) { case "plugin_connections_add_item": foreach ($data["item"] as $key => $val) { if ($val == 1) { $input = array('plugin_connections_connections_id' => $data['plugin_connections_connections_id'], 'items_id' => $key, 'itemtype' => $data['itemtype']); if ($PluginConnectionsConnection_Item->can(-1, UPDATE, $input)) { $PluginConnectionsConnection_Item->add($input); } } } break; case "plugin_connections_install": foreach ($data["item"] as $key => $val) { if ($val == 1) { $input = array('plugin_connections_connections_id' => $key, 'items_id' => $data["item_item"], 'itemtype' => $data['itemtype']); if ($PluginConnectionsConnection_Item->can(-1, UPDATE, $input)) { $PluginConnectionsConnection_Item->add($input); } } } break; case "plugin_connections_desinstall": foreach ($data["item"] as $key => $val) { if ($val == 1) { $PluginConnectionsConnection_Item->deleteItemByConnectionsAndItem($key, $data['item_item'], $data['itemtype']); } } break; case "plugin_connections_transfert": if ($data['itemtype'] == 'PluginConnectionsConnection') { foreach ($data["item"] as $key => $val) { if ($val == 1) { $PluginConnectionsConnection->getFromDB($key); $type = PluginConnectionsConnectionType::transfer($PluginConnectionsConnection->fields["plugin_connections_connections_id"], $data['entities_id']); $values["id"] = $key; $values["plugin_connections_connections_id"] = $type; $values["entities_id"] = $data['entities_id']; $PluginConnectionsConnection->update($values); } } } break; } }