コード例 #1
0
ファイル: TicketsController.php プロジェクト: uzerpllp/uzerp
 public function _new()
 {
     parent::_new();
     $ticket = $this->_uses[$this->modeltype];
     if (isset($this->_data['originator_company_id'])) {
         $company = new Company();
         $company->load($this->_data['originator_company_id']);
         $this->view->set('originator_company', $company->name);
         $this->view->set('people', $company->getPeople());
         $this->view->set('email', Ticket::getCompanyEmail($this->_data['originator_company_id']));
     } else {
         $company = new Systemcompany();
         $company->load(EGS_COMPANY_ID);
         $this->view->set('originator_company', $company->company);
         $this->view->set('people', $company->systemcompany->getPeople());
     }
     $ticketreleaseversion = new TicketReleaseVersion();
     $releaseversion_cc = new ConstraintChain();
     $releaseversion_cc->add(new Constraint('status', '<>', $ticketreleaseversion->releasedStatus()));
     if (!$ticket->isLoaded()) {
         $defaults = new TicketConfiguration();
         if (isset($this->_data['originator_company_id'])) {
             $cc = new ConstraintChain();
             $cc->add(new Constraint('company_id', '=', $this->_data['originator_company_id']));
             $defaults->loadBy($cc);
         }
         if (!$defaults->isLoaded()) {
             $cc = new ConstraintChain();
             $cc->add(new Constraint('company_id', '=', EGS_COMPANY_ID));
             $defaults->loadBy($cc);
         }
         if ($defaults->isLoaded()) {
             $this->view->set('client_ticket_status_default', $defaults->client_ticket_status_id);
             $this->view->set('internal_ticket_status_default', $defaults->internal_ticket_status_id);
             $this->view->set('ticket_queue_default', $defaults->ticket_queue_id);
             $this->view->set('ticket_category_default', $defaults->ticket_category_id);
             $this->view->set('client_ticket_severity_default', $defaults->client_ticket_severity_id);
             $this->view->set('internal_ticket_severity_default', $defaults->internal_ticket_severity_id);
             $this->view->set('client_ticket_priority_default', $defaults->client_ticket_priority_id);
             $this->view->set('internal_ticket_priority_default', $defaults->internal_ticket_priority_id);
         }
     }
     if (!empty($this->_data['ticket_release_version_id'])) {
         $ticket->ticket_release_version_id = $this->_data['ticket_release_version_id'];
     }
     if (!is_null($ticket->ticket_release_version_id)) {
         $releaseversion_cc->add(new Constraint('id', '=', $ticket->ticket_release_version_id), 'OR');
     }
     $ticket->belongsTo['release_version']['cc'] = $releaseversion_cc;
 }
コード例 #2
0
ファイル: ClientController.php プロジェクト: uzerpllp/uzerp
 public function save()
 {
     // Fill client hidden sections
     $user = new User();
     $person = new Person();
     $user->load(EGS_USERNAME);
     if (!is_null($user->person_id)) {
         $person->load($user->person_id);
     }
     // Is this quick entry?
     if ($this->_data['TicketResponse']['type'] == 'quick') {
         $this->_data['TicketResponse']['type'] = 'site';
         $config = new TicketConfigurationCollection(new TicketConfiguration());
         $sh = new SearchHandler($config);
         $sh->AddConstraint(new Constraint('usercompanyid', '=', EGS_COMPANY_ID));
         $config->load($sh);
         $config = $config->getContents();
         if (count($config) !== 1) {
             // Make one.
             $newConfig['usercompanyid'] = EGS_COMPANY_ID;
             $priority = self::findDefault(new TicketPriorityCollection(new TicketPriority()));
             $newConfig['client_ticket_priority_default'] = $priority->id;
             $newConfig['internal_ticket_priority_default'] = $priority->id;
             $severity = self::findDefault(new TicketSeverityCollection(new TicketSeverity()));
             $newConfig['client_ticket_severity_default'] = $severity->id;
             $newConfig['internal_ticket_severity_default'] = $severity->id;
             $queue = self::findDefault(new TicketQueueCollection(new TicketQueue()));
             $newConfig['ticket_queue_default'] = $queue->id;
             $category = self::findDefault(new TicketCategoryCollection(new TicketCategory()));
             $newConfig['ticket_category_default'] = $category->id;
             $status = self::findDefault(new TicketStatusCollection(new TicketStatus()));
             $newConfig['client_ticket_status_default'] = $status->id;
             $newConfig['internal_ticket_status_default'] = $status->id;
             $config = TicketConfiguration::Factory($newConfig);
         } else {
             $config = $config[0];
         }
         $this->_data['Ticket']['client_ticket_priority_id'] = $config->client_ticket_priority_default;
         $this->_data['Ticket']['ticket_queue_id'] = $config->ticket_queue_default;
     }
     $this->_data['Ticket']['originator_person_id'] = $user->username;
     $this->_data['Ticket']['originator_company_id'] = $user->lastcompanylogin;
     $this->_data['Ticket']['internal_ticket_severity_id'] = $this->_data['Ticket']['client_ticket_severity_id'];
     $this->_data['Ticket']['internal_ticket_priority_id'] = $this->_data['Ticket']['client_ticket_priority_id'];
     if (!isset($this->_data['Ticket']['id'])) {
         // Force 'new' status initialy
         $ts = new TicketStatusCollection(new TicketStatus());
         $sh = new SearchHandler($ts);
         $sh->addConstraint(new Constraint('usercompanyid', '=', EGS_COMPANY_ID));
         $sh->addConstraint(new Constraint('status_code', '=', 'NEW'));
         $ts->load($sh);
         $statuses = $ts->getContents();
         $status = $statuses[0];
         // Should only ever be one status, this should be regulated by earlier validation
         $this->_data['Ticket']['client_ticket_status_id'] = $status->id;
         $this->_data['Ticket']['internal_ticket_status_id'] = $status->id;
     }
     if (isset($this->_data['Ticket']['id'])) {
         $originalTicket = new Ticket();
         $originalTicket->load($this->_data['Ticket']['id']);
         $changes = array(array('param' => 'client_ticket_status_id', 'friendly' => 'Status', 'object' => 'TicketStatus'), array('param' => 'client_ticket_priority_id', 'friendly' => 'Priority', 'object' => 'TicketPriority'), array('param' => 'client_ticket_severity_id', 'friendly' => 'Severity', 'object' => 'TicketSeverity'), array('param' => 'ticket_queue_id', 'friendly' => 'Queue', 'object' => 'TicketQueue'));
         $changeText = array();
         foreach ($changes as $change) {
             if ($this->_data['Ticket'][$change['param']] != $originalTicket->{$change}['param']) {
                 $was = new $change['object']();
                 $now = new $change['object']();
                 $was->load($originalTicket->{$change}['param']);
                 $now->load($this->_data['Ticket'][$change['param']]);
                 $changeText[] = $change['friendly'] . ': was ' . $was->name . ' now ' . $now->name . '.';
             }
         }
         if (count($changeText) > 0) {
             $errors = array();
             $ticketResponse = TicketResponse::Factory(array('ticket_id' => $this->_data['Ticket']['id'], 'internal' => 'false', 'body' => implode("\n", $changeText), 'type' => 'status', 'owner' => EGS_USERNAME), $errors, 'TicketResponse');
             $ticketResponse->save();
             $queue = new TicketQueue();
             $queue->load($originalTicket->ticket_queue_id);
             // Send mail
             $headers = array('From' => $queue->email_address);
             $header_string = "";
             foreach ($headers as $header => $value) {
                 $header_string .= $header . ': ' . $value . "\r\n";
             }
             $body = TicketingUtils::StatusPlate($originalTicket) . implode("\n", $changeText);
             $recipients = TicketingUtils::GetRecipients($originalTicket);
             foreach ($recipients as $recipient) {
                 mail($recipient, 're: [' . $originalTicket->ticket_queue_id . '-' . $originalTicket->id . '] ' . $originalTicket->summary, $body, $header_string);
             }
         }
     }
     parent::save('Ticket');
     $ticket_id = $this->_data['id'];
     $this->_data['Ticket']['id'] = $this->_data['id'];
     if (isset($this->_data['id'])) {
         $this->_data['TicketResponse']['ticket_id'] = $ticket_id;
         parent::save('TicketResponse');
     }
     sendTo('Client', 'view', array('ticketing'), array('id' => $ticket_id));
 }
コード例 #3
0
ファイル: xmlrpcTicket.php プロジェクト: uzerpllp/uzerp
 private function newRequest(&$data = array(), &$errors = array())
 {
     $config = new TicketConfiguration();
     $companyid = $data['Ticket']['originator_company_id'];
     if (!empty($companyid)) {
         $cc = new ConstraintChain();
         $cc->add(new Constraint('company_id', '=', $companyid));
         $config->loadBy($cc);
     }
     if (!$config->isLoaded()) {
         $sc = new Systemcompany();
         $sc->load($data['Ticket']['usercompanyid']);
         if ($sc->isLoaded()) {
             $cc = new ConstraintChain();
             $cc->add(new Constraint('company_id', '=', $sc->company_id));
             $config->loadBy($cc);
         }
     }
     if ($config->isLoaded()) {
         $data['Ticket']['ticket_category_id'] = $config->ticket_category_id;
         $data['Ticket']['ticket_queue_id'] = $config->ticket_queue_id;
         $data['Ticket']['client_ticket_priority_id'] = $config->client_ticket_priority_id;
         $data['Ticket']['internal_ticket_priority_id'] = $config->internal_ticket_priority_id;
         $data['Ticket']['client_ticket_severity_id'] = $config->client_ticket_severity_id;
         $data['Ticket']['internal_ticket_severity_id'] = $config->internal_ticket_severity_id;
         $data['Ticket']['client_ticket_status_id'] = $config->client_ticket_status_id;
         $data['Ticket']['internal_ticket_status_id'] = $config->internal_ticket_status_id;
     } else {
         //	'TicketCategory' - get default
         $data['Ticket']['ticket_category_id'] = self::getDefault(new TicketCategory());
         //	'TicketQueue' - get default
         $data['Ticket']['ticket_queue_id'] = self::getDefault(new TicketQueue());
         //	'TicketPriority' - get default
         $priority = self::getDefault(new TicketPriority());
         $data['Ticket']['client_ticket_priority_id'] = $priority;
         $data['Ticket']['internal_ticket_priority_id'] = $priority;
         //	'TicketSeverity' - get default
         $severity = self::getDefault(new TicketSeverity());
         $data['Ticket']['client_ticket_severity_id'] = $severity;
         $data['Ticket']['internal_ticket_severity_id'] = $severity;
         //	'TicketStatus' - get default
         $status = self::getDefault(new TicketStatus());
         $data['Ticket']['client_ticket_status_id'] = $status;
         $data['Ticket']['internal_ticket_status_id'] = $status;
     }
     //	'User' - get default assigned to/raised by
     $data['Ticket']['assigned_to'] = '';
     $data['Ticket']['raised_by'] = '';
     //	'Person' - get name of person making request
     $data['Ticket']['originator_person_id'] = '';
     $db = DB::Instance();
     $db->StartTrans();
     $ticket = DataObject::Factory($data['Ticket'], $errors, new Ticket());
     if (count($errors) == 0 && !$ticket->save()) {
         $errors[] = $db->ErrorMsg();
         $errors[] = 'Error saving Ticket';
         $db->FailTrans();
     }
     if (count($errors) == 0) {
         $data['TicketResponse']['ticket_id'] = $ticket->id;
         if (!self::saveResponse($data, $errors)) {
             $errors[] = $db->ErrorMsg();
             $db->FailTrans();
         }
     }
     if (count($errors) == 0 && count($data['attachments']) > 0) {
         if (!self::saveAttachments($data, $db, $errors)) {
             $errors[] = $db->ErrorMsg();
             $db->FailTrans();
         }
     }
     $db->CompleteTrans();
     // Build the response.
     if (count($errors) === 0) {
         self::emailConfirmation($ticket, $data);
         $data['message'] = 'This ticket has been assigned to you.';
         self::notifyQueueOwner($ticket, $data);
     }
     return;
 }