%PDF- %PDF-
| Direktori : /home/infra/fusioninventory/report/ |
| Current File : //home/infra/fusioninventory/report/ports_date_connections.php |
<?php
/**
* FusionInventory
*
* Copyright (C) 2010-2023 by the FusionInventory Development Team.
*
* http://www.fusioninventory.org/
* https://github.com/fusioninventory/fusioninventory-for-glpi
* http://forge.fusioninventory.org/
*
* ------------------------------------------------------------------------
*
* LICENSE
*
* This file is part of FusionInventory project.
*
* FusionInventory 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.
*
* FusionInventory 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 FusionInventory. If not, see <http://www.gnu.org/licenses/>.
*
* ------------------------------------------------------------------------
*
* This file is used to manage the network equipment port not have
* connection since xx days.
*
* ------------------------------------------------------------------------
*
* @package FusionInventory
* @author David Durieux
* @copyright Copyright (c) 2010-2023 FusionInventory team
* @license AGPL License 3.0 or (at your option) any later version
* http://www.gnu.org/licenses/agpl-3.0-standalone.html
* @link http://www.fusioninventory.org/
* @link https://github.com/fusioninventory/fusioninventory-for-glpi
*
*/
//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(__('FusionInventory', 'fusioninventory'), filter_input(INPUT_SERVER, "PHP_SELF"), "utils", "report");
Session::checkRight('plugin_fusioninventory_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']."'";
} else if ($_POST['dropdown_sup_inf'] == 'inf') {
$date_search .= "< '".$_POST['dropdown_calendar']."'";
} else if ($_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_fusioninventory_networkportconnectionlogs` a"
. " ON a.id= (SELECT MAX(fn.id) a_id
FROM glpi_plugin_fusioninventory_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->query($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('fusioninventory')."/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, 'PluginFusioninventoryNetworkport2');
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");
}