Пример #1
0
/**
 * Informs an user about a ticket creation/update and writes a line to the log.
 *
 * @author		EasySCP Team
 * @version		1.0.0
 *
 * @access	public
 * @param int $to_id				ticket recipient
 * @param int $from_id				ticket sender
 * @param string $ticket_subject	ticket subject
 * @param string $ticket_message	ticket content / message
 * @param int $ticket_status		ticket status
 * @param int $urgency				ticket urgency
 */
function sendTicketNotification($to_id, $from_id, $ticket_subject, $ticket_message, $ticket_status, $urgency)
{
    $cfg = EasySCP_Registry::get('Config');
    $sql = EasySCP_Registry::get('Db');
    // To information
    $query = "SELECT\n\t\t\t`fname`, `lname`, `email`, `admin_name`\n\t\tFROM\n\t\t\t`admin`\n\t\tWHERE\n\t\t\t`admin_id` = ?\n\t\t;";
    $res = exec_query($sql, $query, $to_id);
    $to_email = $res->fields['email'];
    $to_fname = $res->fields['fname'];
    $to_lname = $res->fields['lname'];
    $to_uname = $res->fields['admin_name'];
    // From information
    $query = "SELECT\n\t\t\t`fname`, `lname`, `email`, `admin_name`\n\t\tFROM\n\t\t\t`admin`\n\t\tWHERE\n\t\t\t`admin_id` = ?\n\t\t;";
    $res = exec_query($sql, $query, $from_id);
    $from_email = $res->fields['email'];
    $from_fname = $res->fields['fname'];
    $from_lname = $res->fields['lname'];
    $from_uname = $res->fields['admin_name'];
    // Prepare message
    $subject = tr("[Ticket]") . " {SUBJ}";
    if ($ticket_status == 0) {
        $message = tr("Hello %s!\n\nYou have a new ticket:\n", "{TO_NAME}");
    } else {
        $message = tr("Hello %s!\n\nYou have an answer for this ticket:\n", "{TO_NAME}");
    }
    $message .= "\n" . tr("Priority: %s\n", "{PRIORITY}");
    $message .= "\n" . $ticket_message;
    $message .= "\n\n" . tr("Log in to answer") . ' ' . $cfg->BASE_SERVER_VHOST_PREFIX . $cfg->BASE_SERVER_VHOST;
    // Format addresses
    if ($from_fname && $from_lname) {
        $from = '"' . mb_encode_mimeheader($from_fname . ' ' . $from_lname, 'UTF-8') . "\" <" . $from_email . ">";
        $fromname = "{$from_fname} {$from_lname}";
    } else {
        $from = $from_email;
        $fromname = $from_uname;
    }
    if ($to_fname && $to_lname) {
        $to = '"' . mb_encode_mimeheader($to_fname . ' ' . $to_lname, 'UTF-8') . "\" <" . $to_email . ">";
        $toname = "{$to_fname} {$to_lname}";
    } else {
        $toname = $to_uname;
        $to = $to_email;
    }
    $priority = getTicketUrgency($urgency);
    // Prepare and send mail
    $search = array();
    $replace = array();
    $search[] = '{SUBJ}';
    $replace[] = $ticket_subject;
    $search[] = '{TO_NAME}';
    $replace[] = $toname;
    $search[] = '{FROM_NAME}';
    $replace[] = $fromname;
    $search[] = '{PRIORITY}';
    $replace[] = $priority;
    $subject = str_replace($search, $replace, $subject);
    $message = str_replace($search, $replace, $message);
    $headers = "From: " . $from . "\n" . "MIME-Version: 1.0\nContent-Type: text/plain; " . "charset=utf-8\nContent-Transfer-Encoding: 8bit\n" . "X-Mailer: EasySCP " . $cfg->Version . " Tickets Mailer";
    $mail_result = mail($to, mb_encode_mimeheader($subject, 'UTF-8'), $message, $headers);
    $mail_status = $mail_result ? 'OK' : 'NOT OK';
    $toname = tohtml($toname);
    $fromname = tohtml($fromname);
    write_log(sprintf("%s send ticket To: %s, From: %s, Status: %s!", $_SESSION['user_logged'], $toname . ": " . $to_email, $fromname . ": " . $from_email, $mail_status));
}
Пример #2
0
/**
 * Informs a user about a ticket creation/update and writes a line to the log
 *
 * @access private
 * @usedby updateTicket()
 * @usedby createTicket()
 * @param int $toId ticket recipient
 * @param int $fromId ticket sender
 * @param string $ticketSubject ticket subject
 * @param string $ticketMessage ticket content / message
 * @param int $ticketStatus ticket status
 * @param int $urgency ticket urgency
 */
function _sendTicketNotification($toId, $fromId, $ticketSubject, $ticketMessage, $ticketStatus, $urgency)
{
    /** @var $cfg iMSCP_Config_Handler_File */
    $cfg = iMSCP_Registry::get('config');
    // To information
    $stmt = exec_query('SELECT fname, lname, email, admin_name FROM admin WHERE admin_id = ?', $toId);
    $row = $stmt->fetchRow(PDO::FETCH_ASSOC);
    $toFname = $row['fname'];
    $toLname = $row['lname'];
    $toEmail = $row['email'];
    $toUname = $row['admin_name'];
    // From information
    $stmt = exec_query('SELECT fname, lname, email, admin_name FROM admin WHERE admin_id = ?', $fromId);
    $row = $stmt->fetchRow(PDO::FETCH_ASSOC);
    $fromFname = $row['fname'];
    $fromLname = $row['lname'];
    $fromEmail = $row['email'];
    $fromUname = $row['admin_name'];
    // Prepare message
    $subject = tr('[Ticket]') . ' {SUBJ}';
    if ($ticketStatus == 0) {
        $message = tr("Dear %s,\n\nYou have a new ticket:\n", '{TO_NAME}');
    } else {
        $message = tr("Dear %s,\n\nYou have an answer for this ticket:\n", '{TO_NAME}');
    }
    $port = $cfg['BASE_SERVER_VHOST_PREFIX'] == 'http://' ? $cfg['BASE_SERVER_VHOST_HTTP_PORT'] == '80' ? '' : ':' . $cfg['BASE_SERVER_VHOST_HTTP_PORT'] : ($cfg['BASE_SERVER_VHOST_HTTPS_PORT'] == '443' ? '' : ':' . $cfg['BASE_SERVER_VHOST_HTTPS_PORT']);
    $message .= "\n" . tr("Priority: %s\n", '{PRIORITY}');
    $message .= "\n" . $ticketMessage;
    $message .= "\n\n" . tr('Log in to answer') . ' ' . $cfg['BASE_SERVER_VHOST_PREFIX'] . $cfg['BASE_SERVER_VHOST'] . $port;
    // Format addresses
    if ($fromFname && $fromLname) {
        $from = encode_mime_header($fromFname . ' ' . $fromLname) . " <{$fromEmail}>";
        $fromname = "{$fromFname} {$fromLname}";
    } else {
        $from = $fromEmail;
        $fromname = $fromUname;
    }
    if ($toFname && $toLname) {
        $to = encode_mime_header($toFname . ' ' . $toLname) . " <{$toEmail}>";
        $toname = "{$toFname} {$toLname}";
    } else {
        $toname = $toUname;
        $to = $toEmail;
    }
    $priority = getTicketUrgency($urgency);
    // Prepare and send mail
    $search = array();
    $replace = array();
    $search[] = '{SUBJ}';
    $replace[] = $ticketSubject;
    $search[] = '{TO_NAME}';
    $replace[] = $toname;
    $search[] = '{FROM_NAME}';
    $replace[] = $fromname;
    $search[] = '{PRIORITY}';
    $replace[] = $priority;
    $subject = str_replace($search, $replace, $subject);
    $message = str_replace($search, $replace, $message);
    $message = html_entity_decode($message, ENT_QUOTES, 'UTF-8');
    $headers = "From: {$from}\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= 'X-Mailer: i-MSCP Mailer';
    $mail_result = mail($to, encode_mime_header($subject), $message, $headers);
    $mail_status = $mail_result ? 'OK' : 'NOT OK';
    $toname = tohtml($toname);
    $fromname = tohtml($fromname);
    write_log(sprintf('%s send ticket To: %s, From: %s, Status: %s.', $_SESSION['user_logged'], $toname . ': ' . $toEmail, $fromname . ': ' . $fromEmail, $mail_status), E_USER_NOTICE);
}