Skip to content

Commit 7e601b9

Browse files
SebSeptcedric-anne
authored andcommitted
Group managed OLA
1 parent 4cb59a2 commit 7e601b9

62 files changed

Lines changed: 6333 additions & 1923 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

front/ticket.form.php

Lines changed: 35 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242

4343
global $CFG_GLPI, $DB;
4444

45-
$track = new Ticket();
45+
$ticket = new Ticket();
4646

4747
if (!isset($_GET['id'])) {
4848
$_GET['id'] = "";
@@ -66,35 +66,39 @@
6666
}
6767
}
6868

69+
// form submitted (add & update)
6970
// as _actors virtual field stores json, bypass automatic escaping
7071
if (isset($_POST['_actors'])) {
7172
$_POST['_actors'] = json_decode($_POST['_actors'], true);
7273
$_REQUEST['_actors'] = $_POST['_actors'];
7374
}
7475

76+
// form submitted (add)
7577
if (isset($_POST["add"])) {
76-
$track->check(-1, CREATE, $_POST);
77-
$_POST = $track->enforceReadonlyFields($_POST, true);
78+
$ticket->check(-1, CREATE, $_POST);
79+
$_POST = $ticket->enforceReadonlyFields($_POST, true);
7880

79-
if ($track->add($_POST)) {
81+
if ($ticket->add($_POST)) {
8082
if ($_SESSION['glpibackcreated']) {
81-
Html::redirect($track->getLinkURL());
83+
Html::redirect($ticket->getLinkURL());
8284
}
8385
}
8486
Html::back();
85-
} elseif (isset($_POST['update'])) {
86-
if (!$track::canUpdate()) {
87+
}
88+
// form submitted (update)
89+
elseif (isset($_POST['update'])) {
90+
if (!$ticket::canUpdate()) {
8791
throw new AccessDeniedHttpException();
8892
}
89-
$_POST = $track->enforceReadonlyFields($_POST);
90-
$track->update($_POST);
93+
$_POST = $ticket->enforceReadonlyFields($_POST);
94+
$ticket->update($_POST);
9195

9296
if (isset($_POST['kb_linked_id'])) {
9397
//if solution should be linked to selected KB entry
9498
$params = [
9599
'knowbaseitems_id' => $_POST['kb_linked_id'],
96-
'itemtype' => $track->getType(),
97-
'items_id' => $track->getID(),
100+
'itemtype' => $ticket->getType(),
101+
'items_id' => $ticket->getID(),
98102
];
99103
$existing = $DB->request([
100104
'FROM' => 'glpi_knowbaseitems_items',
@@ -115,23 +119,25 @@
115119
sprintf(__('%s updates an item'), $_SESSION["glpiname"])
116120
);
117121

118-
if ($track->can($_POST["id"], READ)) {
122+
if ($ticket->can($_POST["id"], READ)) {
119123
$toadd = '';
120124
// Copy solution to KB redirect to KB
121125
if (isset($_POST['_sol_to_kb']) && $_POST['_sol_to_kb']) {
122126
$toadd = "&_sol_to_kb=1";
123127
}
124128
Html::redirect(Ticket::getFormURLWithID($_POST["id"]) . $toadd);
125129
}
130+
131+
// in case user can update the ticket but not read it, redirect to the ticket list
126132
Session::addMessageAfterRedirect(
127133
__s('You have been redirected because you no longer have access to this ticket'),
128134
true,
129135
ERROR
130136
);
131137
Html::redirect($CFG_GLPI["root_doc"] . "/front/ticket.php");
132138
} elseif (isset($_POST['delete'])) {
133-
$track->check($_POST['id'], DELETE);
134-
if ($track->delete($_POST)) {
139+
$ticket->check($_POST['id'], DELETE);
140+
if ($ticket->delete($_POST)) {
135141
Event::log(
136142
$_POST["id"],
137143
"ticket",
@@ -141,10 +147,10 @@
141147
sprintf(__('%s deletes an item'), $_SESSION["glpiname"])
142148
);
143149
}
144-
$track->redirectToList();
150+
$ticket->redirectToList();
145151
} elseif (isset($_POST['purge'])) {
146-
$track->check($_POST['id'], PURGE);
147-
if ($track->delete($_POST, true)) {
152+
$ticket->check($_POST['id'], PURGE);
153+
if ($ticket->delete($_POST, true)) {
148154
Event::log(
149155
$_POST["id"],
150156
"ticket",
@@ -154,10 +160,10 @@
154160
sprintf(__('%s purges an item'), $_SESSION["glpiname"])
155161
);
156162
}
157-
$track->redirectToList();
163+
$ticket->redirectToList();
158164
} elseif (isset($_POST["restore"])) {
159-
$track->check($_POST['id'], DELETE);
160-
if ($track->restore($_POST)) {
165+
$ticket->check($_POST['id'], DELETE);
166+
if ($ticket->restore($_POST)) {
161167
Event::log(
162168
$_POST["id"],
163169
"ticket",
@@ -169,23 +175,9 @@
169175
}
170176
Html::back();
171177
} elseif (isset($_POST['sla_delete'])) {
172-
$track->check($_POST["id"], UPDATE);
173-
174-
$track->deleteLevelAgreement("SLA", $_POST["id"], $_POST['type'], $_POST['delete_date']);
175-
Event::log(
176-
$_POST["id"],
177-
"ticket",
178-
4,
179-
"tracking",
180-
//TRANS: %s is the user login
181-
sprintf(__('%s updates an item'), $_SESSION["glpiname"])
182-
);
183-
184-
Html::redirect(Ticket::getFormURLWithID($_POST["id"]));
185-
} elseif (isset($_POST['ola_delete'])) {
186-
$track->check($_POST["id"], UPDATE);
178+
$ticket->check($_POST["id"], UPDATE);
187179

188-
$track->deleteLevelAgreement("OLA", $_POST["id"], $_POST['type'], $_POST['delete_date']);
180+
$ticket->deleteLevelAgreement("SLA", $_POST["id"], $_POST['type'], $_POST['delete_date']);
189181
Event::log(
190182
$_POST["id"],
191183
"ticket",
@@ -198,16 +190,16 @@
198190
Html::redirect(Ticket::getFormURLWithID($_POST["id"]));
199191
} elseif (isset($_POST['addme_as_actor'])) {
200192
$id = (int) $_POST['id'];
201-
$track->check($id, READ);
202-
$input = array_merge($track->fields, [
193+
$ticket->check($id, READ);
194+
$input = array_merge($ticket->fields, [
203195
'id' => $id,
204196
'_itil_' . $_POST['actortype'] => [
205197
'_type' => "user",
206198
'users_id' => Session::getLoginUserID(),
207199
'use_notification' => 1,
208200
],
209201
]);
210-
$track->update($input);
202+
$ticket->update($input);
211203
Event::log(
212204
$id,
213205
"ticket",
@@ -218,13 +210,13 @@
218210
);
219211
Html::redirect(Ticket::getFormURLWithID($id));
220212
} elseif (isset($_POST['delete_document'])) {
221-
$track->getFromDB((int) $_POST['tickets_id']);
213+
$ticket->getFromDB((int) $_POST['tickets_id']);
222214
$doc = new Document();
223215
$doc->getFromDB((int) $_POST['documents_id']);
224216
if ($doc->can($doc->getID(), UPDATE)) {
225217
$document_item = new Document_Item();
226218
$found_document_items = $document_item->find([
227-
$track->getAssociatedDocumentsCriteria(),
219+
$ticket->getAssociatedDocumentsCriteria(),
228220
'documents_id' => $doc->getID(),
229221
]);
230222
foreach ($found_document_items as $item) {
@@ -234,6 +226,7 @@
234226
Html::back();
235227
}
236228

229+
// show form when editing a ticket
237230
$id = (int) $_GET['id'];
238231
if ($id > 0) {
239232
$available_options = ['_openfollowup'];
@@ -289,7 +282,7 @@
289282

290283
if (isset($_GET['showglobalkanban']) && $_GET['showglobalkanban']) {
291284
Html::header(sprintf(__('%s Kanban'), Ticket::getTypeName(1)), '', "helpdesk", "ticket");
292-
$track::showKanban(0);
285+
$ticket::showKanban(0);
293286
Html::footer();
294287
} else {
295288
$menus = ["helpdesk", "ticket"];

inc/relation.constant.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,7 @@
750750
'glpi_tickettasks' => 'groups_id_tech',
751751
'glpi_users' => 'groups_id',
752752
'glpi_itilvalidationtemplates_targets' => 'groups_id',
753+
'glpi_olas' => 'groups_id',
753754
],
754755

755756
'glpi_holidays' => [
@@ -1033,15 +1034,11 @@
10331034
'_glpi_olalevelactions' => 'olalevels_id',
10341035
'_glpi_olalevelcriterias' => 'olalevels_id',
10351036
'_glpi_olalevels_tickets' => 'olalevels_id',
1036-
'glpi_tickets' => 'olalevels_id_ttr',
10371037
],
10381038

10391039
'glpi_olas' => [
10401040
'glpi_olalevels' => 'olas_id',
1041-
'glpi_tickets' => [
1042-
'olas_id_ttr',
1043-
'olas_id_tto',
1044-
],
1041+
'_glpi_items_olas' => 'olas_id',
10451042
],
10461043

10471044
'glpi_operatingsystemarchitectures' => [

install/empty_data.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,7 @@ public function getEmptyData(): array
755755
'hourmax' => 24,
756756
], [
757757
'id' => 32,
758-
'itemtype' => 'OlaLevel_Ticket',
758+
'itemtype' => 'Item_Ola',
759759
'name' => 'olaticket',
760760
'frequency' => 5 * MINUTE_TIMESTAMP,
761761
'param' => null,

0 commit comments

Comments
 (0)