You are not logged in.
Pages: 1
Hi,
first of all, I love the ticketing function in GLPi! + the webservices plugin!
I needed a webservice for adding task / planned tasks so I edited the webservices inc files and add this:
// Add this to webservices/inc/methodhelpdesk.class.php, at the end of the file *before* } ?>
/**
* Add a (planned) Task to a existing ticket
* for a authenticated user
*
* @param $params array of options (ticket, content)
* @return array of hashtable
*/
static function methodAddTicketTask($params, $protocol) {
if (isset ($params['help'])) {
return array('ticket' => 'integer,mandatory',
'content' => 'string,mandatory',
'private' => 'bool,optional',
'planstart' => 'datestring,optional',
'planend' => 'datestring,optional',
'close' => 'bool,optional',
'reopen' => 'bool,optional',
'help' => 'bool,optional');
}
if (!isset ($_SESSION['glpiID'])) {
return self::Error($protocol, WEBSERVICES_ERROR_NOTAUTHENTICATED);
}
$ticket = new Ticket();
if (!isset ($params['ticket'])) {
return self::Error($protocol, WEBSERVICES_ERROR_MISSINGPARAMETER, '', 'ticket');
} else if (!is_numeric($params['ticket'])) {
return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'ticket');
} else if (!$ticket->can($params['ticket'],'r')) {
return self::Error($protocol, WEBSERVICES_ERROR_NOTFOUND);
}
if (!$ticket->canAddFollowups()) {
return self::Error($protocol, WEBSERVICES_ERROR_NOTALLOWED);
}
if (!isset($params['content'])) {
return self::Error($protocol, WEBSERVICES_ERROR_MISSINGPARAMETER, '', 'content');
}
$task = new TicketTask();
$data = array('tickets_id' => $params['ticket'],
'taskcategories_id' => '0',
'content' => addslashes(clean_cross_side_scripting_deep($params["content"])));
if (!isset($params['private'])){
$data['is_private'] = 0;
}
if (isset($params['planstart']) && !isset($params['planend'])){
return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'planend');
}
if (isset($params['planend']) && !isset($params['planstart'])){
return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'planstart');
}
// date (open) : optional, default set by add method
if (isset ($params["date"])) {
if (preg_match(WEBSERVICES_REGEX_DATETIME, $params["date"])) {
$data['date'] = $params['date'];
} else {
return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'date');
}
}
if (isset($params['close'])) {
if ($ticket->fields['status'] == 'solved') {
$data['add_close'] = 1;
} else {
return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'close for not solved ticket');
}
}
if (isset($params['reopen'])) {
if ($ticket->fields['status'] == 'solved') {
$data['add_reopen'] = 1;
} else {
return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'reopen for not solved ticket');
}
}
$taskid = false;
$taskid = $task->add($data);
if ($taskid) {
if (isset($params['planstart']) && isset($params['planend'])){
$planning = new TicketPlanning();
$data = array(
'tickets_id' => $params['ticket'],
'users_id' => $_SESSION['glpiID'],
'tickettasks_id' => $taskid,
'begin' => $params['planstart'],
'end' => $params['planend']
);
if ($planning->add($data)){
return self::methodGetTicket(array('ticket' => $params['ticket']),$protocol);
} else {
return self::Error($protocol, WEBSERVICES_ERROR_FAILED, '',self::getDisplayError());
}
}
return self::methodGetTicket(array('ticket' => $params['ticket']),$protocol);
}
return self::Error($protocol, WEBSERVICES_ERROR_FAILED, '',self::getDisplayError());
}
// Add in webservices/hook.php in function plugin_webservices_registerMethods(), at the end of the funtion
$WEBSERVICES_METHOD['glpi.addTicketTask'] = array('PluginWebservicesMethodHelpdesk','methodAddTicketTask');
Enjoy!
Offline
Hi,
first of all, I love the ticketing function in GLPi! + the webservices plugin!
I needed a webservice for adding task / planned tasks so I edited the webservices inc files and add this:// Add this to webservices/inc/methodhelpdesk.class.php, at the end of the file *before* } ?> /** * Add a (planned) Task to a existing ticket * for a authenticated user * * @param $params array of options (ticket, content) * @return array of hashtable */ static function methodAddTicketTask($params, $protocol) { if (isset ($params['help'])) { return array('ticket' => 'integer,mandatory', 'content' => 'string,mandatory', 'private' => 'bool,optional', 'planstart' => 'datestring,optional', 'planend' => 'datestring,optional', 'close' => 'bool,optional', 'reopen' => 'bool,optional', 'help' => 'bool,optional'); } if (!isset ($_SESSION['glpiID'])) { return self::Error($protocol, WEBSERVICES_ERROR_NOTAUTHENTICATED); } $ticket = new Ticket(); if (!isset ($params['ticket'])) { return self::Error($protocol, WEBSERVICES_ERROR_MISSINGPARAMETER, '', 'ticket'); } else if (!is_numeric($params['ticket'])) { return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'ticket'); } else if (!$ticket->can($params['ticket'],'r')) { return self::Error($protocol, WEBSERVICES_ERROR_NOTFOUND); } if (!$ticket->canAddFollowups()) { return self::Error($protocol, WEBSERVICES_ERROR_NOTALLOWED); } if (!isset($params['content'])) { return self::Error($protocol, WEBSERVICES_ERROR_MISSINGPARAMETER, '', 'content'); } $task = new TicketTask(); $data = array('tickets_id' => $params['ticket'], 'taskcategories_id' => '0', 'content' => addslashes(clean_cross_side_scripting_deep($params["content"]))); if (!isset($params['private'])){ $data['is_private'] = 0; } if (isset($params['planstart']) && !isset($params['planend'])){ return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'planend'); } if (isset($params['planend']) && !isset($params['planstart'])){ return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'planstart'); } // date (open) : optional, default set by add method if (isset ($params["date"])) { if (preg_match(WEBSERVICES_REGEX_DATETIME, $params["date"])) { $data['date'] = $params['date']; } else { return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'date'); } } if (isset($params['close'])) { if ($ticket->fields['status'] == 'solved') { $data['add_close'] = 1; } else { return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'close for not solved ticket'); } } if (isset($params['reopen'])) { if ($ticket->fields['status'] == 'solved') { $data['add_reopen'] = 1; } else { return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'reopen for not solved ticket'); } } $taskid = false; $taskid = $task->add($data); if ($taskid) { if (isset($params['planstart']) && isset($params['planend'])){ $planning = new TicketPlanning(); $data = array( 'tickets_id' => $params['ticket'], 'users_id' => $_SESSION['glpiID'], 'tickettasks_id' => $taskid, 'begin' => $params['planstart'], 'end' => $params['planend'] ); if ($planning->add($data)){ return self::methodGetTicket(array('ticket' => $params['ticket']),$protocol); } else { return self::Error($protocol, WEBSERVICES_ERROR_FAILED, '',self::getDisplayError()); } } return self::methodGetTicket(array('ticket' => $params['ticket']),$protocol); } return self::Error($protocol, WEBSERVICES_ERROR_FAILED, '',self::getDisplayError()); }
// Add in webservices/hook.php in function plugin_webservices_registerMethods(), at the end of the funtion $WEBSERVICES_METHOD['glpi.addTicketTask'] = array('PluginWebservicesMethodHelpdesk','methodAddTicketTask');
Enjoy!
Thanks a lot. I was actually looking out for this info...
Offline
Pages: 1