You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2011-10-28 09:55:50

stijn_cme
Member
Registered: 2011-10-11
Posts: 1

added glpi.addTicketTask to webservices

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

#2 2011-11-21 10:19:30

cregj
Member
Registered: 2011-11-21
Posts: 1

Re: added glpi.addTicketTask to webservices

stijn_cme wrote:

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

Board footer

Powered by FluxBB