. * --------------------------------------------------------------------- */ if (!defined('GLPI_ROOT')) { die("Sorry. You can't access this file directly"); } /** * TicketValidation class */ class TicketValidation extends CommonITILValidation { // From CommonDBChild static public $itemtype = 'Ticket'; static public $items_id = 'tickets_id'; static $rightname = 'ticketvalidation'; const CREATEREQUEST = 1024; const CREATEINCIDENT = 2048; const VALIDATEREQUEST = 4096; const VALIDATEINCIDENT = 8192; static function getCreateRights() { return [static::CREATEREQUEST, static::CREATEINCIDENT]; } static function getValidateRights() { return [static::VALIDATEREQUEST, static::VALIDATEINCIDENT]; } /** * @since 0.85 **/ function canCreateItem() { if ($this->canChildItem('canViewItem', 'canView')) { $ticket = new Ticket(); if ($ticket->getFromDB($this->fields['tickets_id'])) { // No validation for closed tickets if (in_array($ticket->fields['status'], $ticket->getClosedStatusArray())) { return false; } if ($ticket->fields['type'] == Ticket::INCIDENT_TYPE) { return Session::haveRight(self::$rightname, self::CREATEINCIDENT); } if ($ticket->fields['type'] == Ticket::DEMAND_TYPE) { return Session::haveRight(self::$rightname, self::CREATEREQUEST); } } } } /** * @since 0.85 * * @see commonDBTM::getRights() **/ function getRights($interface = 'central') { $values = parent::getRights(); unset($values[UPDATE], $values[CREATE], $values[READ]); $values[self::CREATEREQUEST] = ['short' => __('Create for request'), 'long' => __('Create a validation request for a request')]; $values[self::CREATEINCIDENT] = ['short' => __('Create for incident'), 'long' => __('Create a validation request for an incident')]; $values[self::VALIDATEREQUEST] = __('Validate a request'); $values[self::VALIDATEINCIDENT] = __('Validate an incident'); if ($interface == 'helpdesk') { unset($values[PURGE]); } return $values; } }