first commit

This commit is contained in:
2025-08-07 13:15:31 +01:00
commit d903893b4c
21854 changed files with 4461308 additions and 0 deletions

286
front/central.php Normal file
View File

@ -0,0 +1,286 @@
<?php
/**
* ---------------------------------------------------------------------
* GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2015-2020 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2003-2014 by the INDEPNET Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* GLPI is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GLPI 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GLPI. If not, see <http://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/
include ('../inc/includes.php');
if (!(isset($_GET["embed"])
&& isset($_GET["dashboard"]))) {
Session::checkCentralAccess();
}
// embed (anonymous) dashboard
if (isset($_GET["embed"]) && isset($_GET["dashboard"])) {
$grid = new Glpi\Dashboard\Grid($_GET["dashboard"]);
$dashboard = $grid->getDashboard();
Html::popHeader($dashboard->getTitle(), $_SERVER['PHP_SELF'], false, 'central', 'central');
echo $grid->embed($_REQUEST);
Html::popFooter();
exit;
}
// Change profile system
if (isset($_POST['newprofile'])) {
if (isset($_SESSION["glpiprofiles"][$_POST['newprofile']])) {
Session::changeProfile($_POST['newprofile']);
if (Session::getCurrentInterface() == "helpdesk") {
if ($_SESSION['glpiactiveprofile']['create_ticket_on_login']) {
Html::redirect($CFG_GLPI['root_doc'] . "/front/helpdesk.public.php?create_ticket=1");
} else {
Html::redirect($CFG_GLPI['root_doc']."/front/helpdesk.public.php");
}
}
$_SESSION['_redirected_from_profile_selector'] = true;
Html::redirect($_SERVER['HTTP_REFERER']);
}
Html::redirect(preg_replace("/entities_id.*/", "", $_SERVER['HTTP_REFERER']));
}
// Manage entity change
if (isset($_GET["active_entity"])) {
$_GET["active_entity"] = rtrim($_GET["active_entity"], 'r');
if (!isset($_GET["is_recursive"])) {
$_GET["is_recursive"] = 0;
}
if (Session::changeActiveEntities($_GET["active_entity"], $_GET["is_recursive"])) {
if (($_GET["active_entity"] == $_SESSION["glpiactive_entity"])
&& isset($_SERVER['HTTP_REFERER'])) {
Html::redirect(preg_replace("/(\?|&|".urlencode('?')."|".urlencode('&').")?(entities_id|active_entity).*/", "", $_SERVER['HTTP_REFERER']));
}
}
}
Html::header(Central::getTypeName(1), $_SERVER['PHP_SELF'], 'central', 'central');
// Redirect management
if (isset($_GET["redirect"])) {
Toolbox::manageRedirect($_GET["redirect"]);
}
$central = new Central();
$central->display();
//sophal
$modifier_tableaux = 0;
if( $_SESSION['glpiactiveprofile']['name'] == "Directeur Approvisionnement"
|| $_SESSION['glpiactiveprofile']['name'] == "Directeur Assurance Qualite" || $_SESSION['glpiactiveprofile']['name'] == "Directeur Commercial"
|| $_SESSION['glpiactiveprofile']['name'] == "Directeur MGX" || $_SESSION['glpiactiveprofile']['name'] == "Directeur Production"
|| $_SESSION['glpiactiveprofile']['name'] == "Directeur Qualite" || $_SESSION['glpiactiveprofile']['name'] == "Directeur Maintenance"
|| $_SESSION['glpiactiveprofile']['name'] == "Assistant" || $_SESSION['glpiactiveprofile']['name'] == "Directeur RH" ){
function get_total_Tickets_non_resolu(){
global $DB;
$query = "SELECT COUNT(*) as total_Tickets_non_resolu FROM ( SELECT `glpi_tickets`.`id` AS id, (SELECT name FROM `glpi_users` WHERE `id` = '".$_SESSION["glpiID"]."') AS currentuser
FROM `glpi_tickets`
LEFT JOIN `glpi_tickets_users` AS `glpi_tickets_users_d1524bb2ea1d461ab90aed3b5f0e7e60` ON (`glpi_tickets`.`id` = `glpi_tickets_users_d1524bb2ea1d461ab90aed3b5f0e7e60`.`tickets_id` AND `glpi_tickets_users_d1524bb2ea1d461ab90aed3b5f0e7e60`.`type` = 1 )
LEFT JOIN `glpi_groups_tickets` AS `glpi_groups_tickets_d1524bb2ea1d461ab90aed3b5f0e7e60` ON (`glpi_tickets`.`id` = `glpi_groups_tickets_d1524bb2ea1d461ab90aed3b5f0e7e60`.`tickets_id` AND `glpi_groups_tickets_d1524bb2ea1d461ab90aed3b5f0e7e60`.`type` = 1 )
LEFT JOIN `glpi_tickets_users` AS `glpi_tickets_users_d86d1fe2a1ea996e3820de82e6aa57e8` ON (`glpi_tickets`.`id` = `glpi_tickets_users_d86d1fe2a1ea996e3820de82e6aa57e8`.`tickets_id` AND `glpi_tickets_users_d86d1fe2a1ea996e3820de82e6aa57e8`.`type` = 3 )
LEFT JOIN `glpi_groups_tickets` AS `glpi_groups_tickets_d86d1fe2a1ea996e3820de82e6aa57e8` ON (`glpi_tickets`.`id` = `glpi_groups_tickets_d86d1fe2a1ea996e3820de82e6aa57e8`.`tickets_id` AND `glpi_groups_tickets_d86d1fe2a1ea996e3820de82e6aa57e8`.`type` = 3 )
LEFT JOIN `glpi_tickets_users` AS `glpi_tickets_users_819efb92c8b927b345e489211ec8e43b` ON (`glpi_tickets`.`id` = `glpi_tickets_users_819efb92c8b927b345e489211ec8e43b`.`tickets_id` AND `glpi_tickets_users_819efb92c8b927b345e489211ec8e43b`.`type` = 2 )
LEFT JOIN `glpi_groups_tickets` AS `glpi_groups_tickets_819efb92c8b927b345e489211ec8e43b` ON (`glpi_tickets`.`id` = `glpi_groups_tickets_819efb92c8b927b345e489211ec8e43b`.`tickets_id` AND `glpi_groups_tickets_819efb92c8b927b345e489211ec8e43b`.`type` = 2 )
LEFT JOIN `glpi_ticketvalidations` ON (`glpi_tickets`.`id` = `glpi_ticketvalidations`.`tickets_id` )
LEFT JOIN `glpi_users` AS `glpi_users_a5e2026cbcb683e774f93a59e24a62a4` ON (`glpi_tickets_users_d1524bb2ea1d461ab90aed3b5f0e7e60`.`users_id` = `glpi_users_a5e2026cbcb683e774f93a59e24a62a4`.`id` )
LEFT JOIN `glpi_users` AS `glpi_users_b746b".$_SESSION["glpiID"]."c5f912caf02dd66b0df98d264` ON (`glpi_tickets_users_d86d1fe2a1ea996e3820de82e6aa57e8`.`users_id` = `glpi_users_b746b".$_SESSION["glpiID"]."c5f912caf02dd66b0df98d264`.`id` )
LEFT JOIN `glpi_users` AS `glpi_users_f201be21cd638ee780d08cba4ceff0d4` ON (`glpi_tickets_users_819efb92c8b927b345e489211ec8e43b`.`users_id` = `glpi_users_f201be21cd638ee780d08cba4ceff0d4`.`id` )
LEFT JOIN `glpi_itilcategories` ON (`glpi_tickets`.`itilcategories_id` = `glpi_itilcategories`.`id` )
WHERE ( `glpi_tickets_users_d1524bb2ea1d461ab90aed3b5f0e7e60`.users_id = '".$_SESSION["glpiID"]."'
OR `glpi_tickets_users_d86d1fe2a1ea996e3820de82e6aa57e8`.users_id = '".$_SESSION["glpiID"]."'
OR `glpi_tickets`.`users_id_recipient` = '".$_SESSION["glpiID"]."'
OR `glpi_groups_tickets_d1524bb2ea1d461ab90aed3b5f0e7e60`.`groups_id` IN (13)
OR `glpi_groups_tickets_d86d1fe2a1ea996e3820de82e6aa57e8`.`groups_id` IN (13)
OR `glpi_tickets_users_819efb92c8b927b345e489211ec8e43b`.users_id = '".$_SESSION["glpiID"]."'
OR `glpi_tickets_users_819efb92c8b927b345e489211ec8e43b`.`users_id` = '".$_SESSION["glpiID"]."'
OR `glpi_groups_tickets_819efb92c8b927b345e489211ec8e43b`.`groups_id` IN (13)
OR `glpi_ticketvalidations`.`users_id_validate` = '".$_SESSION["glpiID"]."')
AND `glpi_tickets`.`is_deleted` = 0
AND ( `glpi_tickets`.`status` IN ('1','2','3','4') ) GROUP BY `glpi_tickets`.`id`) a
";
$result = $DB->query($query);
if ($result->num_rows > 0) {
$nbr = array();
while($row = $result->fetch_assoc()) {
$nbr[] = $row;
}
return $nbr[0]['total_Tickets_non_resolu'];
}
return null;
}
function get_total_Tickets_en_retard(){
global $DB;
$query = "SELECT count(*) as total_Tickets_en_retard
FROM `glpi_tickets`
LEFT JOIN `glpi_tickets_users` AS `ts1` ON (`glpi_tickets`.`id` = `ts1`.`tickets_id` AND `ts1`.`type` = 1 )
LEFT JOIN `glpi_tickets_users` AS `ts2` ON (`glpi_tickets`.`id` = `ts2`.`tickets_id` AND `ts2`.`type` = 3 )
LEFT JOIN `glpi_tickets_users` AS `ts3` ON (`glpi_tickets`.`id` = `ts3`.`tickets_id` AND `ts3`.`type` = 2 )
LEFT JOIN `glpi_ticketvalidations` ON (`glpi_tickets`.`id` = `glpi_ticketvalidations`.`tickets_id` )
LEFT JOIN `glpi_users` AS `u1` ON (`ts1`.`users_id` = `u1`.`id` )
LEFT JOIN `glpi_users` AS `u2` ON (`ts2`.`users_id` = `u2`.`id` )
LEFT JOIN `glpi_users` AS `u3` ON (`ts3`.`users_id` = `u3`.`id` )
LEFT JOIN `glpi_itilcategories` ON (`glpi_tickets`.`itilcategories_id` = `glpi_itilcategories`.`id` )
WHERE ( `ts1`.users_id = '".$_SESSION["glpiID"]."' OR `ts2`.users_id = '".$_SESSION["glpiID"]."' OR
`glpi_tickets`.`users_id_recipient` = '".$_SESSION["glpiID"]."' OR `ts3`.users_id = '".$_SESSION["glpiID"]."'
OR `ts3`.`users_id` = '".$_SESSION["glpiID"]."' OR `glpi_ticketvalidations`.`users_id_validate` = '".$_SESSION["glpiID"]."')
AND `glpi_tickets`.`is_deleted` = 0 AND ( `glpi_tickets`.`status` IN ('1','2','3','4')
AND ( (IF(`glpi_tickets`.`time_to_resolve` IS NOT NULL AND `glpi_tickets`.`status` <> 4
AND (`glpi_tickets`.`solvedate` > `glpi_tickets`.`time_to_resolve`
OR (`glpi_tickets`.`solvedate` IS NULL AND `glpi_tickets`.`time_to_resolve` < NOW())), 1, 0) = 1)
OR (IF(`glpi_tickets`.`internal_time_to_resolve` IS NOT NULL AND `glpi_tickets`.`status` <> 4
AND (`glpi_tickets`.`solvedate` > `glpi_tickets`.`internal_time_to_resolve`
OR (`glpi_tickets`.`solvedate` IS NULL AND `glpi_tickets`.`internal_time_to_resolve` < NOW())), 1, 0) = 1)
OR (IF(`glpi_tickets`.`time_to_own` IS NOT NULL AND `glpi_tickets`.`status` <> 4
AND (`glpi_tickets`.`takeintoaccount_delay_stat` > TIME_TO_SEC(TIMEDIFF(`glpi_tickets`.`time_to_own`, `glpi_tickets`.`date`))
OR (`glpi_tickets`.`takeintoaccount_delay_stat` = 0 AND `glpi_tickets`.`time_to_own` < NOW())), 1, 0) = 1)
OR (IF(`glpi_tickets`.`internal_time_to_own` IS NOT NULL AND `glpi_tickets`.`status` <> 4
AND (`glpi_tickets`.`takeintoaccount_delay_stat` > TIME_TO_SEC(TIMEDIFF(`glpi_tickets`.`internal_time_to_own`, `glpi_tickets`.`date`))
OR (`glpi_tickets`.`takeintoaccount_delay_stat` = 0 AND `glpi_tickets`.`internal_time_to_own` < NOW())), 1, 0) = 1) ) )
";
$result = $DB->query($query);
if ($result->num_rows > 0) {
$nbr = array();
while($row = $result->fetch_assoc()) {
$nbr[] = $row;
}
return $nbr[0]['total_Tickets_en_retard'];
}
return null;
}
function get_total_problem_non_resolu(){
global $DB;
$query = "SELECT COUNT(*) as total_problem_non_resolu FROM (SELECT DISTINCT `glpi_problems`.`id` AS id, (SELECT name FROM `glpi_users` WHERE `id` = '".$_SESSION["glpiID"]."') AS currentuser
FROM `glpi_problems`
LEFT JOIN `glpi_problems_users` AS `pu1` ON (`glpi_problems`.`id` = `pu1`.`problems_id` AND `pu1`.`type` = 1 )
LEFT JOIN `glpi_problems_users` AS `pu2` ON (`glpi_problems`.`id` = `pu2`.`problems_id` AND `pu2`.`type` = 3 )
LEFT JOIN `glpi_problems_users` AS `pu3` ON (`glpi_problems`.`id` = `pu3`.`problems_id` AND `pu3`.`type` = 2 )
LEFT JOIN `glpi_itilcategories` ON (`glpi_problems`.`itilcategories_id` = `glpi_itilcategories`.`id` )
WHERE ( `pu1`.users_id = '".$_SESSION["glpiID"]."' OR `pu2`.users_id = '".$_SESSION["glpiID"]."'
OR `pu3`.users_id = '".$_SESSION["glpiID"]."'
OR `glpi_problems`.`users_id_recipient` = '".$_SESSION["glpiID"]."')
AND `glpi_problems`.`is_deleted` = 0 AND ( `glpi_problems`.`status` IN ('1','7','2','3','4') ) ) b ";
$result = $DB->query($query);
if ($result->num_rows > 0) {
$nbr = array();
while($row = $result->fetch_assoc()) {
$nbr[] = $row;
}
return $nbr[0]['total_problem_non_resolu'];
}
return null;
}
function get_total_changes_non_resolu(){
global $DB;
$query = "SELECT COUNT(*) as total_changes_non_resolu FROM ( SELECT DISTINCT `glpi_changes`.`id` AS id, (SELECT name FROM `glpi_users` WHERE `id` = '".$_SESSION["glpiID"]."') AS currentuser
FROM `glpi_changes`
LEFT JOIN `glpi_changes_users` AS `cu1` ON (`glpi_changes`.`id` = `cu1`.`changes_id` AND `cu1`.`type` = 1 )
LEFT JOIN `glpi_changes_users` AS `cu2` ON (`glpi_changes`.`id` = `cu2`.`changes_id` AND `cu2`.`type` = 3 )
LEFT JOIN `glpi_changes_users` AS `cu3` ON (`glpi_changes`.`id` = `cu3`.`changes_id` AND `cu3`.`type` = 2 )
LEFT JOIN `glpi_itilcategories` ON (`glpi_changes`.`itilcategories_id` = `glpi_itilcategories`.`id` )
WHERE ( `cu1`.users_id = '".$_SESSION["glpiID"]."' OR `cu2`.users_id = '".$_SESSION["glpiID"]."'
OR `cu3`.users_id = '".$_SESSION["glpiID"]."'
OR `glpi_changes`.`users_id_recipient` = '".$_SESSION["glpiID"]."')
AND `glpi_changes`.`is_deleted` = 0
AND ( `glpi_changes`.`status` IN ('1','9','10','7','4','11','12') )
) c ";
$result = $DB->query($query);
if ($result->num_rows > 0) {
$nbr = array();
while($row = $result->fetch_assoc()) {
$nbr[] = $row;
}
return $nbr[0]['total_changes_non_resolu'];
}
return null;
}
// Return a shortened number with a suffix (K, M, B, T)
$formatted_number_Tickets_non_resolu = Toolbox::shortenNumber(get_total_Tickets_non_resolu());
$formatted_number_Tickets_en_retard = Toolbox::shortenNumber(get_total_Tickets_en_retard());
$formatted_number_problem_non_resolu = Toolbox::shortenNumber(get_total_problem_non_resolu());
$formatted_number_changes_non_resolu = Toolbox::shortenNumber(get_total_changes_non_resolu());
$root = $CFG_GLPI["root_doc"];
$modifier_tableaux = 1;
}
//sophal
Html::footer();
?>
<script type="text/javascript">
var modifier_tableaux = <?php echo json_encode($modifier_tableaux); ?>;
if(modifier_tableaux == 1){
var root = <?php echo json_encode($root); ?>;
var formatted_number_Tickets_non_resolu = <?php echo json_encode($formatted_number_Tickets_non_resolu); ?>;
var formatted_number_Tickets_en_retard = <?php echo json_encode($formatted_number_Tickets_en_retard); ?>;
var formatted_number_problem_non_resolu = <?php echo json_encode($formatted_number_problem_non_resolu); ?>;
var formatted_number_changes_non_resolu = <?php echo json_encode($formatted_number_changes_non_resolu); ?>;
var existCondition = setInterval(function() {
if ($(".grid-stack-item[data-gs-id='bn_count_Ticket1e3cec5c-eb9b-4d25-808d-285a007bcc84']").find(".number").length) {
$(".grid-stack-item[data-gs-id='bn_count_Ticket1e3cec5c-eb9b-4d25-808d-285a007bcc84']").find(".content").html(formatted_number_Tickets_non_resolu)
$(".grid-stack-item[data-gs-id='bn_count_Ticket1e3cec5c-eb9b-4d25-808d-285a007bcc84']").find("a").attr("href" , root+"/front/ticket.php?is_deleted=0&as_map=0&criteria%5B0%5D%5Blink%5D=AND&criteria%5B0%5D%5Bfield%5D=12&criteria%5B0%5D%5Bsearchtype%5D=equals&criteria%5B0%5D%5Bvalue%5D=notold&search=Rechercher&itemtype=Ticket&start=0");
}
if ($(".grid-stack-item[data-gs-id='bn_count_tickets_latedd7438d2-bdff-4fe0-98b0-1c83991143ad']").find(".number").length) {
$(".grid-stack-item[data-gs-id='bn_count_tickets_latedd7438d2-bdff-4fe0-98b0-1c83991143ad']").find(".content").html(formatted_number_Tickets_en_retard)
$(".grid-stack-item[data-gs-id='bn_count_tickets_latedd7438d2-bdff-4fe0-98b0-1c83991143ad']").find("a").attr("href" , root+"/front/ticket.php?criteria%5B0%5D%5Bfield%5D=12&criteria%5B0%5D%5Bsearchtype%5D=equals&criteria%5B0%5D%5Bvalue%5D=notold&criteria%5B1%5D%5Blink%5D=AND&criteria%5B1%5D%5Bcriteria%5D%5B0%5D%5Bfield%5D=82&criteria%5B1%5D%5Bcriteria%5D%5B0%5D%5Bsearchtype%5D=equals&criteria%5B1%5D%5Bcriteria%5D%5B0%5D%5Bvalue%5D=1&criteria%5B1%5D%5Bcriteria%5D%5B1%5D%5Blink%5D=OR&criteria%5B1%5D%5Bcriteria%5D%5B1%5D%5Bfield%5D=182&criteria%5B1%5D%5Bcriteria%5D%5B1%5D%5Bsearchtype%5D=equals&criteria%5B1%5D%5Bcriteria%5D%5B1%5D%5Bvalue%5D=1&criteria%5B1%5D%5Bcriteria%5D%5B2%5D%5Blink%5D=OR&criteria%5B1%5D%5Bcriteria%5D%5B2%5D%5Bfield%5D=159&criteria%5B1%5D%5Bcriteria%5D%5B2%5D%5Bsearchtype%5D=equals&criteria%5B1%5D%5Bcriteria%5D%5B2%5D%5Bvalue%5D=1&criteria%5B1%5D%5Bcriteria%5D%5B3%5D%5Blink%5D=OR&criteria%5B1%5D%5Bcriteria%5D%5B3%5D%5Bfield%5D=187&criteria%5B1%5D%5Bcriteria%5D%5B3%5D%5Bsearchtype%5D=equals&criteria%5B1%5D%5Bcriteria%5D%5B3%5D%5Bvalue%5D=1&reset=reset");
}
if ($(".grid-stack-item[data-gs-id='bn_count_Problem0415dcb8-1611-46fe-911a-e7d5f5b00361']").find(".number").length) {
$(".grid-stack-item[data-gs-id='bn_count_Problem0415dcb8-1611-46fe-911a-e7d5f5b00361']").find(".content").html(formatted_number_problem_non_resolu)
}
if ($(".grid-stack-item[data-gs-id='bn_count_Change72766f23-3db2-446a-91d4-edb4b88a1cda']").find(".number").length) {
$(".grid-stack-item[data-gs-id='bn_count_Change72766f23-3db2-446a-91d4-edb4b88a1cda']").find(".content").html(formatted_number_changes_non_resolu)
}
//clearInterval(existCondition);}
}, 100); // check every 100ms
}
</script>