/**
  * @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;
 }
Exemplo n.º 2
0
 /**
  * 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());
     }
 }
Exemplo n.º 3
0
 /**
  * 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);
 }