public function department($id, $msg, $object = false) { $DEPT = mswGetTableData('departments', 'id', $id); if ($object) { return $DEPT; } return isset($DEPT->name) ? mswCleanData($DEPT->name) : $msg; }
public function getLastReply($id) { $q = mysql_query("SELECT `ts`,`staffID` FROM `" . DB_PREFIX . "mailreplies`\n WHERE `mailID` = '{$id}'\n\t\tORDER BY `id` DESC\n\t\t") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); $R = mysql_fetch_object($q); if (isset($R->ts)) { $A = mswGetTableData('users', 'id', $R->staffID); $info = array(isset($A->name) ? $A->name : 'N/A', $R->ts); return $info; } return array('0', '0'); }
if ($T->ticketStatus == 'close' && isset($_GET['lk'])) { $rows = $MSTICKET->openclose($T->id); // History if affected rows.. if ($rows > 0) { $MSTICKET->historyLog($T->id, str_replace('{user}', mswSpecialChars($LI_ACC->name), $msg_ticket_history['vis-ticket-open'])); $T = mswGetTableData('tickets', 'id', $T->id); $ticketSystemMsg = $msg_public_ticket14; } } // Close.. if ($T->ticketStatus != 'close' && isset($_GET['cl'])) { $rows = $MSTICKET->openclose($T->id, 'close'); // History if affected rows.. if ($rows > 0) { $MSTICKET->historyLog($T->id, str_replace('{user}', mswSpecialChars($LI_ACC->name), $msg_ticket_history['vis-ticket-close'])); $T = mswGetTableData('tickets', 'id', $T->id); $ticketSystemMsg = $msg_public_ticket13; } } // Add reply.. if (isset($_POST['process'])) { define('T_PERMS', 't'); include PATH . 'control/system/accounts/account-ticket-reply.php'; } // Is IP blank? if ($T->ipAddresses == '' && $T->visitorID == $LI_ACC->id) { $MSTICKET->updateIP($T->id); $T->ipAddresses = mswIPAddresses(); } // Variables.. $title = str_replace('{ticket}', mswTicketNumber($_GET['t']), $msg_showticket4);
<?php if (!defined('PARENT')) { exit; } if (isset($_GET['edit'])) { $_GET['edit'] = (int) $_GET['edit']; $EDIT = mswGetTableData('responses', 'id', $_GET['edit']); checkIsValid($EDIT); $deptArr = $EDIT->departments != '0' ? explode(',', $EDIT->departments) : array(); } ?> <div class="content"> <div class="header"> <h1 class="page-title"><?php echo isset($_GET['edit']) ? $msg_response13 : $msg_adheader53; ?> </h1> <span class="clearfix"></span> </div> <ul class="breadcrumb"> <li><?php echo $msg_adheader13; ?> <span class="divider">/</span></li> <li class="active"><?php
// Add users.. if (isset($_POST['add']) && isset($_GET['disputeUsers'])) { $count = 0; $tickID = (int) $_GET['disputeUsers']; $TICKET = mswGetTableData('tickets', 'id', $tickID); $USER = mswGetTableData('portal', 'id', $TICKET->visitorID); $new = array(); if (!empty($_POST['name']) && $tickID > 0 && isset($TICKET->id) && isset($USER->id)) { // Batch loop visitors to be added..nuke duplicate emails.. foreach (array_keys($_POST['email']) as $k) { $name = $_POST['name'][$k]; $email = $_POST['email'][$k]; $send = isset($_POST['send'][$k]) ? 'yes' : 'no'; $priv = isset($_POST['priv'][$k]) ? 'yes' : 'no'; if ($name && mswIsValidEmail($email)) { $PORTAL = mswGetTableData('portal', 'email', $email); // Does visitor exists? If not, add account.. if (isset($PORTAL->id)) { $pass = ''; if ($PORTAL->language && file_exists(LANG_BASE_PATH . $PORTAL->language . '/mail-templates/admin-dispute-user-current.txt')) { $mailT = LANG_BASE_PATH . $PORTAL->language . '/mail-templates/admin-dispute-user-current.txt'; $pLang = $PORTAL->language; } else { $mailT = LANG_PATH . 'admin-dispute-user-current.txt'; } $userID = $PORTAL->id; } else { $pass = $MSPORTAL->ms_generate(); $mailT = LANG_PATH . 'admin-dispute-user-new.txt'; $userID = $MSACC->add(array('name' => $name, 'email' => $email, 'userPass' => $pass, 'enabled' => 'yes', 'timezone' => '', 'ip' => '', 'notes' => '')); $PORTAL = new stdclass();
} // Check digit.. mswCheckDigit($_GET['id'], true); // Add ticket.. if (isset($_POST['process'])) { $MSTICKET->updateTicketReply($msg_ticket_history['reply-edit']); $OK = true; } // Get reply.. $REPLY = mswGetTableData('replies', 'id', $_GET['id']); // Checks.. if (!isset($REPLY->id)) { $HEADERS->err404(true); } // Get ticket data.. $SUPTICK = mswGetTableData('tickets', 'id', $REPLY->ticketID); // Checks.. if (!isset($SUPTICK->id)) { $HEADERS->err403(true); } // Department check.. if (mswDeptPerms($MSTEAM->id, $SUPTICK->department, $userDeptAccess) == 'fail') { $HEADERS->err403(true); } $title = $msg_viewticket36; $loadJQAPI = true; $loadBBCSS = true; $loadJQAlertify = true; include PATH . 'templates/header.php'; include PATH . 'templates/system/tickets/tickets-edit-reply.php'; include PATH . 'templates/footer.php';
include PATH . 'templates/system/tickets/view/attachments.php'; } // Replies.. $reps = 0; $q_replies = mysql_query("SELECT * FROM `" . DB_PREFIX . "replies`\n WHERE `ticketID` = '{$_GET['id']}'\n ORDER BY `id`\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); while ($REPLIES = mysql_fetch_object($q_replies)) { switch ($REPLIES->replyType) { case 'admin': $USER = mswGetTableData('users', 'id', $REPLIES->replyUser); $replyName = isset($USER->name) ? mswSpecialChars($USER->name) : 'N/A'; $label = ' label-important'; $icon = '<i class="icon-user"></i> '; break; case 'visitor': if ($REPLIES->disputeUser > 0) { $DU = mswGetTableData('portal', 'id', $REPLIES->disputeUser, '', '`name`'); $replyName = isset($DU->name) ? mswSpecialChars($DU->name) : 'N/A'; } else { $replyName = mswSpecialChars($SUPTICK->name); } $label = ' label-info'; $icon = ''; break; } ?> <div class="block reptype<?php echo $REPLIES->replyType; ?> " id="reply-<?php echo $REPLIES->id; ?>
} // Check digit.. mswCheckDigit($_GET['id'], true); // Get ticket data.. $SUPTICK = mswGetTableData('tickets', 'id', $_GET['id']); // Checks.. if (!isset($SUPTICK->id)) { $HEADERS->err404(true); exit; } // Department check.. if (mswDeptPerms($MSTEAM->id, $SUPTICK->department, $userDeptAccess) == 'fail') { $HEADERS->err403(true); } // Edit.. if (isset($_POST['process'])) { $rows = $MSTICKET->updateTicket(); // Log if affected rows.. if ($rows > 0) { $MSTICKET->historyLog($_GET['id'], str_replace(array('{user}'), array($MSTEAM->name), $msg_ticket_history['edit-ticket'])); } $SUPTICK = mswGetTableData('tickets', 'id', $_GET['id']); $OK = true; } $title = str_replace('{ticket}', mswTicketNumber($SUPTICK->id), $msg_viewticket20); $loadJQAPI = true; $loadBBCSS = true; $loadJQAlertify = true; include PATH . 'templates/header.php'; include PATH . 'templates/system/tickets/tickets-edit.php'; include PATH . 'templates/footer.php';
<?php if (!defined('PARENT')) { exit; } if (isset($_GET['edit'])) { $_GET['edit'] = (int) $_GET['edit']; $EDIT = mswGetTableData('categories', 'id', $_GET['edit']); checkIsValid($EDIT); } ?> <div class="content"> <div class="header"> <h1 class="page-title"><?php echo isset($EDIT->id) ? $msg_kbasecats5 : $msg_kbase16; ?> </h1> <span class="clearfix"></span> </div> <ul class="breadcrumb"> <li><?php echo $msg_adheader17; ?> <span class="divider">/</span></li> <li class="active"><?php echo isset($EDIT->id) ? $msg_kbasecats5 : $msg_kbase16;
$MSMAIL->addTag('{ATTACHMENTS}', !empty($attString) ? implode(mswDefineNewline(), $attString) : 'N/A'); $MSMAIL->addTag('{NAME}', $PORTAL->name); $MSMAIL->addTag('{MERGED_TICKET}', $ret[0] == 'yes' ? mswTicketNumber($_GET['id']) : ''); $MSMAIL->addTag('{TICKET}', mswTicketNumber($TICKET->id)); $MSMAIL->addTag('{SUBJECT}', $TICKET->subject); $MSMAIL->addTag('{DEPT}', $MSYS->department($TICKET->department, $msg_script30)); $MSMAIL->addTag('{PRIORITY}', $MSYS->levels($TICKET->priority)); $MSMAIL->addTag('{STATUS}', $MSYS->status($TICKET->ticketStatus)); $MSMAIL->addTag('{USER}', $MSTEAM->nameFrom ? $MSTEAM->nameFrom : $MSTEAM->name); $MSMAIL->addTag('{CUSTOM}', $MSCFMAN->email($ret[1], $ret[3])); $MSMAIL->addTag('{ID}', $TICKET->id); // Pass ticket number as custom mail header.. $MSMAIL->xheaders['X-TicketNo'] = mswTicketNumber($TICKET->id); // If this ticket was opened by imap, the return address should be the imap address.. if ($TICKET->source == 'imap') { $IDEPT = mswGetTableData('imap', 'im_dept', $TICKET->department, '', '`im_email`'); if (isset($IDEPT->im_email) && $IDEPT->im_email) { $replyToAddr = $IDEPT->im_email; } } // What mail templates are we using.. switch ($isDispute) { case 'yes': if ($PORTAL->language && file_exists(LANG_BASE_PATH . $PORTAL->language . '/mail-templates/admin-dispute-reply.txt')) { $mailT = LANG_BASE_PATH . $PORTAL->language . '/mail-templates/admin-dispute-reply.txt'; $pLang = $PORTAL->language; } else { $mailT = LANG_PATH . 'admin-dispute-reply.txt'; } break; default:
if (!defined('PARENT') || !isset($_GET['a']) || !defined('MS_PERMISSIONS') || $SETTINGS->kbase == 'no') { $HEADERS->err403(); } // Security check.. mswCheckDigit($_GET['a']); $QUE = mswGetTableData('faq', 'id', (int) $_GET['a'], 'AND `enFaq` = \'yes\'', '*'); if (!isset($QUE->question)) { $HEADERS->err404(); } // Variables.. $title = $QUE->question . ' - ' . $msg_adheader17; $subt = $msg_header8; $cky = array(); // Check for category/search params.. if (isset($_GET['c']) && (int) $_GET['c'] > 0) { $CAT = mswGetTableData('categories', 'id', (int) $_GET['c'], 'AND `enCat` = \'yes\'', '`name`,`subcat`'); if (isset($CAT->name)) { if (isset($CAT->subcat) && $CAT->subcat > 0) { define('IS_SUB', $CAT->subcat); } $subt = $msg_header8 . ': ' . $CAT->name; } } else { if (isset($_GET['q'])) { $subt = $msg_header8 . ': ' . $msg_pkbase3; } } // Header.. include PATH . 'control/header.php'; // Cookie set.. if (isset($_COOKIE[md5(SECRET_KEY) . COOKIE_NAME])) {
if ($A->verified == 'yes') { $message = $msg_public_create9; } else { // Load mail params include PATH . 'control/mail-data.php'; // Activate.. $pass = $MSACC->ms_generate(); $rows = $MSACC->activate(array('id' => $A->id, 'pass' => $pass)); if ($rows > 0) { $MSMAIL->addTag('{NAME}', $A->name); $MSMAIL->addTag('{EMAIL}', $A->email); $MSMAIL->addTag('{PASS}', $pass); $MSMAIL->addTag('{LOGIN_URL}', $SETTINGS->scriptpath); $MSMAIL->sendMSMail(array('from_email' => $SETTINGS->email, 'from_name' => $SETTINGS->website, 'to_email' => $A->email, 'to_name' => $A->name, 'subject' => str_replace(array('{website}'), array($SETTINGS->website), $emailSubjects['acc-verified']), 'replyto' => array('name' => $SETTINGS->website, 'email' => $SETTINGS->replyto ? $SETTINGS->replyto : $SETTINGS->email), 'template' => PATH . 'content/language/' . $SETTINGS->language . '/mail-templates/account-verified.txt', 'language' => $SETTINGS->language)); // Admin notification.. $ADMIN = mswGetTableData('users', 'id', 1); if ($SETTINGS->newAccNotify == 'yes' && $ADMIN->notify == 'yes') { $MSMAIL->addTag('{IP}', mswIPAddresses()); $MSMAIL->sendMSMail(array('from_email' => $SETTINGS->email, 'from_name' => $SETTINGS->website, 'to_email' => $SETTINGS->email, 'to_name' => $SETTINGS->website, 'subject' => str_replace(array('{website}'), array($SETTINGS->website), $emailSubjects['new-acc-notify']), 'replyto' => array('name' => $A->name, 'email' => $A->email), 'template' => PATH . 'content/language/' . $SETTINGS->language . '/mail-templates/new-account-notification.txt', 'language' => $SETTINGS->language, 'add-emails' => $ADMIN->email2)); } } $message = str_replace('{email}', $A->email, $msg_public_create10); } } // Show message.. $title = $msg_public_create7; include PATH . 'control/header.php'; $tpl = new Savant3(); $tpl->assign('TXT', array($msg_public_create7, $msg_public_create, $message)); // Global vars.. include PATH . 'control/lib/global.php';
// Send message to support staff if manual assign is off for department.. // This doesn`t include the global user.. if ($DP->manual_assign == 'no') { $MSAPI->log('[' . strtoupper($MSAPI->handler) . '] Preparing to send emails to staff..'); $qU = mysql_query("SELECT `" . DB_PREFIX . "users`.`name` AS `teamName`,`email`,`email2` FROM `" . DB_PREFIX . "userdepts`\n LEFT JOIN `" . DB_PREFIX . "departments`\n ON `" . DB_PREFIX . "userdepts`.`deptID` = `" . DB_PREFIX . "departments`.`id`\n LEFT JOIN `" . DB_PREFIX . "users`\n ON `" . DB_PREFIX . "userdepts`.`userID` = `" . DB_PREFIX . "users`.`id`\n WHERE `deptID` = '{$deptID}'\n AND `userID` != '1'\n AND `notify` = 'yes'\n GROUP BY `email`\n\t\t\t\t ORDER BY `" . DB_PREFIX . "users`.`name`\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); while ($STAFF = mysql_fetch_object($qU)) { $MSMAIL->addTag('{NAME}', $STAFF->teamName); $MSMAIL->sendMSMail(array('from_email' => $SETTINGS->email, 'from_name' => $SETTINGS->website, 'to_email' => $STAFF->email, 'to_name' => $STAFF->teamName, 'subject' => str_replace(array('{website}', '{ticket}'), array($SETTINGS->website, mswTicketNumber($ID)), $emailSubjects['new-ticket']), 'replyto' => array('name' => $SETTINGS->website, 'email' => $SETTINGS->replyto ? $SETTINGS->replyto : $SETTINGS->email), 'template' => PATH . 'content/language/' . $SETTINGS->language . '/mail-templates/new-ticket-staff.txt', 'language' => $SETTINGS->language, 'alive' => 'yes', 'add-emails' => $STAFF->email2)); $MSAPI->log('[' . strtoupper($MSAPI->handler) . '] Email sent to ' . $STAFF->teamName . ' <' . $STAFF->email . '>'); } } else { $MSAPI->log('[' . strtoupper($MSAPI->handler) . '] No emails sent to staff as ticket is awaiting assignment'); } // Now send to global user.. $MSAPI->log('[' . strtoupper($MSAPI->handler) . '] Preparing to send to global admin staff member..'); $GLOBAL = mswGetTableData('users', 'id', 1, 'AND `notify` = \'yes\'', '`name`,`email`,`email2`'); if (isset($GLOBAL->name)) { $MSMAIL->addTag('{NAME}', $GLOBAL->name); $MSMAIL->sendMSMail(array('from_email' => $SETTINGS->email, 'from_name' => $SETTINGS->website, 'to_email' => $GLOBAL->email, 'to_name' => $GLOBAL->name, 'subject' => str_replace(array('{website}', '{ticket}'), array($SETTINGS->website, mswTicketNumber($ID)), $emailSubjects['new-ticket']), 'replyto' => array('name' => $SETTINGS->website, 'email' => $SETTINGS->replyto ? $SETTINGS->replyto : $SETTINGS->email), 'template' => PATH . 'content/language/' . $SETTINGS->language . '/mail-templates/new-ticket-admin.txt', 'language' => $SETTINGS->language, 'alive' => 'yes', 'add-emails' => $GLOBAL->email2)); $MSAPI->log('[' . strtoupper($MSAPI->handler) . '] Email sent to ' . $GLOBAL->name . ' <' . $GLOBAL->email . '>'); } else { $MSAPI->log('[' . strtoupper($MSAPI->handler) . '] Not sent, notifications are disabled. Enable in settings'); } // Send email to visitor.. $MSAPI->log('[' . strtoupper($MSAPI->handler) . '] Preparing to send new ticket confirmation to visitor..'); $MSMAIL->addTag('{NAME}', $name); $MSMAIL->sendMSMail(array('from_email' => $SETTINGS->email, 'from_name' => $SETTINGS->website, 'to_email' => $email, 'to_name' => $name, 'subject' => str_replace(array('{website}', '{ticket}'), array($SETTINGS->website, mswTicketNumber($ID)), $emailSubjects['new-ticket-vis']), 'replyto' => array('name' => $SETTINGS->website, 'email' => $SETTINGS->replyto ? $SETTINGS->replyto : $SETTINGS->email), 'template' => $mailR, 'language' => $pLang ? $pLang : $SETTINGS->language)); $MSAPI->log('[' . strtoupper($MSAPI->handler) . '] Email sent to ' . $name . ' <' . $email . '>'); } else { $MSAPI->log('[' . strtoupper($MSAPI->handler) . '] Fatal error: Ticket could not be created: ' . mysql_error()); }
if (isset($USR->name) && $USR->notify == 'yes') { $MSMAIL->addTag('{NAME}', $USR->name); $MSMAIL->addTag('{SENDER}', $MSTEAM->name); // Send mail.. $MSMAIL->sendMSMail(array('from_email' => $SETTINGS->email, 'from_name' => $SETTINGS->website, 'to_email' => $USR->email, 'to_name' => $USR->name, 'subject' => str_replace(array('{website}', '{user}'), array($SETTINGS->website, $MSTEAM->name), $emailSubjects['mailbox-notify']), 'replyto' => array('name' => $SETTINGS->website, 'email' => $SETTINGS->replyto ? $SETTINGS->replyto : $SETTINGS->email), 'template' => LANG_PATH . 'mailbox-notification.txt', 'language' => $SETTINGS->language, 'add-emails' => $USR->email2)); } } } $OK = true; } // Add reply.. if (isset($_POST['add-reply']) && $_POST['message'] && $MID > 0) { // Get other person in message.. $OT = mswGetTableData('mailassoc', 'mailID', $MID, 'AND `staffID` != \'' . $MSTEAM->id . '\''); if (isset($OT->staffID)) { $id = $MSMB->reply(array('staff' => $MSTEAM->id, 'to' => $OT->staffID, 'id' => $MID, 'message' => $_POST['message'])); // Proceed if added ok.. // Are we sending notification to staff mailbox? if ($id > 0 && $MSTEAM->mailCopy == 'yes') { $USR = mswGetTableData('users', 'id', $OT->staffID, '', '`name`,`email`,`email2`,`notify`'); if (isset($USR->name) && $USR->notify == 'yes') { $MSMAIL->addTag('{NAME}', $USR->name); $MSMAIL->addTag('{SENDER}', $MSTEAM->name); $MSMAIL->addTag('{TOPIC}', $_POST['subject']); // Send mail.. $MSMAIL->sendMSMail(array('from_email' => $SETTINGS->email, 'from_name' => $SETTINGS->website, 'to_email' => $USR->email, 'to_name' => $USR->name, 'subject' => str_replace(array('{website}', '{user}'), array($SETTINGS->website, $MSTEAM->name), $emailSubjects['mailbox-notify']), 'replyto' => array('name' => $SETTINGS->website, 'email' => $SETTINGS->replyto ? $SETTINGS->replyto : $SETTINGS->email), 'template' => LANG_PATH . 'mailbox-notification-reply.txt', 'language' => $SETTINGS->language, 'add-emails' => $USR->email2)); } } } $OK2 = true; }
public function getLastReply($id) { $q = mysql_query("SELECT `ts`,`replyType`,`replyUser`,`disputeUser` FROM `" . DB_PREFIX . "replies`\n WHERE `ticketID` = '{$id}'\n\t\tORDER BY `id` DESC\n\t\tLIMIT 1\n\t\t") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); $R = mysql_fetch_object($q); if (isset($R->ts)) { switch ($R->replyType) { case 'admin': $A = mswGetTableData('users', 'id', $R->replyUser); $info = array(isset($A->name) ? mswSpecialChars($A->name) : 'N/A', $R->ts, $R->replyType); break; case 'visitor': if ($R->disputeUser > 0) { $U = mswGetTableData('portal', 'id', $R->disputeUser, '', '`name`'); $info = array(isset($U->name) ? mswSpecialChars($U->name) : 'N/A', $R->ts, $R->replyType); } else { $U = mswGetTableData('portal', 'id', $R->replyUser, '', '`name`'); $info = array(isset($U->name) ? mswSpecialChars($U->name) : 'N/A', $R->ts, $R->replyType); } break; } return $info; } return array('0', '0', ''); }
echo mswActionCompleted(str_replace('{count}', $cnt, $msg_mailbox26)); } // Move.. if (isset($OK3)) { switch ($_POST['moveto']) { case 'inbox': $movedTo = $msg_mailbox; break; case 'outbox': $movedTo = $msg_mailbox2; break; case 'bin': $movedTo = $msg_mailbox3; break; default: $F = mswGetTableData('mailfolders', 'id', (int) $_POST['moveto'], 'AND `staffID` = \'' . $MSTEAM->id . '\''); $movedTo = isset($F->folder) ? mswCleanData($F->folder) : 'N/A'; break; } echo mswActionCompleted(str_replace(array('{count}', '{folder}'), array($cnt, $movedTo), $msg_mailbox27)); } // Delete.. if (isset($OK4)) { echo mswActionCompleted(str_replace('{count}', $cnt, $msg_mailbox28)); } // Clear.. if (isset($OK5)) { echo mswActionCompleted($msg_mailbox29); } ?>
<?php if (!defined('PARENT')) { exit; } $_GET['id'] = (int) $_GET['id']; $USER = mswGetTableData('users', 'id', $_GET['id']); checkIsValid($USER); // For graphs.. $dateRange = '-6 months'; $colors = array('#c8c8cb', '#65718a'); $from = isset($_GET['from']) && $MSDT->mswDatePickerFormat($_GET['from']) != '0000-00-00' ? $_GET['from'] : $MSDT->mswConvertMySQLDate(date('Y-m-d', strtotime($dateRange, $MSDT->mswTimeStamp()))); $to = isset($_GET['to']) && $MSDT->mswDatePickerFormat($_GET['to']) != '0000-00-00' ? $_GET['to'] : $MSDT->mswConvertMySQLDate(date('Y-m-d', $MSDT->mswTimeStamp())); include PATH . 'control/classes/class.graphs.php'; $MSGRAPH = new graphs(); $MSGRAPH->settings = $SETTINGS; $MSGRAPH->datetime = $MSDT; $MSGRAPH->range = array($from, $to); $buildGraph = $MSGRAPH->graph('responses'); ?> <div class="content"> <script type="text/javascript"> //<![CDATA[ <?php include PATH . 'templates/date-pickers.php'; ?> function searchToggle() { jQuery('#b1').toggle(); if (jQuery('#b1').css('display')!='none') { jQuery('input[name="q"]').focus(); jQuery('#search-icon-button').attr('class','icon-remove');
} // Group and send single email.. if (!empty($subjects[$V->visitorID]) && $SETTINGS->autoCloseMail == 'yes') { $ticketData = array(); foreach ($subjects[$V->visitorID] as $values) { $ticket = $values[0]; $dispute = $values[1]; $dept = $values[2]; $source = $values[3]; $data = $values[4]; // Check if this ticket was originally opened by imap.. // If it was, set the reply-to address as the imap address.. // This is so any replies sent go back to the ticket.. $replyToAddr = ''; if ($source == 'imap') { $IMD = mswGetTableData('imap', 'im_dept', $dept); if (isset($IMD->im_email) && $IMD->im_email) { $replyToAddr = $IMD->im_email; } } // Is this a dispute? // If so, send notification to other users in dispute.. if ($SETTINGS->disputes == 'yes' && $dispute == 'yes') { // Get all users in this dispute.. $ticketDisputeUsers = $MSTICKET->disputeUsers($ticket); if (!empty($ticketDisputeUsers)) { $MSMAIL->addTag('{ID}', $ticket); $MSMAIL->addTag('{TICKET}', rtrim($data)); $qDU = mysql_query("SELECT `name`,`email`,`language` FROM `" . DB_PREFIX . "portal`\n WHERE `id` IN(" . implode(',', $ticketDisputeUsers) . ")\n\t\t\t\t GROUP BY `email`\n ORDER BY `name`\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); while ($D_USR = mysql_fetch_object($qDU)) { $pLang = '';
<?php if (!defined('PARENT')) { exit; } $B8_CFG = mswGetTableData('imap_b8', 'id', '1'); ?> <div class="content"> <script type="text/javascript"> //<![CDATA[ function showResetDays(check) { jQuery('input[name="reset_days"]').prop('disabled',(!check ? true : false)); } //]]> </script> <div class="header"> <h1 class="page-title"><?php echo $msg_adheader62; ?> </h1> <span class="clearfix"></span> </div> <ul class="breadcrumb"> <li><?php echo $msg_adheader24; ?> <span class="divider">/</span></li>
<?php if (!defined('PARENT')) { exit; } if (isset($_GET['edit'])) { $_GET['edit'] = (int) $_GET['edit']; $EDIT = mswGetTableData('departments', 'id', $_GET['edit']); checkIsValid($EDIT); } ?> <div class="content"> <div class="header"> <h1 class="page-title"><?php echo isset($EDIT->id) ? $msg_dept5 : $msg_dept2; ?> </h1> <span class="clearfix"></span> </div> <ul class="breadcrumb"> <li><a href="index.php"><?php echo $msg_adheader3; ?> </a> <span class="divider">/</span></li> <li class="active"><?php echo isset($EDIT->id) ? $msg_dept5 : $msg_dept2;
<?php if (!defined('PARENT')) { exit; } if (isset($_GET['edit'])) { $_GET['edit'] = (int) $_GET['edit']; $EDIT = mswGetTableData('portal', 'id', $_GET['edit']); checkIsValid($EDIT); } ?> <div class="content"> <div class="header"> <h1 class="page-title"><?php echo isset($EDIT->id) ? $msg_accounts6 : $msg_adheader39; ?> </h1> <span class="clearfix"></span> </div> <ul class="breadcrumb"> <li><?php echo $msg_adheader38; ?> <span class="divider">/</span></li> <li class="active"><?php echo isset($EDIT->id) ? $msg_accounts6 : $msg_adheader39;
// New message.. if (isset($_GET['new'])) { $title = $msg_adheader61 . ' (' . $msg_mailbox4 . ')'; include PATH . 'control/system/mailbox/message.php'; $temp = 'new-message.php'; } // View message.. if (isset($_GET['msg'])) { $MID = (int) $_GET['msg']; // Check permissions.. $perms = $MSMB->perms(); if (empty($perms) || !in_array($MSTEAM->id, $perms)) { $HEADERS->err403(true); } // Load message.. $MMSG = mswGetTableData('mailbox', 'id', $MID); if (!isset($MMSG->id)) { $HEADERS->err404(true); } // Mark as read.. $MSMB->mark('read', $MSTEAM->id, array($MID)); include PATH . 'control/system/mailbox/message.php'; $title = $msg_adheader61 . ' (' . $msg_mailbox7 . ')'; $temp = 'view-message.php'; } // Manage folders.. if (isset($_GET['folders']) && $MSTEAM->mailFolders > 0) { $title = $msg_adheader61 . ' (' . $msg_mailbox6 . ')'; include PATH . 'control/system/mailbox/manage-folders.php'; $temp = 'manage-folders.php'; }
public function addTicketReply() { $tID = (int) $_GET['id']; $array = array('no', $tID, ''); $mergeID = isset($_POST['mergeid']) ? mswReverseTicketNumber($_POST['mergeid']) : '0'; $newID = $mergeID > 0 ? $mergeID : $tID; // Are we merging this ticket.. if ($mergeID > 0) { if (mswRowCount('tickets WHERE `id` = \'' . $mergeID . '\'') > 0) { // Get original ticket and convert it to a reply.. $OTICKET = mswGetTableData('tickets', 'id', $tID); // Get new parent data for department.. $MERGER = mswGetTableData('tickets', 'id', $mergeID); // Account information.. $PORTAL = mswGetTableData('portal', 'id', $MERGER->visitorID); // Add original ticket as reply.. mysql_query("INSERT INTO `" . DB_PREFIX . "replies` (\n `ts`,\n `ticketID`,\n `comments`,\n `replyType`,\n `replyUser`,\n `isMerged`,\n `ipAddresses` \n ) VALUES (\n UNIX_TIMESTAMP(UTC_TIMESTAMP),\n '{$mergeID}',\n '" . mswSafeImportString($OTICKET->comments) . "',\n 'visitor',\n '{$OTICKET->visitorID}',\n 'yes',\n '{$OTICKET->ipAddresses}' \n )") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); // Now remove original ticket mysql_query("DELETE FROM `" . DB_PREFIX . "tickets` WHERE `id` = '{$tID}'") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); // Move any replies attached to original ticket to new parent.. // Update timestamp so they fall in line.. mysql_query("UPDATE `" . DB_PREFIX . "replies` SET\n\t `ts` = UNIX_TIMESTAMP(UTC_TIMESTAMP),\n `ticketID` = '{$mergeID}',\n `isMerged` = 'yes'\n WHERE `ticketID` = '{$tID}'\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); // Move attachments to new ticket id.. mysql_query("UPDATE `" . DB_PREFIX . "attachments` SET\n `ticketID` = '{$mergeID}',\n `department` = '{$MERGER->department}'\n WHERE `ticketID` = '{$tID}'\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); // Move custom field data to new ticket.. mysql_query("UPDATE `" . DB_PREFIX . "ticketfields` SET\n `ticketID` = '{$mergeID}'\n WHERE `ticketID` = '{$tID}'\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); // Remove history for old ticket.. mysql_query("DELETE FROM `" . DB_PREFIX . "tickethistory` WHERE `ticketID` = '{$tID}'") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); // Move any dispute user data to new ticket.. mysql_query("UPDATE `" . DB_PREFIX . "disputes` SET\n `ticketID` = '{$mergeID}'\n WHERE `ticketID` = '{$tID}'\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); // Overwrite array.. $array = array('yes', $mergeID, $OTICKET->subject); } } // Add new reply.. mysql_query("INSERT INTO `" . DB_PREFIX . "replies` (\n `ts`,\n `ticketID`,\n `comments`,\n `replyType`,\n `replyUser`,\n `isMerged`,\n `ipAddresses` \n ) VALUES (\n UNIX_TIMESTAMP(UTC_TIMESTAMP),\n '{$newID}',\n '" . mswSafeImportString($_POST['comments']) . "',\n 'admin',\n '{$this->team->id}',\n 'no',\n '" . mswIPAddresses() . "' \n )") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); $newReply = mysql_insert_id(); // Custom field data.. if (!empty($_POST['customField'])) { // Check to see if any checkboxes arrays are now blank.. // If there are, create empty array to prevent ommission in loop.. if (!empty($_POST['hiddenBoxes'])) { foreach ($_POST['hiddenBoxes'] as $hb) { if (!isset($_POST['customField'][$hb])) { $_POST['customField'][$hb] = array(); } } } foreach ($_POST['customField'] as $k => $v) { $data = ''; // If value is array, its checkboxes.. if (is_array($v)) { if (!empty($v)) { $data = implode('#####', $v); } } else { $data = $v; } $k = (int) $k; // If data exists, update or add entry.. // If blank or 'nothing-selected', delete if exists.. if ($data != '' && $data != 'nothing-selected') { if (mswRowCount('ticketfields WHERE `ticketID` = \'' . $newID . '\' AND `fieldID` = \'' . $k . '\' AND `replyID` = \'' . $newReply . '\'') > 0) { mysql_query("UPDATE `" . DB_PREFIX . "ticketfields` SET\n `fieldData` = '" . mswSafeImportString($data) . "'\n WHERE `ticketID` = '{$newID}'\n AND `fieldID` = '{$k}'\n AND `replyID` = '{$newReply}'\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); } else { mysql_query("INSERT INTO `" . DB_PREFIX . "ticketfields` (\n `fieldData`,`ticketID`,`fieldID`,`replyID`\n ) VALUES (\n '" . mswSafeImportString($data) . "','{$newID}','{$k}','{$newReply}'\n )") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); } } else { mysql_query("DELETE FROM `" . DB_PREFIX . "ticketfields`\n WHERE `ticketID` = '{$newID}'\n AND `fieldID` = '{$k}'\n AND `replyID` = '{$newReply}'\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); if (mswRowCount('ticketfields') == 0) { @mysql_query("TRUNCATE TABLE `" . DB_PREFIX . "ticketfields`"); } } } } // Update ticket status.. $status = in_array($_POST['status'], array('close', 'open', 'closed', 'submit_report')) ? $_POST['status'] : 'open'; mysql_query("UPDATE `" . DB_PREFIX . "tickets` SET\n `lastrevision` = UNIX_TIMESTAMP(UTC_TIMESTAMP),\n `ticketStatus` = '{$status}',\n `replyStatus` = 'visitor'\n WHERE `id` = '{$newID}'\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); // If specified, add reply as standard response.. if ($_POST['response']) { // Add response.. $dept = empty($_POST['dept']) ? implode(',', $_POST['deptall']) : implode(',', $_POST['dept']); mysql_query("INSERT INTO `" . DB_PREFIX . "responses` (\n `ts`,\n `title`,\n `answer`,\n `departments`\n ) VALUES (\n UNIX_TIMESTAMP(UTC_TIMESTAMP),\n '" . mswSafeImportString($_POST['response']) . "',\n '" . mswSafeImportString($_POST['comments']) . "',\n '" . mswSafeImportString($dept) . "'\n )") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); // Rebuild sequence.. include_once PATH . 'control/classes/class.responses.php'; $MSSTR = new standardResponses(); $MSSTR->rebuildSequence(); } $array[] = $newReply; return $array; }
case 'login': $redr = 'index.php?p=dashboard'; // If login limit and ban time is enabled, check first.. if ($SETTINGS->loginLimit > 0) { $ban = $MSACC->checkban($SETTINGS, $MSDT); if ($ban == 'fail') { $json = array('status' => 'err', 'field' => 'email', 'msg' => $msg_public_login4); } } if (!isset($json['status']) && isset($_POST['email'], $_POST['pass']) && $_POST['email'] && $_POST['pass']) { // Check for valid e-mail.. if (!mswIsValidEmail($_POST['email'])) { $json = array('status' => 'err', 'field' => 'email', 'msg' => $msg_main13); } else { // Now check account.. $ACC = mswGetTableData('portal', 'email', mswSafeImportString($_POST['email']), 'AND `userPass` = \'' . md5(SECRET_KEY . $_POST['pass']) . '\' AND `verified` = \'yes\''); if (isset($ACC->email)) { // Check access.. if ($ACC->enabled == 'yes') { $_SESSION[md5(SECRET_KEY) . '_msw_support'] = $ACC->email; // Ticket/dispute redirection.. if (isset($_SESSION['ticketAccessID']) && (int) $_SESSION['ticketAccessID'] > 0) { $redr = 'index.php?t=' . $_SESSION['ticketAccessID']; unset($_SESSION['ticketAccessID']); } if (isset($_SESSION['disputeAccessID']) && (int) $_SESSION['disputeAccessID'] > 0) { $redr = 'index.php?d=' . $_SESSION['disputeAccessID']; unset($_SESSION['disputeAccessID']); } if (isset($_SESSION['redirectPage'])) { $redr = 'index.php?p=open';
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ This File: ticket-open.php Description: System File ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ if (!defined('PARENT')) { $HEADERS->err403(true); } // Access.. if (!in_array($cmd, $userAccess) && $MSTEAM->id != '1') { $HEADERS->err403(true); } // Ticket preview message.. if (isset($_GET['loadTicketMessage']) && (int) $_GET['loadTicketMessage'] > 0) { $T = mswGetTableData('tickets', 'id', mswSafeImportString($_GET['loadTicketMessage'])); echo $MSPARSER->mswTxtParsingEngine($T->comments); exit; } // Department check for filter.. if (isset($_GET['dept'])) { if (mswDeptPerms($MSTEAM->id, $_GET['dept'], $userDeptAccess) == 'fail') { $HEADERS->err403(true); } } // Call relevant classes.. include_once REL_PATH . 'control/classes/class.tickets.php'; $MSPTICKETS = new tickets(); $MSPTICKETS->settings = $SETTINGS; $MSPTICKETS->datetime = $MSDT; $title = $msg_adheader5;
$json = array('ok'); if (USER_DEL_PRIV == 'yes') { $MSTICKET->deleteTicketHistory(); $json = array('resp' => 'ok', 'text' => $msg_viewticket111); } break; //=========================== // Load standard response.. //=========================== //=========================== // Load standard response.. //=========================== case 'response': $json = array('ok'); if (isset($_GET['getResponse'])) { $SR = mswGetTableData('responses', 'id', (int) $_GET['getResponse']); $json = array('response' => isset($SR->answer) ? mswCleanData($SR->answer) : ' '); } break; //=========================== // Add ticket custom fields //=========================== //=========================== // Add ticket custom fields //=========================== case 'add-cus-field': $fields = ''; $dept = (int) $_GET['dept']; $area = !isset($_GET['area']) ? 'ticket' : (in_array($_GET['area'], array('ticket', 'reply', 'admin')) ? $_GET['area'] : 'ticket'); // Custom fields.. $qF = mysql_query("SELECT * FROM `" . DB_PREFIX . "cusfields`\n WHERE FIND_IN_SET('{$area}',`fieldLoc`) > 0\n AND `enField` = 'yes'\n\t\tAND FIND_IN_SET('{$dept}',`departments`) > 0\n ORDER BY `orderBy`\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__));
include REL_PATH . 'control/mail-data.php'; // Delete.. if (isset($_POST['delete']) && USER_DEL_PRIV == 'yes') { $_POST['ticket'] = $_POST['id']; $MSTICKET->deleteTickets(); $OK1 = true; } // Assign.. if (isset($_POST['users'])) { if (!empty($_POST['id'])) { $userNotify = array(); $tickets = array(); foreach ($_POST['id'] as $ID) { if (!empty($_POST['users'][$ID])) { // Ticket information.. $SUPTICK = mswGetTableData('tickets', 'id', $ID); // Array of ticket subjects assigned to users.. foreach ($_POST['users'][$ID] as $userID) { $tickets[$userID][] = str_replace(array('{id}', '{subject}'), array(mswTicketNumber($ID), $SUPTICK->subject), $msg_assign7); $userNotify[] = $userID; } // Update ticket.. $MSTICKET->ticketUserAssign($ID, implode(',', $_POST['users'][$ID]), $msg_ticket_history['assign']); } } } // Email users.. if (!empty($userNotify) && !empty($tickets) && isset($_POST['mail'])) { $q = mysql_query("SELECT `id`,`name`,`email`,`email2` FROM `" . DB_PREFIX . "users`\n WHERE `id` IN(" . implode(',', $userNotify) . ")\n\t\t\t GROUP BY `id`\n ORDER BY `name`\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); while ($USERS = mysql_fetch_object($q)) { $MSMAIL->addTag('{ASSIGNEE}', $MSTEAM->name);
// Now send to global user if ticket assign is off.. if ($T->assignedto == '') { $GLOBAL = mswGetTableData('users', 'id', 1, 'AND `notify` = \'yes\'', '`name`,`email`,`email2`'); if (isset($GLOBAL->name)) { $MSMAIL->addTag('{NAME}', $GLOBAL->name); $MSMAIL->sendMSMail(array('from_email' => $SETTINGS->email, 'from_name' => $SETTINGS->website, 'to_email' => $GLOBAL->email, 'to_name' => $GLOBAL->name, 'subject' => str_replace(array('{website}', '{ticket}'), array($SETTINGS->website, mswTicketNumber($T->id)), $emailSubjects['reply-notify']), 'replyto' => array('name' => $SETTINGS->website, 'email' => $SETTINGS->replyto ? $SETTINGS->replyto : $SETTINGS->email), 'template' => PATH . 'content/language/' . $SETTINGS->language . '/mail-templates/ticket-reply.txt', 'language' => $SETTINGS->language, 'alive' => 'yes', 'add-emails' => $GLOBAL->email2)); } } } // If this ticket is a dispute, send notification to relevant users.. if ($T->isDisputed == 'yes') { // Check if this ticket was originally opened by imap.. // If it was, set the reply-to address as the imap address.. // This is so any replies sent go back to the ticket.. if ($T->source == 'imap') { $IMD = mswGetTableData('imap', 'im_dept', $T->department); if (isset($IMD->im_email) && $IMD->im_email) { $replyToAddr = $IMD->im_email; } } // Get all users in this dispute.. $ticketDisputeUsers = $MSTICKET->disputeUsers($T->id); // Add original ticket starter to the mix.. array_push($ticketDisputeUsers, $T->visitorID); // Send, but skip person currently logged in.. if (!empty($ticketDisputeUsers)) { $qDU = mysql_query("SELECT `name`,`email`,`language` FROM `" . DB_PREFIX . "portal`\n WHERE `id` IN(" . implode(',', $ticketDisputeUsers) . ")\n\t\t\t\t AND `id` != '{$LI_ACC->id}'\n\t\t\t\t GROUP BY `email`\n ORDER BY `name`\n ") or die(mswMysqlErrMsg(mysql_errno(), mysql_error(), __LINE__, __FILE__)); while ($D_USR = mysql_fetch_object($qDU)) { $pLang = ''; $temp = PATH . 'content/language/' . $SETTINGS->language . '/mail-templates/dispute-reply.txt'; // Get correct language file..
<?php if (!defined('PARENT')) { exit; } $_GET['view'] = (int) $_GET['view']; $KB = mswGetTableData('faq', 'id', $_GET['view']); if (!isset($KB->id)) { exit; } if ($SETTINGS->enableVotes == 'yes') { $yes = $KB->kviews > 0 ? @number_format($KB->kuseful / $KB->kviews * 100, 2) : 0; $no = $KB->kviews > 0 ? @number_format($KB->knotuseful / $KB->kviews * 100, 2) : 0; } ?> <!DOCTYPE html> <html lang="<?php echo isset($html_lang) ? $html_lang : 'en'; ?> " dir="<?php echo $lang_dir; ?> "> <head> <meta charset="<?php echo $msg_charset; ?> "> <title></title> <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<?php if (!defined('PARENT')) { exit; } if (isset($_GET['edit'])) { $_GET['edit'] = (int) $_GET['edit']; $EDIT = mswGetTableData('faqattach', 'id', $_GET['edit']); checkIsValid($EDIT); } ?> <div class="content"> <script type="text/javascript"> //<![CDATA[ function ms_faqBox(type,max) { switch (type) { case 'add': var n = jQuery('#tabArea li').length; if (n<max) { var nextTab = parseInt(n+1); jQuery('div[class="tab-content"]').append('<div class="tab-pane fade" id="tab'+nextTab+'">'+jQuery('div[class="tab-content"] div').html()+'</div>'); jQuery('div[id="tab'+nextTab+'"] input').val(''); jQuery('#tabArea li').last().after('<li><a href="#tab'+nextTab+'" data-toggle="tab"><i class="icon-paperclip"></i> '+nextTab+'</a></li>'); jQuery('#mc_countVal').html('('+nextTab+')'); jQuery('#tabArea a[href="#tab'+nextTab+'"]').tab('show'); } break; case 'remove': var n = jQuery('#tabArea li').length; if (n>1) { var lastTab = parseInt(n-1);