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);
Exemple #4
0
<?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';
Exemple #7
0
    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;
    ?>
Exemple #8
0
}
// 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';
Exemple #9
0
<?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;
Exemple #10
0
 $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:
Exemple #11
0
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());
 }
Exemple #14
0
            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);
}
?>
Exemple #17
0
<?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 = '';
Exemple #19
0
<?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>
Exemple #20
0
<?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;
Exemple #21
0
<?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;
Exemple #22
0
// 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;
 }
Exemple #24
0
 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';
Exemple #25
0
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  
  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;
Exemple #26
0
     $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) : '&nbsp;');
     }
     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..
Exemple #29
0
<?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);