-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
Copy pathcentral.php
93 lines (85 loc) · 3.28 KB
/
central.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
/**
* ---------------------------------------------------------------------
*
* GLPI - Gestionnaire Libre de Parc Informatique
*
* http://glpi-project.org
*
* @copyright 2015-2025 Teclib' and contributors.
* @copyright 2003-2014 by the INDEPNET Development Team.
* @licence https://www.gnu.org/licenses/gpl-3.0.html
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* This program 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 3 of the License, or
* (at your option) any later version.
*
* This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
*
* ---------------------------------------------------------------------
*/
use Glpi\Exception\Http\BadRequestHttpException;
// Send UTF8 Headers
header("Content-Type: text/html; charset=UTF-8");
Html::header_nocache();
if (
(!isset($_REQUEST['params']['_idor_token']) || empty($_REQUEST['params']['_idor_token'])) || !isset($_REQUEST['itemtype'])
|| !isset($_REQUEST['widget'])
) {
throw new BadRequestHttpException();
}
$idor = $_REQUEST['params']['_idor_token'];
unset($_REQUEST['params']['_idor_token']);
if (
!Session::validateIDOR([
'itemtype' => $_REQUEST['itemtype'],
'_idor_token' => $idor
] + $_REQUEST['params'])
) {
throw new BadRequestHttpException();
}
/** @var class-string<CommonGLPI> $itemtype */
$itemtype = $_REQUEST['itemtype'];
$params = $_REQUEST['params'];
switch ($_REQUEST['widget']) {
case 'central_count':
if (method_exists($itemtype, 'showCentralCount')) {
$itemtype::showCentralCount($params['foruser'] ?? false);
}
break;
case 'central_list':
if (method_exists($itemtype, 'showCentralList')) {
if (is_subclass_of($itemtype, CommonITILObject::class) || is_subclass_of($itemtype, CommonITILTask::class)) {
$showgrouptickets = isset($params['showgrouptickets']) ? ($params['showgrouptickets'] !== 'false') : false;
$itemtype::showCentralList($params['start'], $params['status'] ?? 'process', $showgrouptickets);
}
} elseif ($itemtype === RSSFeed::class) {
$personal = $params['personal'] !== 'false';
$itemtype::showListForCentral($personal);
} elseif ($itemtype === Planning::class) {
$itemtype::showCentral($params['who']);
} elseif ($itemtype === Reminder::class) {
$personal = ($params['personal'] ?? true) !== 'false';
$itemtype::showListForCentral($personal);
} elseif ($itemtype === Project::class) {
$itemtype::showListForCentral($params['itemtype']);
} elseif ($itemtype === ProjectTask::class) {
$itemtype::showListForCentral($params['itemtype']);
}
break;
default:
echo __s('Invalid widget');
}