You are not logged in.
Pages: 1
Bonjour,
Je souhaite modifier le statut d'un ticket de cette façon :
$this->connect();
$this->setHeaders();
$this->curl->put($GLOBALS['glpi_host'] . '/' . $GLOBALS['glpi_url'] . '/Ticket/'.$id,
array(
'input' => array(
'tickets_id' => $id,
'status' => $status,
'solvedate' => date('Y-m-d H:i:s')
)
)
);
mais l'appel d'une méthode PUT retourne une erreur étrange :
Fatal error: Uncaught Error: Class 'mysqli' not found in C:\inetpub\wwwroot\glpi9.4\inc\dbmysql.class.php:104 Stack trace: #0
C:\inetpub\wwwroot\glpi9.4\inc\dbmysql.class.php(78): DBmysql->connect(NULL) #1
C:\inetpub\wwwroot\glpi9.4\inc\dbconnection.class.php(192): DBmysql->__construct() #2
C:\inetpub\wwwroot\glpi9.4\inc\dbconnection.class.php(274): DBConnection::switchToMaster() #3
C:\inetpub\wwwroot\glpi9.4\inc\config.php(85): DBConnection::establishDBConnection(0, 0) #4
C:\inetpub\wwwroot\glpi9.4\inc\includes.php(48): require('C:\\inetpub\\wwwr...') #5
C:\inetpub\wwwroot\glpi9.4\inc\api.class.php(98): include_once('C:\\inetpub\\wwwr...') #6
C:\inetpub\wwwroot\glpi9.4\inc\apirest.class.php(119): API->initApi() #7
C:\inetpub\wwwroot\glpi9.4\apirest.php(48): APIRest->call() #8
{main} thrown in C:\inetpub\wwwroot\glpi9.4\inc\dbmysql.class.php on line 104
Tous mes appels en GET et POST fonctionnent parfaitement.
Avez-vous vous une idée ?
Last edited by Freezee10 (2019-09-20 16:21:25)
Offline
J'ai réglé ce problème.
Cependant, quand je fait mon PUT, GLPI me répond OK mais rien n'a été mis à jour sur le ticket
Offline
Avez vous le droit de fermer un ticket sans solution?
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
L'utilisateur qui fait l'action a les droits super admin, je viens de tester dans GLPI et je peux bien clore un ticket sans solution.
Que j'essaie de passer le statut à 2 ou 6 l'API ne répond rien d'autre que le code 200 "OK" mais rien n'a changé sur le ticket.
$response = $this->client->request('PUT', 'Ticket/'.$ticket,
[
'json' => [
'status' => 2,
'solvedate' => date('Y-m-d H:i:s')
]
]
);
Last edited by Freezee10 (2019-10-13 20:35:18)
Offline
vous ne passez pas le "tickets_id" dans le JSON ?
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Je le passe dans l'URL 'Ticket/'.$ticket
J'ai également essayé d'attaquer l'URL Ticket seule avec "tickets_id" dans le json mais ça ne se met pas à jour non plus.
Offline
je ne sais pas si c'est la cause de votre problème mais il y a une incohérence dans votre requête :
avec un statut 2 (assigné) il ne peut pas y avoir de date de resolution puisque le ticket n'est pas résolu
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
j'ai fait le test en version 9.4.4 :
si je passe
$url="/Ticket/".$ticketid.."/";
$fields = '{"input": { "tickets_id":'.$ticketid.',"status":"6","solvedate":"2019-10-10 15:00:00"}}' ;
le ticket passe bien au statut clos avec la bonne date de resolution, par contre la date de cloture est celle de l'envoi de la commande et je n'arrive pas à la forcer
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Pages: 1