%PDF- %PDF-
| Direktori : /var/www/projetos/suporte.iigd.com.br/plugins/glpiinventory/report/ |
| Current File : //var/www/projetos/suporte.iigd.com.br/plugins/glpiinventory/report/ports_date_connections.php |
<?php
/**
* ---------------------------------------------------------------------
* GLPI Inventory Plugin
* Copyright (C) 2021 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on FusionInventory for GLPI
* Copyright (C) 2010-2021 by the FusionInventory Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI Inventory Plugin.
*
* GLPI Inventory Plugin is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GLPI Inventory Plugin is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with GLPI Inventory Plugin. If not, see <https://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/
//Options for GLPI 0.71 and newer : need slave db to access the report
$USEDBREPLICATE = 1;
$DBCONNECTION_REQUIRED = 0;
include("../../../inc/includes.php");
Html::header(__('GLPI Inventory', 'glpiinventory'), $_SERVER['PHP_SELF'], "utils", "report");
Session::checkRight('plugin_glpiinventory_reportnetworkequipment', READ);
$reset_search = filter_input(INPUT_GET, "reset_search");
if ($reset_search != '') {
resetSearch();
}
$options = ['options' => ['default' => 0]];
$start = filter_input(INPUT_GET, "start", FILTER_VALIDATE_INT, $options);
$_GET["start"] = $start;
$_GET = getValues($_GET, $_POST);
displaySearchForm();
if (isset($_POST["dropdown_calendar"]) && isset($_POST["dropdown_sup_inf"])) {
$date_search = '';
if ($_POST['dropdown_sup_inf'] == 'sup') {
$date_search .= "> '" . $_POST['dropdown_calendar'] . "'";
} elseif ($_POST['dropdown_sup_inf'] == 'inf') {
$date_search .= "< '" . $_POST['dropdown_calendar'] . "'";
} elseif ($_POST['dropdown_sup_inf'] == 'equal') {
$date_search .= " LIKE '" . $_POST['dropdown_calendar'] . "%'";
}
$networkport = new NetworkPort();
$networkequipment = new NetworkEquipment();
$query = "SELECT `glpi_networkports`.`id`, a.date_mod, `glpi_networkports`.`items_id` FROM `glpi_networkports`"
. " LEFT JOIN `glpi_plugin_glpiinventory_networkportconnectionlogs` a"
. " ON a.id= (SELECT MAX(fn.id) a_id
FROM glpi_plugin_glpiinventory_networkportconnectionlogs fn
WHERE (fn.networkports_id_source = glpi_networkports.id
OR fn.networkports_id_destination = glpi_networkports.id))"
. " WHERE a.id IS NOT NULL AND `glpi_networkports`.`itemtype`='NetworkEquipment'"
. " AND a.date_mod" . $date_search
. " ORDER BY `glpi_networkports`.`items_id`";
$result = $DB->doQuery($query);
echo "<table width='950' class='tab_cadre_fixe'>";
echo "<tr class='tab_bg_1'>";
echo "<th>";
echo 'Port name';
echo "</th>";
echo "<th>";
echo 'Switch';
echo "</th>";
echo "<th>";
echo 'Last connection';
echo "</th>";
echo "</tr>";
while ($data = $DB->fetchArray($result)) {
echo "<tr class='tab_bg_1'>";
echo "<td>";
$networkport->getFromDB($data['id']);
echo $networkport->getLink();
echo "</td>";
echo "<td>";
$networkequipment->getFromDB($data['items_id']);
echo $networkequipment->getLink();
echo "</td>";
echo "<td>";
echo Html::convDate($data['date_mod']);
echo "</td>";
echo "</tr>";
}
echo "</table>";
}
Html::footer();
/**
* Display special search form
*
* @global array $_SERVER
* @global array $_GET
* @global array $CFG_GLPI
*/
function displaySearchForm()
{
global $_SERVER, $_GET, $CFG_GLPI;
echo "<form action='" . $_SERVER["PHP_SELF"] . "' method='post'>";
echo "<table class='tab_cadre' cellpadding='5'>";
echo "<tr class='tab_bg_1' align='center'>";
echo "<td>";
echo __('Initial contract period') . " :";
$values = [];
$values["sup"] = ">";
$values["inf"] = "<";
$values["equal"] = "=";
if (isset($_GET["contains"][1])) {
if (strstr($_GET["contains"][1], "lt;")) {
$_GET["dropdown_sup_inf"] = "inf";
$_GET["dropdown_calendar"] = str_replace("lt;", "", $_GET["contains"][1]);
$_GET["dropdown_calendar"] = str_replace("&", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace("\\", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace("'", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace(" 00:00:00", "", $_GET["dropdown_calendar"]);
$_GET["contains"][1] = "<" . $_GET["dropdown_calendar"];
}
if (strstr($_GET["contains"][1], "gt;")) {
$_GET["dropdown_sup_inf"] = "sup";
$_GET["dropdown_calendar"] = str_replace("gt;", "", $_GET["contains"][1]);
$_GET["dropdown_calendar"] = str_replace("&", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace("\\", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace("'", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace(" 00:00:00", "", $_GET["dropdown_calendar"]);
$_GET["contains"][1] = ">" . $_GET["dropdown_calendar"];
}
if (strstr($_GET["contains"][1], "LIKE")) {
$_GET["dropdown_sup_inf"] = "equal";
$_GET["dropdown_calendar"] = str_replace("=", "", $_GET["contains"][1]);
$_GET["dropdown_calendar"] = str_replace("&", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace("\\", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace("'", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace("%", "", $_GET["dropdown_calendar"]);
$_GET["dropdown_calendar"] = str_replace("LIKE ", "", $_GET["dropdown_calendar"]);
$_GET["contains"][1] = "LIKE '" . $_GET["dropdown_calendar"] . "%'";
}
}
Dropdown::showFromArray(
"dropdown_sup_inf",
$values,
['value' => (isset($_GET["dropdown_sup_inf"]) ? $_GET["dropdown_sup_inf"] : "sup")]
);
echo "</td>
<td width='120'>";
Html::showDateField(
"dropdown_calendar",
['value' => (isset($_GET["dropdown_calendar"])
? $_GET["dropdown_calendar"] : 0)]
);
echo "</td>";
echo "<td>" . __('Location') . "</td>";
echo "<td>";
Dropdown::show(
"Location",
['name' => "location",
'value' => (isset($_GET["location"]) ? $_GET["location"] : "")]
);
echo "</td>";
// Display Reset search
echo "<td>";
echo "<a href='" . Plugin::getWebDir('glpiinventory') . "/report/ports_date_connections.php?reset_search=reset_search' ><img title=\"" . __('Blank') . "\" alt=\"" . __('Blank') . "\" src='" . $CFG_GLPI["root_doc"] . "/pics/reset.png' class='calendrier'></a>";
echo "</td>";
echo "<td>";
//Add parameters to uri to be saved as SavedSearch
$_SERVER["REQUEST_URI"] = buildSavedSearchUrl($_SERVER["REQUEST_URI"], $_GET);
SavedSearch::showSaveButton(SavedSearch::SEARCH, 'PluginGlpiinventoryNetworkport2');
echo "</td>";
echo "<td>";
echo "<input type='submit' value='" . __('Validate') . "' class='submit' />";
echo "</td>";
echo "</tr>";
echo "</table>";
Html::closeForm();
}
/**
* Get array in GET for search
*
* @param array $get
* @return string
*/
function getContainsArray($get)
{
if (isset($get["dropdown_sup_inf"])) {
switch ($get["dropdown_sup_inf"]) {
case "sup":
return ">'" . $get["dropdown_calendar"] . " 00:00:00'";
case "equal":
return "LIKE '" . $get["dropdown_calendar"] . "%'";
case "inf":
return "<'" . $get["dropdown_calendar"] . " 00:00:00'";
}
}
}
/**
* Generate the URL SavedSearch
*
* @param string $url
* @param array $get
* @return string
*/
function buildSavedSearchUrl($url, $get)
{
return $url . "?field[0]=3&contains[0]=" . getContainsArray($get);
}
/**
* Get values
*
* @param array $get
* @param array $post
* @return array
*/
function getValues($get, $post)
{
$get = array_merge($get, $post);
if (isset($get["field"])) {
foreach ($get["field"] as $index => $value) {
$get["contains"][$index] = stripslashes($get["contains"][$index]);
$get["contains"][$index] = htmlspecialchars_decode($get["contains"][$index]);
switch ($value) {
case 14:
if (strpos($get["contains"][$index], "=") == 1) {
$get["dropdown_sup_inf"] = "equal";
} else {
if (strpos($get["contains"][$index], "<") == 1) {
$get["dropdown_sup_inf"] = "inf";
} else {
$get["dropdown_sup_inf"] = "sup";
}
}
break;
}
$get["dropdown_calendar"] = substr($get["contains"][$index], 1);
}
}
return $get;
}
/**
* Reset the search engine
*/
function resetSearch()
{
$_GET["start"] = 0;
$_GET["order"] = "ASC";
$_GET["is_deleted"] = 0;
$_GET["distinct"] = "N";
$_GET["link"] = [];
$_GET["field"] = [0 => "view"];
$_GET["contains"] = [0 => ""];
$_GET["link2"] = [];
$_GET["field2"] = [0 => "view"];
$_GET["contains2"] = [0 => ""];
$_GET["type2"] = "";
$_GET["sort"] = 1;
$_GET["dropdown_sup_inf"] = "sup";
$_GET["dropdown_calendar"] = date("Y-m-d H:i");
}