Skip to content

Commit f6a33ad

Browse files
committed
fix(issue): loss of issue on automatic action
Signed-off-by: Thierry Bugier <tbugier@teclib.com>
1 parent 3266fc9 commit f6a33ad

File tree

3 files changed

+110
-9
lines changed

3 files changed

+110
-9
lines changed

front/targetticket.form.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
$use_notification = ($_POST['use_notification'] == 0) ? 0 : 1;
5454
$targetTicket_actor = new PluginFormcreatorTarget_Actor();
5555
$targetTicket_actor->add([
56-
'itemtype' => $targetticket->getType(),
56+
'itemtype' => $targetticket->getType(),
5757
'items_id' => $id,
5858
'actor_role' => $_POST['actor_role'],
5959
'actor_type' => $_POST['actor_type'],

inc/issue.class.php

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,17 @@ public static function getSyncIssuesRequest() : AbstractQuery {
176176
],
177177
[
178178
'TABLE' => new QuerySubquery([
179-
'SELECT' => ['users_id', $ticketFk],
180-
'DISTINCT' => true,
181-
'FROM' => $ticketUserTable,
182-
'WHERE' => [
183-
'type' => CommonITILActor::REQUESTER,
184-
],
185-
'ORDER' => ['id ASC'],
179+
'SELECT' => '*',
180+
'FROM' => new QuerySubquery([
181+
'SELECT' => ['users_id', $ticketFk],
182+
'DISTINCT' => true,
183+
'FROM' => $ticketUserTable,
184+
'WHERE' => [
185+
'type' => CommonITILActor::REQUESTER,
186+
],
187+
'ORDER' => ['id ASC'],
188+
], 'inner_glpi_tickets_users'),
189+
'GROUPBY' => 'tickets_id'
186190
], 'glpi_tickets_users'),
187191
'FKEY' => [
188192
$ticketTable => 'id',

tests/3-unit/PluginFormcreatorIssue.php

Lines changed: 98 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,43 @@ public function providerGetsyncIssuesRequest_simpleFormanswers() {
9999
];
100100
}
101101

102+
public function providerGetSyncIssuesRequest_formAnswerWithOneTicket() {
103+
$form = $this->getForm();
104+
$targetTicket1 = new \PluginFormcreatorTargetTicket();
105+
$targetTicket1->add([
106+
'plugin_formcreator_forms_id' => $form->getID(),
107+
'name' => 'foo',
108+
]);
109+
$this->boolean($targetTicket1->isNewItem())->isFalse();
110+
111+
$formAnswer = new \PluginFormcreatorFormAnswer();
112+
$formAnswer->add([
113+
'plugin_formcreator_forms_id' => $form->getID(),
114+
]);
115+
$this->boolean($formAnswer->isNewItem())->isFalse();
116+
$formAnswer->getFromDB($formAnswer->getID());
117+
$ticket = array_shift($formAnswer->targetList);
118+
$this->object($ticket)->isInstanceOf(\Ticket::getType());
119+
120+
return [
121+
'formAnswerWithOneTicket' => [
122+
'item' => $ticket,
123+
'expected' => [
124+
'sub_itemtype' => \Ticket::getType(),
125+
'original_id' => $ticket->getID(),
126+
'display_id' => 't_' . $ticket->getID(),
127+
'name' => $ticket->fields['name'],
128+
'status' => $ticket->fields['status'],
129+
'requester_id' => $ticket->fields['users_id_recipient'],
130+
'date_creation' => $ticket->fields['date'],
131+
'date_mod' => $ticket->fields['date_mod'],
132+
'users_id_validator' => '0',
133+
'groups_id_validator' => '0',
134+
],
135+
],
136+
];
137+
}
138+
102139
public function providerGetSyncIssuesRequest_formAnswerWithSeveralTickets() {
103140
$form = $this->getForm();
104141
$targetTicket1 = new \PluginFormcreatorTargetTicket();
@@ -285,14 +322,74 @@ public function providerGetsyncIssuesRequest_validatedTicket() {
285322
];
286323
}
287324

325+
public function providerGetSyncIssuesRequest_FormAnswerWithSeveralRequesters() {
326+
$form = $this->getForm();
327+
$targetTicket1 = new \PluginFormcreatorTargetTicket();
328+
$targetTicket1->add([
329+
'plugin_formcreator_forms_id' => $form->getID(),
330+
'name' => 'foo',
331+
]);
332+
$this->boolean($targetTicket1->isNewItem())->isFalse();
333+
334+
$actor1 = new \PluginFormcreatorTarget_Actor();
335+
$actor1->add([
336+
'itemtype' => $targetTicket1->getType(),
337+
'items_id' => $targetTicket1->getID(),
338+
'actor_role' => \PluginFormcreatorTarget_Actor::ACTOR_TYPE_PERSON,
339+
'actor_type' => \CommonITILActor::REQUESTER,
340+
'actor_value' => 3,
341+
'use_notification' => '1',
342+
]);
343+
$this->boolean($actor1->isNewItem())->isFalse();
344+
$actor2 = new \PluginFormcreatorTarget_Actor();
345+
$actor2->add([
346+
'itemtype' => $targetTicket1->getType(),
347+
'items_id' => $targetTicket1->getID(),
348+
'actor_role' => \PluginFormcreatorTarget_Actor::ACTOR_TYPE_PERSON,
349+
'actor_type' => \CommonITILActor::REQUESTER,
350+
'actor_value' => 5,
351+
'use_notification' => '1',
352+
]);
353+
$this->boolean($actor2->isNewItem())->isFalse();
354+
355+
$formAnswer = new \PluginFormcreatorFormAnswer();
356+
$formAnswer->add([
357+
'plugin_formcreator_forms_id' => $form->getID(),
358+
]);
359+
$this->boolean($formAnswer->isNewItem())->isFalse();
360+
$formAnswer->getFromDB($formAnswer->getID());
361+
362+
$ticket = array_shift($formAnswer->targetList);
363+
$this->object($ticket)->isInstanceOf(\Ticket::getType());
364+
return [
365+
'formAnswerWithSeveralRequesters' => [
366+
'item' => $ticket,
367+
'expected' => [
368+
'sub_itemtype' => \Ticket::getType(),
369+
'original_id' => $ticket->getID(),
370+
'display_id' => 't_' . $ticket->getID(),
371+
'name' => $ticket->fields['name'],
372+
'status' => $ticket->fields['status'],
373+
'requester_id' => $ticket->fields['users_id_recipient'],
374+
'date_creation' => $ticket->fields['date'],
375+
'date_mod' => $ticket->fields['date_mod'],
376+
'users_id_validator' => '0',
377+
'groups_id_validator' => '0',
378+
],
379+
],
380+
];
381+
}
382+
288383
public function providerGetSyncIssuesRequest() {
289384
return array_merge(
290385
$this->providerGetsyncIssuesRequest_simpleTicket(),
291386
$this->providerGetsyncIssuesRequest_simpleFormanswers(),
387+
$this->providerGetSyncIssuesRequest_formAnswerWithOneTicket(),
292388
$this->providerGetSyncIssuesRequest_formAnswerWithSeveralTickets(),
293389
$this->providerGetSyncIssuesRequest_formanswerUnderValidation(),
294390
$this->providerGetsyncIssuesRequest_ticketUnderValidation(),
295-
$this->providerGetsyncIssuesRequest_validatedTicket()
391+
$this->providerGetsyncIssuesRequest_validatedTicket(),
392+
$this->providerGetSyncIssuesRequest_FormAnswerWithSeveralRequesters()
296393
);
297394
}
298395

0 commit comments

Comments
 (0)