/** * @param Ticket $ticket */ private function redirectToTicketView(Ticket $ticket) { if (isset($_REQUEST['callback'])) { $return_url = new Url(BASE_URL . '/callback'); $return_url->callback = $_REQUEST['callback']; } else { $return_url = $ticket->getURL(); } header("Location: {$return_url}"); exit; }
/** * Send a notification of this action to the actionPerson * * Does not send if the enteredByPerson and actionPerson are the same person * @param Ticket $ticket */ public function sendNotification($ticket = null) { $enteredByPerson = $this->getEnteredByPerson(); $actionPerson = $this->getActionPerson(); $url = $ticket ? $ticket->getURL() : ''; if ($actionPerson && (!$enteredByPerson || $enteredByPerson->getId() != $actionPerson->getId())) { $actionPerson->sendNotification("{$url}\n\n{$this->getDescription()}\n\n{$this->getNotes()}", APPLICATION_NAME . ' ' . $this->getAction()); } }
/** * Handles issue editing * * Choosing a person involves going through a whole person finding process * at a different url. Once the user has chosen a new person, they will * return here, passing in the person_id they have chosen * * @param REQUEST issue_id Existing issues are edited by passing in an Issue * @param REQUEST ticket_id New issues are created by passing in a Ticket * @param REQUEST person_id The new reportedByPerson */ public function update() { //------------------------------------------------------------------- // Load all the data that's passed in //------------------------------------------------------------------- try { // To edit existing issues, pass in the issue_id if (!empty($_REQUEST['issue_id'])) { $issue = new Issue($_REQUEST['issue_id']); } else { if (!empty($_REQUEST['ticket_id'])) { $issue = new Issue(); $issue->setTicket_id($_REQUEST['ticket_id']); } else { throw new \Exception('tickets/unknownTicket'); } } } catch (\Exception $e) { $_SESSION['errorMessages'][] = $e; header('Location: ' . BASE_URL . '/tickets'); exit; } if (isset($_REQUEST['person_id'])) { $issue->setReportedByPerson_id($_REQUEST['person_id']); } //------------------------------------------------------------------- // Handle any stuff the user posts //------------------------------------------------------------------- if (isset($_POST['issueType_id'])) { $issue->handleUpdate($_POST); try { $issue->save(); $action = new Action('update'); $history = new IssueHistory(); $history->setIssue($issue); $history->setAction($action); $history->save(); // Update the search index // Make sure the ticket uses the latest issue information $ticket = new Ticket($issue->getTicket_id()); $ticket->updateSearchIndex(); header('Location: ' . $ticket->getURL()); exit; } catch (\Exception $e) { $_SESSION['errorMessages'][] = $e; } } //------------------------------------------------------------------- // Display the view //------------------------------------------------------------------- $ticket = $issue->getTicket(); $this->template->setFilename('tickets'); $this->template->blocks['ticket-panel'][] = new Block('tickets/ticketInfo.inc', array('ticket' => $ticket, 'disableButtons' => true)); $this->template->blocks['history-panel'][] = new Block('tickets/history.inc', array('history' => $ticket->getHistory())); $this->template->blocks['issue-panel'][] = new Block('tickets/updateIssueForm.inc', array('issue' => $issue, 'ticket' => $ticket)); $this->addLocationInfoBlocks($ticket); }