Exemple #1
0
 function assignStaff($staffId, $message, $alertstaff = true)
 {
     global $thisuser, $cfg;
     $staff = new Staff($staffId);
     if (!$staff || !$staff->isAvailable() || !$thisuser) {
         return false;
     }
     if ($this->setStaffId($staff->getId())) {
         //Reopen the ticket if cloed.
         if ($this->isClosed()) {
             //Assigned ticket Must be open.
             $this->reopen();
         }
         $this->reload();
         //
         //Send Notice + Message to assignee. (if directed)
         if ($alertstaff && ($thisuser && $staff->getId() != $thisuser->getId())) {
             //No alerts for self assigned.
             //Send Notice + Message to assignee.
             $dept = $this->getDept();
             if (!$dept || !($tplId = $dept->getTemplateId())) {
                 $tplId = $cfg->getDefaultTemplateId();
             }
             $sql = 'SELECT assigned_alert_subj,assigned_alert_body FROM ' . EMAIL_TEMPLATE_TABLE . ' WHERE cfg_id=' . db_input($cfg->getId()) . ' AND tpl_id=' . db_input($tplId);
             if (($resp = db_query($sql)) && db_num_rows($resp) && (list($subj, $body) = db_fetch_row($resp))) {
                 $body = $this->replaceTemplateVars($body);
                 $subj = $this->replaceTemplateVars($subj);
                 $body = str_replace('%note', $message, $body);
                 $body = str_replace("%message", $message, $body);
                 //Previous versions used message.
                 $body = str_replace("%assignee", $staff->getName(), $body);
                 $body = str_replace("%assigner", $thisuser ? $thisuser->getName() : 'System', $body);
                 if (!($email = $cfg->getAlertEmail())) {
                     $email = $cfg->getDefaultEmail();
                 }
                 if ($email) {
                     $email->send($staff->getEmail(), $subj, $body);
                 }
             } else {
                 Sys::log(LOG_WARNING, 'Template Fetch Error', "Unable to fetch 'assigned' alert template #{$tplId}");
             }
         }
         $message = $message ? $message : 'Ticket assigned';
         //Save the message as internal note...(record).
         $this->postNote('Ticket Assigned to ' . $staff->getName(), $message, false);
         //Notice that we are disabling note alerts!
         return true;
     }
     return false;
 }
 function assignStaff($staffId, $message, $alertstaff = true)
 {
     global $thisuser, $cfg;
     $staff = new Staff($staffId);
     if (!$staff || !$staff->isAvailable() || !$thisuser) {
         return false;
     }
     if ($this->setStaffId($staff->getId())) {
         //Reopen the ticket if cloed.
         if ($this->isClosed()) {
             //Assigned ticket Must be open.
             $this->reopen();
         }
         //Send Notice + Message to assignee. (if directed)
         if ($alertstaff && $staff->getId() != $thisuser->getId()) {
             //No alerts for self assigned.
             //Send Notice + Message to assignee.
             $sql = 'SELECT assigned_alert_subj,assigned_alert_body FROM ' . EMAIL_TEMPLATE_TABLE . ' WHERE cfg_id=' . db_input($cfg->getId()) . ' AND tpl_id=' . db_input($cfg->getDefaultTemplateId());
             $resp = db_query($sql);
             if (db_num_rows($resp) && (list($subj, $body) = db_fetch_row($resp))) {
                 $subj = str_replace("%ticket", $this->getExtId(), $subj);
                 $body = str_replace("%ticket", $this->getExtId(), $body);
                 $body = str_replace("%assignee", $staff->getName(), $body);
                 $body = str_replace("%assigner", $thisuser->getName(), $body);
                 $body = str_replace("%message", $message, $body);
                 $body = str_replace("%url", $cfg->getBaseUrl(), $body);
                 Misc::sendmail($staff->getEmail(), $subj, $body, $cfg->getAlertEmail());
             }
         }
         //Save the message as internal note...(record).
         $this->postNote('Ticket Assigned to ' . $staff->getName(), $message);
         return true;
     }
     return false;
 }