/** * 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); }