/** * Answer to a ticket validation request * for an authenticated user * * @param $params array of options (ticket, id2name) * @param $protocol the communication protocol used * * @return array of hashtable as glpi.getTicket **/ static function methodsetTicketValidation($params, $protocol) { global $DB, $CFG_GLPI; if (isset($params['help'])) { return array('approval' => 'integer,mandatory', 'id2name' => 'bool,optional', 'status' => 'text,mandatory', 'comment' => 'text,optional', 'help' => 'bool,optional'); } if (!Session::getLoginUserID()) { return self::Error($protocol, WEBSERVICES_ERROR_NOTAUTHENTICATED); } $ticket = new Ticket(); if (!isset($params['approval'])) { return self::Error($protocol, WEBSERVICES_ERROR_MISSINGPARAMETER, '', 'approval'); } if (!isset($params['status'])) { return self::Error($protocol, WEBSERVICES_ERROR_MISSINGPARAMETER, '', 'status'); } $tabstatus = TicketValidation::getAllStatusArray(); if (!isset($tabstatus[$params['status']])) { return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'status=' . $params['status']); } if ($params['status'] == 'rejected' && !isset($params['comment'])) { return self::Error($protocol, WEBSERVICES_ERROR_MISSINGPARAMETER, '', 'comment'); } $valid = new TicketValidation(); if (!$valid->getFromDB($params['approval'])) { return self::Error($protocol, WEBSERVICES_ERROR_NOTFOUND, '', 'approval'); } $input = array('id' => $valid->getField('id'), 'status' => $params['status']); if (isset($params['comment'])) { $input['comment_validation'] = addslashes($params['comment']); } if (!$valid->can($params['approval'], 'w')) { return self::Error($protocol, WEBSERVICES_ERROR_NOTALLOWED); } if ($valid->update($input)) { unset($params['approval'], $params['status'], $params['comment']); $params['ticket'] = $valid->getField('tickets_id'); return self::methodGetTicket($params, $protocol); } return self::Error($protocol, WEBSERVICES_ERROR_FAILED, '', self::getDisplayError()); }