Beispiel #1
0
 /**
  * Create a new ticket
  *
  * @apiMethod POST
  * @apiUri    /support
  * @apiParameter {
  * 		"name":        "scope",
  * 		"description": "Scope type (group, member, etc.)",
  * 		"type":        "string",
  * 		"required":    true,
  * 		"default":     null
  * }
  * @apiParameter {
  * 		"name":        "scope_id",
  * 		"description": "Scope object ID",
  * 		"type":        "integer",
  * 		"required":    true,
  * 		"default":     null
  * }
  * @apiParameter {
  * 		"name":        "title",
  * 		"description": "Entry title",
  * 		"type":        "string",
  * 		"required":    true,
  * 		"default":     null
  * }
  * @apiParameter {
  * 		"name":        "alias",
  * 		"description": "Entry alias",
  * 		"type":        "string",
  * 		"required":    false,
  * 		"default":     null
  * }
  * @return     void
  */
 public function createTask()
 {
     //get the userid and attempt to load user profile
     $userid = User::get('id');
     $result = User::getInstance($userid);
     //make sure we have a user
     if (!$result || !$result->get('id')) {
         throw new Exception(Lang::txt('User not found.'), 500);
     }
     // Initiate class and bind data to database fields
     $ticket = new \Components\Support\Models\Ticket();
     // Set the created date
     $ticket->set('created', Date::toSql());
     // Incoming
     $ticket->set('report', Request::getVar('report', '', 'post', 'none', 2));
     if (!$ticket->get('report')) {
         throw new Exception(Lang::txt('Error: Report contains no text.'), 500);
     }
     $ticket->set('os', Request::getVar('os', 'unknown', 'post'));
     $ticket->set('browser', Request::getVar('browser', 'unknown', 'post'));
     $ticket->set('severity', Request::getVar('severity', 'normal', 'post'));
     // Cut suggestion at 70 characters
     $summary = substr($ticket->get('report'), 0, 70);
     if (strlen($summary) >= 70) {
         $summary .= '...';
     }
     $ticket->set('summary', $summary);
     // Get user data
     $ticket->set('name', $result->get('name'));
     $ticket->set('email', $result->get('email'));
     $ticket->set('login', $result->get('username'));
     // Set some helpful info
     $ticket->set('instances', 1);
     $ticket->set('section', 1);
     $ticket->set('open', 1);
     $ticket->set('status', 0);
     $ticket->set('ip', Request::ip());
     $ticket->set('hostname', gethostbyaddr(Request::getVar('REMOTE_ADDR', '', 'server')));
     // Save the data
     if (!$ticket->store()) {
         throw new Exception($ticket->getErrors(), 500);
     }
     // Any tags?
     if ($tags = trim(Request::getVar('tags', '', 'post'))) {
         $ticket->tag($tags, $result->get('id'));
     }
     // Set the response
     $msg = new stdClass();
     $msg->submitted = $ticket->get('created');
     $msg->ticket = $ticket->get('id');
     $this->send($msg);
 }