diff --git a/admin/admin_main.php b/admin/admin_main.php index 48dd7605..c6a2feb9 100644 --- a/admin/admin_main.php +++ b/admin/admin_main.php @@ -1,42 +1,40 @@ install folder from your server for security reasons then refresh this page!');} +if (is_dir(HESK_PATH . 'install')) { + die('Please delete the install folder from your server for security reasons then refresh this page!'); +} /* Get all the required files and functions */ require(HESK_PATH . 'hesk_settings.inc.php'); @@ -49,8 +47,8 @@ hesk_session_start(); hesk_dbConnect(); hesk_isLoggedIn(); -define('CALENDAR',1); -define('MAIN_PAGE',1); +define('CALENDAR', 1); +define('MAIN_PAGE', 1); /* Print header */ require_once(HESK_PATH . 'inc/headerAdmin.inc.php'); @@ -61,46 +59,40 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
-
-

'.$hesklang['open_tickets'].' '.$hesklang['nti'].'

+

' . $hesklang['open_tickets'] . ' ' . $hesklang['nti'] . '

'; // The rest of the panel will be printed by print_tickets.inc.php - } + } - /* Reset default settings? */ - if ( isset($_GET['reset']) && hesk_token_check() ) - { - $res = hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."users` SET `default_list`='' WHERE `id` = '".intval($_SESSION['id'])."' LIMIT 1"); + /* Reset default settings? */ + if (isset($_GET['reset']) && hesk_token_check()) { + $res = hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` SET `default_list`='' WHERE `id` = '" . intval($_SESSION['id']) . "' LIMIT 1"); $_SESSION['default_list'] = ''; - } - /* Get default settings */ - else - { - parse_str($_SESSION['default_list'],$defaults); - $_GET = isset($_GET) && is_array($_GET) ? array_merge($_GET, $defaults) : $defaults; - } + } /* Get default settings */ + else { + parse_str($_SESSION['default_list'], $defaults); + $_GET = isset($_GET) && is_array($_GET) ? array_merge($_GET, $defaults) : $defaults; + } - /* Print the list of tickets */ - require(HESK_PATH . 'inc/print_tickets.inc.php'); + /* Print the list of tickets */ + require(HESK_PATH . 'inc/print_tickets.inc.php'); echo " 
"; /* Print forms for listing and searching tickets */ - require(HESK_PATH . 'inc/show_search_form.inc.php'); - } - else - { - echo '

'.$hesklang['na_view_tickets'].'

'; + require(HESK_PATH . 'inc/show_search_form.inc.php'); + } else { + echo '

' . $hesklang['na_view_tickets'] . '

'; } $hesk_settings['hesk_license']('HMgPSAxOw0KaWYgKGZpbGVfZXhpc3RzKEhFU0tfUEFUSCAuI @@ -119,24 +111,19 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); F9ub3RpY2UnXS4nXCcpIj4nLiRoZXNrbGFuZ1snc2gnXS4nPC9hPjwvdGQ+PC90cj48L3RhYmxlPjxwP icuJGhlc2tsYW5nWydzdXBwb3J0X3JlbW92ZSddLicuIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmhlc2suY 29tL2J1eS5waHAiIHRhcmdldD0iX2JsYW5rIj4nLiRoZXNrbGFuZ1snY2xpY2tfaW5mbyddLic8L2E+P - C9wPic7DQp9DQo=',"\112"); + C9wPic7DQp9DQo=', "\112"); echo '
 
'; -/* Clean unneeded session variables */ -hesk_cleanSessionVars('hide'); - ?> + /* Clean unneeded session variables */ + hesk_cleanSessionVars('hide'); + ?>
diff --git a/admin/admin_reply_ticket.php b/admin/admin_reply_ticket.php index 7c2805a6..75e6180f 100644 --- a/admin/admin_reply_ticket.php +++ b/admin/admin_reply_ticket.php @@ -1,39 +1,35 @@
'.$hesklang['rssn']; - header('Location: admin_ticket.php?track='.$row['trackid'].'&Refresh='.rand(10000,99999)); - } - else - { + $_SESSION['HESK_MESSAGE'] .= '

' . $hesklang['rssn']; + header('Location: admin_ticket.php?track=' . $row['trackid'] . '&Refresh=' . rand(10000, 99999)); + } else { header('Location: admin_main.php'); } - } - else - { - header('Location: admin_ticket.php?track='.$ticket['trackid'].'&Refresh='.rand(10000,99999)); + } else { + header('Location: admin_ticket.php?track=' . $ticket['trackid'] . '&Refresh=' . rand(10000, 99999)); } exit(); } // Attach signature to the message? - if ( ! $submit_as_customer && ! empty($_POST['signature'])) - { + if (!$submit_as_customer && !empty($_POST['signature'])) { if ($modsForHesk_settings['rich_text_for_tickets']) { $message .= "

" . nl2br($_SESSION['signature']) . "
"; } else { $message .= "\n\n" . addslashes($_SESSION['signature']) . "\n"; } - } + } if (!$modsForHesk_settings['rich_text_for_tickets']) { // Make links clickable @@ -153,192 +135,158 @@ if (strlen($message)) // Turn newlines into
tags $message = nl2br($message); } -} -else -{ +} else { $hesk_error_buffer[] = $hesklang['enter_message']; } /* Attachments */ -if ($hesk_settings['attachments']['use']) -{ +if ($hesk_settings['attachments']['use']) { require(HESK_PATH . 'inc/attachments.inc.php'); $attachments = array(); - for ($i=1;$i<=$hesk_settings['attachments']['max_number'];$i++) - { + for ($i = 1; $i <= $hesk_settings['attachments']['max_number']; $i++) { $att = hesk_uploadFile($i); - if ($att !== false && !empty($att)) - { + if ($att !== false && !empty($att)) { $attachments[$i] = $att; } } } -$myattachments=''; +$myattachments = ''; /* Time spent working on ticket */ $time_worked = hesk_getTime(hesk_POST('time_worked')); /* Any errors? */ -if (count($hesk_error_buffer)!=0) -{ +if (count($hesk_error_buffer) != 0) { $_SESSION['ticket_message'] = hesk_POST('message'); $_SESSION['time_worked'] = $time_worked; - // Remove any successfully uploaded attachments - if ($hesk_settings['attachments']['use']) - { - hesk_removeAttachments($attachments); - } + // Remove any successfully uploaded attachments + if ($hesk_settings['attachments']['use']) { + hesk_removeAttachments($attachments); + } $tmp = ''; - foreach ($hesk_error_buffer as $error) - { + foreach ($hesk_error_buffer as $error) { $tmp .= "
  • $error
  • \n"; } $hesk_error_buffer = $tmp; - $hesk_error_buffer = $hesklang['pcer'].'

    '; - hesk_process_messages($hesk_error_buffer,'admin_ticket.php?track='.$ticket['trackid'].'&Refresh='.rand(10000,99999)); + $hesk_error_buffer = $hesklang['pcer'] . '

    '; + hesk_process_messages($hesk_error_buffer, 'admin_ticket.php?track=' . $ticket['trackid'] . '&Refresh=' . rand(10000, 99999)); } -if ($hesk_settings['attachments']['use'] && !empty($attachments)) -{ - foreach ($attachments as $myatt) - { - hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."attachments` (`ticket_id`,`saved_name`,`real_name`,`size`) VALUES ('".hesk_dbEscape($trackingID)."','".hesk_dbEscape($myatt['saved_name'])."','".hesk_dbEscape($myatt['real_name'])."','".intval($myatt['size'])."')"); - $myattachments .= hesk_dbInsertID() . '#' . $myatt['real_name'] . '#' . $myatt['saved_name'] .','; +if ($hesk_settings['attachments']['use'] && !empty($attachments)) { + foreach ($attachments as $myatt) { + hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "attachments` (`ticket_id`,`saved_name`,`real_name`,`size`) VALUES ('" . hesk_dbEscape($trackingID) . "','" . hesk_dbEscape($myatt['saved_name']) . "','" . hesk_dbEscape($myatt['real_name']) . "','" . intval($myatt['size']) . "')"); + $myattachments .= hesk_dbInsertID() . '#' . $myatt['real_name'] . '#' . $myatt['saved_name'] . ','; } } // Add reply $html = $modsForHesk_settings['rich_text_for_tickets']; -if ($submit_as_customer) -{ - hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`html`) VALUES ('".intval($replyto)."','".hesk_dbEscape(addslashes($ticket['name']))."','".hesk_dbEscape($message."

    {$hesklang['creb']} {$_SESSION['name']}")."',NOW(),'".hesk_dbEscape($myattachments)."', '".$html."')"); -} -else -{ - hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`staffid`,`html`) VALUES ('".intval($replyto)."','".hesk_dbEscape(addslashes($_SESSION['name']))."','".hesk_dbEscape($message)."',NOW(),'".hesk_dbEscape($myattachments)."','".intval($_SESSION['id'])."', '".$html."')"); +if ($submit_as_customer) { + hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`html`) VALUES ('" . intval($replyto) . "','" . hesk_dbEscape(addslashes($ticket['name'])) . "','" . hesk_dbEscape($message . "

    {$hesklang['creb']} {$_SESSION['name']}") . "',NOW(),'" . hesk_dbEscape($myattachments) . "', '" . $html . "')"); +} else { + hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`staffid`,`html`) VALUES ('" . intval($replyto) . "','" . hesk_dbEscape(addslashes($_SESSION['name'])) . "','" . hesk_dbEscape($message) . "',NOW(),'" . hesk_dbEscape($myattachments) . "','" . intval($_SESSION['id']) . "', '" . $html . "')"); } /* Track ticket status changes for history */ $revision = ''; /* Change the status of priority? */ -if ( ! empty($_POST['set_priority']) ) -{ - $priority = intval( hesk_POST('priority') ); - if ($priority < 0 || $priority > 3) - { - hesk_error($hesklang['select_priority']); +if (!empty($_POST['set_priority'])) { + $priority = intval(hesk_POST('priority')); + if ($priority < 0 || $priority > 3) { + hesk_error($hesklang['select_priority']); } - $options = array( - 0 => ''.$hesklang['critical'].'', - 1 => ''.$hesklang['high'].'', - 2 => ''.$hesklang['medium'].'', - 3 => $hesklang['low'] - ); + $options = array( + 0 => '' . $hesklang['critical'] . '', + 1 => '' . $hesklang['high'] . '', + 2 => '' . $hesklang['medium'] . '', + 3 => $hesklang['low'] + ); - $revision = sprintf($hesklang['thist8'],hesk_date(),$options[$priority],$_SESSION['name'].' ('.$_SESSION['user'].')'); + $revision = sprintf($hesklang['thist8'], hesk_date(), $options[$priority], $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); - $priority_sql = ",`priority`='$priority', `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') "; -} -else -{ + $priority_sql = ",`priority`='$priority', `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') "; +} else { $priority_sql = ""; } /* Update the original ticket */ -$defaultStatusReplyStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID`, `IsClosed` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` WHERE `IsDefaultStaffReplyStatus` = 1 LIMIT 1")); -$staffClosedCheckboxStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID`, `IsClosed` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` WHERE `IsStaffClosedOption` = 1 LIMIT 1")); -$lockedTicketStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` WHERE `LockedTicketStatus` = 1 LIMIT 1")); +$defaultStatusReplyStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID`, `IsClosed` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` WHERE `IsDefaultStaffReplyStatus` = 1 LIMIT 1")); +$staffClosedCheckboxStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID`, `IsClosed` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` WHERE `IsStaffClosedOption` = 1 LIMIT 1")); +$lockedTicketStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` WHERE `LockedTicketStatus` = 1 LIMIT 1")); // Get new ticket status $sql_status = ''; // -> If locked, keep it resolved -if ($ticket['locked']) -{ - $new_status = $lockedTicketStatus['ID']; -} -elseif (isset($_POST['submit_as_status'])) -{ +if ($ticket['locked']) { + $new_status = $lockedTicketStatus['ID']; +} elseif (isset($_POST['submit_as_status'])) { $new_status = $_POST['submit_as_status']; - if ($ticket['status'] != $new_status) - { + if ($ticket['status'] != $new_status) { // Does this status close the ticket? - $newStatusRs = hesk_dbQuery('SELECT `IsClosed`, `Key` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `ID` = '.hesk_dbEscape($new_status)); + $newStatusRs = hesk_dbQuery('SELECT `IsClosed`, `Key` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'statuses` WHERE `ID` = ' . hesk_dbEscape($new_status)); $newStatus = hesk_dbFetchAssoc($newStatusRs); - if ($newStatus['IsClosed']) - { - $revision = sprintf($hesklang['thist3'],hesk_date(),$_SESSION['name'].' ('.$_SESSION['user'].')'); - $sql_status = " , `closedat`=NOW(), `closedby`=".intval($_SESSION['id']).", `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') "; + if ($newStatus['IsClosed']) { + $revision = sprintf($hesklang['thist3'], hesk_date(), $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + $sql_status = " , `closedat`=NOW(), `closedby`=" . intval($_SESSION['id']) . ", `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') "; // Lock the ticket if customers are not allowed to reopen tickets - if ($hesk_settings['custopen'] != 1) - { + if ($hesk_settings['custopen'] != 1) { $sql_status .= " , `locked`='1' "; } - } else - { + } else { // Ticket isn't being closed, just add the history to the sql query - $revision = sprintf($hesklang['thist9'],hesk_date(),$hesklang[$newStatus['Key']],$_SESSION['name'].' ('.$_SESSION['user'].')'); - $sql_status = " , `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') "; + $revision = sprintf($hesklang['thist9'], hesk_date(), $hesklang[$newStatus['Key']], $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + $sql_status = " , `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') "; } } -} -// -> Submit as Customer reply -elseif ($submit_as_customer) -{ +} // -> Submit as Customer reply +elseif ($submit_as_customer) { //Get the status ID for customer replies - $customerReplyStatusRs = hesk_dbQuery('SELECT `ID` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsCustomerReplyStatus` = 1 LIMIT 1'); + $customerReplyStatusRs = hesk_dbQuery('SELECT `ID` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'statuses` WHERE `IsCustomerReplyStatus` = 1 LIMIT 1'); $customerReplyStatus = hesk_dbFetchAssoc($customerReplyStatusRs); $new_status = $customerReplyStatus['ID']; - if ($ticket['status'] != $new_status) - { - $revision = sprintf($hesklang['thist9'],hesk_date(),$hesklang['wait_reply'],$_SESSION['name'].' ('.$_SESSION['user'].')'); - $sql_status = " , `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') "; - } -} -// -> Default: submit as "Replied by staff" -else -{ + if ($ticket['status'] != $new_status) { + $revision = sprintf($hesklang['thist9'], hesk_date(), $hesklang['wait_reply'], $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + $sql_status = " , `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') "; + } +} // -> Default: submit as "Replied by staff" +else { //Get the status ID for staff replies - $staffReplyStatusRs = hesk_dbQuery('SELECT `ID` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsDefaultStaffReplyStatus` = 1 LIMIT 1'); + $staffReplyStatusRs = hesk_dbQuery('SELECT `ID` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'statuses` WHERE `IsDefaultStaffReplyStatus` = 1 LIMIT 1'); $staffReplyStatus = hesk_dbFetchAssoc($staffReplyStatusRs); $new_status = $staffReplyStatus['ID']; } -$sql = "UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` SET `status`='{$new_status}',"; -$sql.= $submit_as_customer ? "`lastreplier`='0', `replierid`='0' " : "`lastreplier`='1', `replierid`='".intval($_SESSION['id'])."' "; +$sql = "UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `status`='{$new_status}',"; +$sql .= $submit_as_customer ? "`lastreplier`='0', `replierid`='0' " : "`lastreplier`='1', `replierid`='" . intval($_SESSION['id']) . "' "; /* Update time_worked or force update lastchange */ -if ($time_worked == '00:00:00') -{ - $sql .= ", `lastchange` = NOW() "; -} -else -{ - $sql .= ",`time_worked` = ADDTIME(`time_worked`,'" . hesk_dbEscape($time_worked) . "') "; +if ($time_worked == '00:00:00') { + $sql .= ", `lastchange` = NOW() "; +} else { + $sql .= ",`time_worked` = ADDTIME(`time_worked`,'" . hesk_dbEscape($time_worked) . "') "; } -if ( ! empty($_POST['assign_self']) && (hesk_checkPermission('can_assign_self',0) || (isset($_REQUEST['isManager']) && $_REQUEST['isManager']))) -{ - $revision = sprintf($hesklang['thist2'],hesk_date(),$_SESSION['name'].' ('.$_SESSION['user'].')',$_SESSION['name'].' ('.$_SESSION['user'].')'); - $sql .= " , `owner`=".intval($_SESSION['id']).", `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') "; +if (!empty($_POST['assign_self']) && (hesk_checkPermission('can_assign_self', 0) || (isset($_REQUEST['isManager']) && $_REQUEST['isManager']))) { + $revision = sprintf($hesklang['thist2'], hesk_date(), $_SESSION['name'] . ' (' . $_SESSION['user'] . ')', $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + $sql .= " , `owner`=" . intval($_SESSION['id']) . ", `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') "; } $sql .= " $priority_sql "; $sql .= " $sql_status "; -if ( ! $ticket['firstreplyby'] ) -{ - $sql .= " , `firstreply`=NOW(), `firstreplyby`=".intval($_SESSION['id'])." "; +if (!$ticket['firstreplyby']) { + $sql .= " , `firstreply`=NOW(), `firstreplyby`=" . intval($_SESSION['id']) . " "; } // Keep track of replies to this ticket for easier reporting @@ -351,84 +299,71 @@ hesk_dbQuery($sql); unset($sql); /* Update number of replies in the users table */ -hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."users` SET `replies`=`replies`+1 WHERE `id`='".intval($_SESSION['id'])."' LIMIT 1"); +hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` SET `replies`=`replies`+1 WHERE `id`='" . intval($_SESSION['id']) . "' LIMIT 1"); // --> Prepare reply message // 1. Generate the array with ticket info that can be used in emails $info = array( -'email' => $ticket['email'], -'category' => $ticket['category'], -'priority' => $ticket['priority'], -'owner' => $ticket['owner'], -'trackid' => $ticket['trackid'], -'status' => $new_status, -'name' => $ticket['name'], -'lastreplier' => ($submit_as_customer ? $ticket['name'] : $_SESSION['name']), -'subject' => $ticket['subject'], -'message' => stripslashes($message), -'attachments' => $myattachments, -'dt' => hesk_date($ticket['dt'], true), -'lastchange' => hesk_date($ticket['lastchange'], true), -'id' => $ticket['id'], -'language' => $ticket['language'] + 'email' => $ticket['email'], + 'category' => $ticket['category'], + 'priority' => $ticket['priority'], + 'owner' => $ticket['owner'], + 'trackid' => $ticket['trackid'], + 'status' => $new_status, + 'name' => $ticket['name'], + 'lastreplier' => ($submit_as_customer ? $ticket['name'] : $_SESSION['name']), + 'subject' => $ticket['subject'], + 'message' => stripslashes($message), + 'attachments' => $myattachments, + 'dt' => hesk_date($ticket['dt'], true), + 'lastchange' => hesk_date($ticket['lastchange'], true), + 'id' => $ticket['id'], + 'language' => $ticket['language'] ); // 2. Add custom fields to the array -foreach ($hesk_settings['custom_fields'] as $k => $v) -{ - $info[$k] = $v['use'] ? $ticket[$k] : ''; +foreach ($hesk_settings['custom_fields'] as $k => $v) { + $info[$k] = $v['use'] ? $ticket[$k] : ''; } // 3. Make sure all values are properly formatted for email $ticket = hesk_ticketToPlain($info, 1, 0); // Notify the assigned staff? -if ($submit_as_customer) -{ - if ($ticket['owner'] && $ticket['owner'] != $_SESSION['id']) - { +if ($submit_as_customer) { + if ($ticket['owner'] && $ticket['owner'] != $_SESSION['id']) { hesk_notifyAssignedStaff(false, 'new_reply_by_customer', $modsForHesk_settings, 'notify_reply_my'); } -} -// Notify customer? -elseif ( ! isset($_POST['no_notify']) || intval( hesk_POST('no_notify') ) != 1) -{ - hesk_notifyCustomer($modsForHesk_settings, 'new_reply_by_staff'); +} // Notify customer? +elseif (!isset($_POST['no_notify']) || intval(hesk_POST('no_notify')) != 1) { + hesk_notifyCustomer($modsForHesk_settings, 'new_reply_by_staff'); } // Delete any existing drafts from this owner for this ticket -hesk_dbQuery("DELETE FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."reply_drafts` WHERE `owner`=".intval($_SESSION['id'])." AND `ticket`=".intval($ticket['id'])." LIMIT 1"); +hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "reply_drafts` WHERE `owner`=" . intval($_SESSION['id']) . " AND `ticket`=" . intval($ticket['id']) . " LIMIT 1"); /* Set reply submitted message */ $_SESSION['HESK_SUCCESS'] = TRUE; $_SESSION['HESK_MESSAGE'] = $hesklang['reply_submitted']; /* What to do after reply? */ -if ($_SESSION['afterreply'] == 1) -{ - header('Location: admin_main.php'); -} -elseif ($_SESSION['afterreply'] == 2) -{ - /* Get the next open ticket that needs a reply */ - $res = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` WHERE `owner` IN ('0','".intval($_SESSION['id'])."') AND " . hesk_myCategories() . " AND `status` IN (SELECT `ID` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` +if ($_SESSION['afterreply'] == 1) { + header('Location: admin_main.php'); +} elseif ($_SESSION['afterreply'] == 2) { + /* Get the next open ticket that needs a reply */ + $res = hesk_dbQuery("SELECT * FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` WHERE `owner` IN ('0','" . intval($_SESSION['id']) . "') AND " . hesk_myCategories() . " AND `status` IN (SELECT `ID` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` WHERE `IsNewTicketStatus` = 1 OR `IsCustomerReplyStatus` = 1 OR `IsStaffReopenedStatus` = 1) ORDER BY `owner` DESC, `priority` ASC LIMIT 1"); - if (hesk_dbNumRows($res) == 1) - { - $row = hesk_dbFetchAssoc($res); - $_SESSION['HESK_MESSAGE'] .= '

    '.$hesklang['rssn']; - header('Location: admin_ticket.php?track='.$row['trackid'].'&Refresh='.rand(10000,99999)); + if (hesk_dbNumRows($res) == 1) { + $row = hesk_dbFetchAssoc($res); + $_SESSION['HESK_MESSAGE'] .= '

    ' . $hesklang['rssn']; + header('Location: admin_ticket.php?track=' . $row['trackid'] . '&Refresh=' . rand(10000, 99999)); + } else { + header('Location: admin_main.php'); } - else - { - header('Location: admin_main.php'); - } -} -else -{ - header('Location: admin_ticket.php?track='.$ticket['trackid'].'&Refresh='.rand(10000,99999)); +} else { + header('Location: admin_ticket.php?track=' . $ticket['trackid'] . '&Refresh=' . rand(10000, 99999)); } exit(); ?> diff --git a/admin/admin_settings.php b/admin/admin_settings.php index a50962f2..75597025 100644 --- a/admin/admin_settings.php +++ b/admin/admin_settings.php @@ -1,44 +1,42 @@ install folder from your server for security reasons then refresh this page!');} +if (is_dir(HESK_PATH . 'install')) { + die('Please delete the install folder from your server for security reasons then refresh this page!'); +} // Get all the required files and functions require(HESK_PATH . 'hesk_settings.inc.php'); @@ -58,17 +56,16 @@ hesk_isLoggedIn(); hesk_checkPermission('can_man_settings'); // Test languages function -if (isset($_GET['test_languages'])) -{ - hesk_testLanguage(0); +if (isset($_GET['test_languages'])) { + hesk_testLanguage(0); } $help_folder = '../language/' . $hesk_settings['languages'][$hesk_settings['language']]['folder'] . '/help_files/'; -$enable_save_settings = 0; +$enable_save_settings = 0; $enable_use_attachments = 0; -$server_time = date('H:i',strtotime(hesk_date())); +$server_time = date('H:i', strtotime(hesk_date())); // Print header require_once(HESK_PATH . 'inc/headerAdmin.inc.php'); @@ -77,21 +74,20 @@ require_once(HESK_PATH . 'inc/headerAdmin.inc.php'); require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); // Get the current version of Mods for Hesk -$modsForHeskVersionRS = hesk_dbQuery("SELECT `Value` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."settings` WHERE `Key` = 'modsForHeskVersion'"); +$modsForHeskVersionRS = hesk_dbQuery("SELECT `Value` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` WHERE `Key` = 'modsForHeskVersion'"); $modsForHeskVersionArray = hesk_dbFetchAssoc($modsForHeskVersionRS); $modsForHeskVersion = $modsForHeskVersionArray['Value']; // Demo mode? Hide values of sensitive settings -if ( defined('HESK_DEMO') ) -{ - $hesk_settings['smtp_host_name'] = $hesklang['hdemo']; - $hesk_settings['smtp_user'] = $hesklang['hdemo']; - $hesk_settings['smtp_password'] = $hesklang['hdemo']; - $hesk_settings['pop3_host_name'] = $hesklang['hdemo']; - $hesk_settings['pop3_user'] = $hesklang['hdemo']; - $hesk_settings['pop3_password'] = $hesklang['hdemo']; - $hesk_settings['recaptcha_public_key'] = $hesklang['hdemo']; - $hesk_settings['recaptcha_private_key'] = $hesklang['hdemo']; +if (defined('HESK_DEMO')) { + $hesk_settings['smtp_host_name'] = $hesklang['hdemo']; + $hesk_settings['smtp_user'] = $hesklang['hdemo']; + $hesk_settings['smtp_password'] = $hesklang['hdemo']; + $hesk_settings['pop3_host_name'] = $hesklang['hdemo']; + $hesk_settings['pop3_user'] = $hesklang['hdemo']; + $hesk_settings['pop3_password'] = $hesklang['hdemo']; + $hesk_settings['recaptcha_public_key'] = $hesklang['hdemo']; + $hesk_settings['recaptcha_private_key'] = $hesklang['hdemo']; } ?> @@ -107,15 +103,12 @@ if ( defined('HESK_DEMO') ) "> ' . $hesklang['hud'] . ' '; - } - elseif ($latest != -1) - { + } elseif ($latest != -1) { // Is this a beta/dev version? - if ( strpos($hesk_settings['hesk_version'], 'beta') || strpos($hesk_settings['hesk_version'], 'dev') || strpos($hesk_settings['hesk_version'], 'RC') ) - { - echo ' ' . $hesklang['beta'] . ' '; ?> ' . $hesklang['beta'] . ' '; ?> ' . $hesklang['hnw'] . ' '; ?> ' . $hesklang['hnw'] . ' '; ?> - - - - @@ -160,14 +150,11 @@ if ( defined('HESK_DEMO') ) "> ' . $hesklang['mfh_up_to_date'] . ''; - } else - { - ?> - - - + - - - + - - : - - - - - : - - - + + + : + + + + + + + + : + + + + + /hesk_settings.inc.php @@ -214,10 +206,10 @@ if ( defined('HESK_DEMO') ) '.$hesklang['exists'].', '.$hesklang['writable'].''; + $enable_save_settings = 1; + echo '' . $hesklang['exists'] . ', ' . $hesklang['writable'] . ''; } else { - echo ''.$hesklang['exists'].', '.$hesklang['not_writable'].'
    '.$hesklang['e_settings']; + echo '' . $hesklang['exists'] . ', ' . $hesklang['not_writable'] . '
    ' . $hesklang['e_settings']; } ?> @@ -233,22 +225,16 @@ if ( defined('HESK_DEMO') ) ?> '.$hesklang['exists'].', '; - if (is_writable(HESK_PATH . $hesk_settings['attach_dir'])) - { - $enable_use_attachments=1; - echo ''.$hesklang['writable'].''; + if ($attachmentsExist) { + echo '' . $hesklang['exists'] . ', '; + if (is_writable(HESK_PATH . $hesk_settings['attach_dir'])) { + $enable_use_attachments = 1; + echo '' . $hesklang['writable'] . ''; + } else { + echo '' . $hesklang['not_writable'] . '
    ' . $hesklang['e_attdir']; } - else - { - echo ''.$hesklang['not_writable'].'
    '.$hesklang['e_attdir']; - } - } - else - { - echo ''.$hesklang['no_exists'].', '.$hesklang['not_writable'].'
    '.$hesklang['e_attdir']; + } else { + echo '' . $hesklang['no_exists'] . ', ' . $hesklang['not_writable'] . '
    ' . $hesklang['e_attdir']; } ?> @@ -262,22 +248,18 @@ if ( defined('HESK_DEMO') ) hesk_handle_messages(); // Check file attachment limits - if ($hesk_settings['attachments']['use'] && ! defined('HESK_DEMO') ) - { + if ($hesk_settings['attachments']['use'] && !defined('HESK_DEMO')) { // Check number of attachments per post - if ( version_compare(phpversion(), '5.2.12', '>=') && @ini_get('max_file_uploads') && @ini_get('max_file_uploads') < $hesk_settings['attachments']['max_number'] ) - { + if (version_compare(phpversion(), '5.2.12', '>=') && @ini_get('max_file_uploads') && @ini_get('max_file_uploads') < $hesk_settings['attachments']['max_number']) { hesk_show_notice($hesklang['fatte1']); } // Check max attachment size $tmp = @ini_get('upload_max_filesize'); - if ($tmp) - { - $last = strtoupper(substr($tmp,-1)); + if ($tmp) { + $last = strtoupper(substr($tmp, -1)); - switch ($last) - { + switch ($last) { case 'K': $tmp = $tmp * 1024; break; @@ -288,23 +270,20 @@ if ( defined('HESK_DEMO') ) $tmp = $tmp * 1073741824; break; default: - $tmp = $tmp; + $tmp = $tmp; } - if ($tmp < $hesk_settings['attachments']['max_size']) - { + if ($tmp < $hesk_settings['attachments']['max_size']) { hesk_show_notice($hesklang['fatte2']); } } // Check max post size $tmp = @ini_get('post_max_size'); - if ($tmp) - { - $last = strtoupper(substr($tmp,-1)); + if ($tmp) { + $last = strtoupper(substr($tmp, -1)); - switch ($last) - { + switch ($last) { case 'K': $tmp = $tmp * 1024; break; @@ -318,8 +297,7 @@ if ( defined('HESK_DEMO') ) $tmp = $tmp; } - if ($tmp < ( $hesk_settings['attachments']['max_size'] * $hesk_settings['attachments']['max_number'] + 524288 ) ) - { + if ($tmp < ($hesk_settings['attachments']['max_size'] * $hesk_settings['attachments']['max_number'] + 524288)) { hesk_show_notice($hesklang['fatte3']); } } @@ -331,1650 +309,2290 @@ if ( defined('HESK_DEMO') ) $modsForHesk_settings = mfh_getSettings(); ?> -

    + function checkTime(i) { + if (i < 10) { + i = "0" + i; + } + return i; + } + //--> + + +

    +
    -
    +
    - +
    -
    -
    +
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    +
    -
    -
    -
    - -
    - -   - -
    -
    -
    - -
    -
    -
    '; - ?> +
    + + +
    + +
    -
    +
    + -
    -
    +
    + +
    +
    +
    + -
    - -
    - +
    + +
    -
    -
    - -
    - +
    + + +
    + +
    -
    -
    - -
    - +
    + + +
    + +
    -
    -
    - -
    - + +
    + +
    +
    + + +
    + +   + +
    -
    -
    - -
    - +
    + + +
    +
    +
    '; + ?> +
    -
    -
    -
    - - - - - - -
    -
    -
    +
    + - -
    -
    -
    +
    + +
    +
    +
    + -
    - -
    - +
    + +
    -
    -
    - -
    - +
    + + +
    + +
    -
    -
    - -
    - +
    + + +
    + +
    -
    -
    - -
    - +
    + + +
    + +
    -
    -
    - -
    - +
    +
    + + + + + + +
    -
    - -
    - + + +
    +
    + +
    + +
    + + +
    + +
    -
    -
    - -
    - +
    + + +
    + +
    -
    -
    - -
    - +
    + + +
    + +
    -
    -
    - -
    -
    -
    '; - ?> +
    + + +
    + +
    -
    -
    - -
    -
    -
    '; - ?> +
    + + +
    + +
    -
    +
    + -
    -
    -
    -
    -
    - -
    -
        -
    '; - ?> -
    +
    +
    -
    - -
    -
        -
    '; - ?> -
    +
    +
    + + +
    +
    -
    - -
    -
        -
    '; - ?> -
    +
    +
    + + +
    +
    -
    - -
    -
        -
    '; - ?> -
    +
    +
    + + +
    +
    +
    '; + ?>
    -
    - -
    -
        -
    '; - ?> -
    +
    +
    + + +
    +
    +
    '; + ?>
    -
    - -
    -
        -
    '; - ?> +
    + +
    + +
    +
    +
    +
    + + +
    +
        +
    '; + ?> +
    -
    -
    - -
    -
        -
    '; - ?> +
    + + +
    +
        +
    '; + ?> +
    -
    -
    -
    +
    + + +
    +
        +
    '; + ?> +
    +
    +
    + + +
    +
        +
    '; + ?> +
    +
    +
    + + +
    +
        +
    '; + ?> +
    +
    +
    + + +
    +
        +
    '; + ?> +
    +
    +
    + -
    -
    -
    - '; - ?> -
    -
    -
    - + +
    +
    +
    + '; + ?> +
    +
    +
    + -
    -
        -
        -
    + + + + +
    +
        +
        +
    '; - ?> + ?> +
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - -
    -
        -
    '; - ?> + +
    +
    + + +
    +
        +
    '; + ?> +
    -
    -
    - -
    -
        -
    '; - ?> +
    + + +
    +
        +
    '; + ?> +
    -
    -
    - -
    -
        -
    '; - ?> +
    + + +
    +
        +
    '; + ?> +
    -
    -
    - -
    -
        -
    '; - ?> +
    + + +
    +
        +
    '; + ?> +
    -
    -
    - -
    -
        -
    '; - ?> +
    + + +
    +
        +
    '; + ?> +
    -
    -
    -
    -
    - -
    -
    - + + + + +
    +
        +
    '; + ?>
    -
    - +
    +
    + + +
    +
    + +
    +
    + +
    -
    -
    -
    -
    -
    -
    +
    -
    - -
    -
        -
        -
    +
    + +
    + + +
    +
        +
        +
    '; - ?> -
    + ?> +
    -  
    +  
    - :
    + :
    - - if ($hesk_settings['recaptcha_use'] == 1) - { - $on = 'checked="checked"'; - } - elseif ($hesk_settings['recaptcha_use'] == 2) - { - $on2 = 'checked="checked"'; - } - else - { - $off = 'checked="checked"'; - $div = 'none'; - } - ?> +
    +
    + +
    +
    + +
    +
    + +
    + +  
    + + +
    +  
    + + +
    +  
    +
    +
    +
    +
    +
    + -

    -

    -

    +
    + ;"> + if ($hesk_settings['question_use']) { + $on = 'checked="checked"'; + } else { + $off = 'checked="checked"'; + $div = 'none'; + } + echo ' +
        +
    '; + ?> -  
    +
    +  
    +
    - -
    -  
    +
    +
    +  
    + +
    +
    +  
    - -
    -  
    +
    -
    -
    -
    - -
    - +
    - if ($hesk_settings['question_use']) - { - $on = 'checked="checked"'; - } - else - { - $off = 'checked="checked"'; - $div = 'none'; - } - echo ' -
        -
    '; - ?> - -
    -  
    -
    +
    -
    -
    -  
    +
    + -
    -
    -  
    +
    + +
    +
    +
    + +
    + +
    -
    -
    -
    -
    -
    - -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    -
    - +
    + + +
    +
    + +
    +
    -
    -
    -
    - -
    -
    - +
    + + +
    +
    + +
    +
    -
    -
    -
    -
    +
    + /> +
    +
    + +
    +
    +
    + -
    -
    -
    -
    - -
    -

    -

    -
    '; - ?> +
    + /> +
    +
    -
    -
    -
    - -
    -
        -
    '; - ?> -
    -
    -
    - -
    -
        -
    '; - ?> -
    -
    -
    - -
    -
        -
    '; - ?> -
    -
    -
    - -
    -
        -
    '; - ?> + + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    - -
    - -
    -
        -
        -
    - '; - ?> +
    + + +
    +
        +
    '; + ?> +
    - -
    - -
    - +
    + + +
    +
        +
    '; + ?> +
    -
    -
    - -
    - +
    + + +
    +
        +
    '; + ?> +
    -
    -
    - -
    - +
    + + +
    +
        +
    '; + ?> +
    -
    -
    - -
    - +
    + + +
    +
        +
    '; + ?> +
    -
    -
    - -
    - +
    + + +
    +
        +
        +
    + '; + ?> +
    -
    -

    +
    + + +
    + +
    -
    -
    -
    - +
    + + +
    + +
    -
    -

    +
    + + +
    + +
    -
    -
    - -
    - +
    + + +
    + +
    -
    -

    +
    + + +
    + +
    +
    +

    +
    -
    -
    -
    - +
    +
    + +
    +
    +

    +
    -
    -

    +
    + + +
    + +
    +
    +

    +
    -
    -
    - -
    - +
    +
    + +
    +
    +

    +
    -
    -

    +
    + + +
    + +
    +
    +

    +
    -
    -
    -
    -
    +
    +
    + +
    -
    -
    + } // End FOR + ?> + +
    - -
    -
    -
    + +
    +
    -
    - -
    -
    + +
    + + +
    +
    '; - ?> - - - - - - - - - + ?> + + + + + + + +
    -
    -
    -
    -
    +
    + + +
    +
    + +
    + +
    + + +
    +

    ' . $server_time . ''; ?>

    + +
    +
    +
    +
    +
    + +
    +
    +

    +
    +
    +
    +
    + +
    +
    +

    +
    +
    +
    +
    + + +
    +
        +
    '; + ?> +
    +
    +
    + + +
    + +
    +
    + +
    + +
    + +
    + + +
    + +
    +
    +
    + +
    + + +
    +
    + +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    + + +
    +
    + +
    -
    - - -
    -
    -
    +
    + -
    - -
    -

    '.$server_time.'' ; ?>

    - +
    +
    + +
    +
    -
    + +
    +
    + +
    -
    - +
    +
    + + +
    + +
    +
    -
    -

    +
    +
    + + +
    + +
    +
    -
    -
    - +
    +
    +
    + + +
    + +
    +
    -
    -

    +
    +
    + + +
    + +
    +
    -
    -
    - -
    -
        -
    '; - ?> -
    -
    -
    - -
    - -
    -
    +
    +
    +
    + -
    -
    +
    + +
    +
    +
    +
    +
    + -
    - -
    - -
    -
    -
    -
    - -
    -
    - +
    + +
    +
    -
    -
    - -
    -
    - +
    +
    +
    + + +
    + +
    +
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - +
    +
    + + +
    + +
    +
    -
    - -
    -
    -
    - -
    -
    - +
    +
    +
    + + +
    + +
    +
    -
    -
    -
    - -
    -
    - +
    +
    + + +
    + +
    +
    -
    -
    - -
    -
    - +
    +
    +
    + + +
    + +
    +
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -

    - + '; - } - else - { - echo '
    '.$hesklang['e_save_settings'].''; + if ($enable_save_settings) { + echo ''; + } else { + echo '
    ' . $hesklang['e_save_settings'] . ''; } ?>
    - +
    - 12 ) - { - return -1; - } - elseif ($latest == $hesk_settings['hesk_version']) - { - return true; - } - else - { - return $latest; + global $hesk_settings; + + if ($latest = hesk_getLatestVersion()) { + if (strlen($latest) > 12) { + return -1; + } elseif ($latest == $hesk_settings['hesk_version']) { + return true; + } else { + return $latest; + } + } else { + return -1; } - } - else - { - return -1; - } - -} // END hesk_checkVersion() + } // END hesk_checkVersion() -function hesk_getLatestVersion() -{ - global $hesk_settings; - // Do we have a cached version file? - if ( file_exists(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest.txt') ) + function hesk_getLatestVersion() { - if ( preg_match('/^(\d+)\|([\d.]+)+$/', @file_get_contents(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest.txt'), $matches) && (time() - intval($matches[1])) < 3600 ) - { - return $matches[2]; + global $hesk_settings; + + // Do we have a cached version file? + if (file_exists(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest.txt')) { + if (preg_match('/^(\d+)\|([\d.]+)+$/', @file_get_contents(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest.txt'), $matches) && (time() - intval($matches[1])) < 3600) { + return $matches[2]; + } } - } - // No cached file or older than 3600 seconds, try to get an update - $hesk_version_url = 'http://heskcom.s3.amazonaws.com/hesk_version.txt'; - - // Try using cURL - if ( function_exists('curl_init') ) - { - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $hesk_version_url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 6); - $latest = curl_exec($ch); - curl_close($ch); - return hesk_cacheLatestVersion($latest); - } - - // Try using a simple PHP function instead - if ($latest = file_get_contents($hesk_version_url) ) - { - return hesk_cacheLatestVersion($latest); - } + // No cached file or older than 3600 seconds, try to get an update + $hesk_version_url = 'http://heskcom.s3.amazonaws.com/hesk_version.txt'; + + // Try using cURL + if (function_exists('curl_init')) { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $hesk_version_url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 6); + $latest = curl_exec($ch); + curl_close($ch); + return hesk_cacheLatestVersion($latest); + } - // Can't check automatically, will need a manual check - return false; + // Try using a simple PHP function instead + if ($latest = file_get_contents($hesk_version_url)) { + return hesk_cacheLatestVersion($latest); + } + + // Can't check automatically, will need a manual check + return false; -} // END hesk_getLatestVersion() + } // END hesk_getLatestVersion() -function hesk_cacheLatestVersion($latest) -{ - global $hesk_settings; + function hesk_cacheLatestVersion($latest) + { + global $hesk_settings; - @file_put_contents(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest.txt', time() . '|' . $latest); + @file_put_contents(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest.txt', time() . '|' . $latest); - return $latest; + return $latest; -} // END hesk_cacheLatestVersion() + } // END hesk_cacheLatestVersion() -function hesk_checkMfhVersion($currentVersion) -{ - if ($latest = hesk_getMfhLatestVersion() ) + function hesk_checkMfhVersion($currentVersion) { - if ( strlen($latest) > 12 ) - { + if ($latest = hesk_getMfhLatestVersion()) { + if (strlen($latest) > 12) { + return -1; + } elseif ($latest == $currentVersion) { + return true; + } else { + return $latest; + } + } else { return -1; } - elseif ($latest == $currentVersion) - { - return true; - } - else - { - return $latest; - } } - else + + function hesk_getMfhLatestVersion() { - return -1; - } -} + global $hesk_settings; -function hesk_getMfhLatestVersion() -{ - global $hesk_settings; + // Do we have a cached version file? + if (file_exists(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest-mfh.txt')) { + if (preg_match('/^(\d+)\|([\d.]+)+$/', @file_get_contents(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest-mfh.txt'), $matches) && (time() - intval($matches[1])) < 3600) { + return $matches[2]; + } + } - // Do we have a cached version file? - if ( file_exists(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest-mfh.txt') ) - { - if ( preg_match('/^(\d+)\|([\d.]+)+$/', @file_get_contents(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest-mfh.txt'), $matches) && (time() - intval($matches[1])) < 3600 ) - { - return $matches[2]; + // No cached file or older than 3600 seconds, try to get an update + $hesk_version_url = 'http://mods-for-hesk.mkochcs.com/latestversion.php'; + + // Try using cURL + if (function_exists('curl_init')) { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $hesk_version_url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 6); + $latest = curl_exec($ch); + curl_close($ch); + return hesk_cacheMfhLatestVersion($latest); } - } - // No cached file or older than 3600 seconds, try to get an update - $hesk_version_url = 'http://mods-for-hesk.mkochcs.com/latestversion.php'; + // Try using a simple PHP function instead + if ($latest = file_get_contents($hesk_version_url)) { + return hesk_cacheMfhLatestVersion($latest); + } - // Try using cURL - if ( function_exists('curl_init') ) - { - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $hesk_version_url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 6); - $latest = curl_exec($ch); - curl_close($ch); - return hesk_cacheMfhLatestVersion($latest); + // Can't check automatically, will need a manual check + return false; } - // Try using a simple PHP function instead - if ($latest = file_get_contents($hesk_version_url) ) + function hesk_cacheMfhLatestVersion($latest) { - return hesk_cacheMfhLatestVersion($latest); + global $hesk_settings; + + @file_put_contents(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest-mfh.txt', time() . '|' . $latest); + + return $latest; + } - // Can't check automatically, will need a manual check - return false; -} -function hesk_cacheMfhLatestVersion($latest) -{ - global $hesk_settings; + function hesk_testLanguage($return_options = 0) + { + global $hesk_settings, $hesklang, $modsForHesk_settings; - @file_put_contents(HESK_PATH . $hesk_settings['attach_dir'] . '/__latest-mfh.txt', time() . '|' . $latest); + /* Get a list of valid emails */ + include_once(HESK_PATH . 'inc/email_functions.inc.php'); + $valid_emails = array_keys(hesk_validEmails()); - return $latest; + $dir = HESK_PATH . 'language/'; + $path = opendir($dir); -} + $text = ''; + $html = ''; + $text .= "/language\n"; -function hesk_testLanguage($return_options = 0) -{ - global $hesk_settings, $hesklang, $modsForHesk_settings; - - /* Get a list of valid emails */ - include_once(HESK_PATH . 'inc/email_functions.inc.php'); - $valid_emails = array_keys( hesk_validEmails() ); - - $dir = HESK_PATH . 'language/'; - $path = opendir($dir); - - $text = ''; - $html = ''; - - $text .= "/language\n"; - - /* Test all folders inside the language folder */ - while (false !== ($subdir = readdir($path))) - { - if ($subdir == "." || $subdir == "..") - { - continue; - } - - if (filetype($dir . $subdir) == 'dir') - { - $add = 1; - $langu = $dir . $subdir . '/text.php'; - $email = $dir . $subdir . '/emails'; - - /* Check the text.php */ - $text .= " |-> /$subdir\n"; - $text .= " |-> text.php: "; - if (file_exists($langu)) - { - $tmp = file_get_contents($langu); - - // Some servers add slashes to file_get_contents output - if ( strpos ($tmp, '[\\\'LANGUAGE\\\']') !== false ) - { - $tmp = stripslashes($tmp); - } - - $err = ''; - if (!preg_match('/\$hesklang\[\'LANGUAGE\'\]\=\'(.*)\'\;/',$tmp,$l)) - { - $err .= " |----> MISSING: \$hesklang['LANGUAGE']\n"; - } - - if (strpos($tmp,'$hesklang[\'ENCODING\']') === false) - { - $err .= " |----> MISSING: \$hesklang['ENCODING']\n"; - } - - if (strpos($tmp,'$hesklang[\'_COLLATE\']') === false) - { - $err .= " |----> MISSING: \$hesklang['_COLLATE']\n"; - } - - if (strpos($tmp,'$hesklang[\'EMAIL_HR\']') === false) - { - $err .= " |----> MISSING: \$hesklang['EMAIL_HR']\n"; - } - - /* Check if language file is for current version */ - if (strpos($tmp,'$hesklang[\'ms01\']') === false) - { - $err .= " |----> WRONG VERSION (not ".$hesk_settings['hesk_version'].")\n"; - } - - if ($err) - { - $text .= "ERROR\n" . $err; - $add = 0; - } - else - { - $l[1] = hesk_input($l[1]); - $l[1] = str_replace('|',' ',$l[1]); - $text .= "OK ($l[1])\n"; - } - } - else - { - $text .= "ERROR\n"; - $text .= " |----> MISSING: text.php\n"; - $add = 0; - } - - /* Check emails folder */ - $text .= " |-> /emails: "; - if (file_exists($email) && filetype($email) == 'dir') - { - $err = ''; - foreach ($valid_emails as $eml) - { - if (!file_exists($email.'/'.$eml.'.txt')) - { - $err .= " |----> MISSING: $eml.txt\n"; - } - } - - if ($err) - { - $text .= "ERROR\n" . $err; - $add = 0; - } - else - { - $text .= "OK\n"; - } - } - else - { - $text .= "ERROR\n"; - $text .= " |----> MISSING: /emails folder\n"; - $add = 0; - } - - $text .= "\n"; - - /* Add an option for the if needed */ + if ($add) { + if ($l[1] == $hesk_settings['language']) { + $html .= ''; + } else { + $html .= ''; + } + } + } + } + + closedir($path); + + /* Output select options or the test log for debugging */ + if ($return_options) { + return $html; + } else { + ?> + + + + <?php echo $hesklang['s_inl']; ?> + + + + + +

    + +

    + +
    + +

     

    + +

    + |

    + +

     

    + + + + + diff --git a/admin/admin_settings_save.php b/admin/admin_settings_save.php index fa78f714..61b38e71 100644 --- a/admin/admin_settings_save.php +++ b/admin/admin_settings_save.php @@ -1,44 +1,39 @@ General settings */ -$set['site_title'] = hesk_input( hesk_POST('s_site_title'), $hesklang['err_sname']); -$set['site_title'] = str_replace('\\"','"',$set['site_title']); -$set['site_url'] = hesk_input( hesk_POST('s_site_url'), $hesklang['err_surl']); -$set['webmaster_mail'] = hesk_validateEmail( hesk_POST('s_webmaster_mail'), $hesklang['err_wmmail']); -$set['noreply_mail'] = hesk_validateEmail( hesk_POST('s_noreply_mail'), $hesklang['err_nomail']); -$set['noreply_name'] = hesk_input( hesk_POST('s_noreply_name') ); -$set['noreply_name'] = str_replace(array('\\"','<','>'),'',$set['noreply_name']); -$set['noreply_name'] = trim( preg_replace('/\s{2,}/', ' ', $set['noreply_name']) ); +$set['site_title'] = hesk_input(hesk_POST('s_site_title'), $hesklang['err_sname']); +$set['site_title'] = str_replace('\\"', '"', $set['site_title']); +$set['site_url'] = hesk_input(hesk_POST('s_site_url'), $hesklang['err_surl']); +$set['webmaster_mail'] = hesk_validateEmail(hesk_POST('s_webmaster_mail'), $hesklang['err_wmmail']); +$set['noreply_mail'] = hesk_validateEmail(hesk_POST('s_noreply_mail'), $hesklang['err_nomail']); +$set['noreply_name'] = hesk_input(hesk_POST('s_noreply_name')); +$set['noreply_name'] = str_replace(array('\\"', '<', '>'), '', $set['noreply_name']); +$set['noreply_name'] = trim(preg_replace('/\s{2,}/', ' ', $set['noreply_name'])); /* --> Language settings */ -$set['can_sel_lang'] = empty($_POST['s_can_sel_lang']) ? 0 : 1; -$set['languages'] = hesk_getLanguagesArray(); -$lang = explode('|', hesk_input( hesk_POST('s_language') ) ); -if (isset($lang[1]) && in_array($lang[1],hesk_getLanguagesArray(1) )) -{ - $set['language'] = $lang[1]; -} -else -{ - hesk_error($hesklang['err_lang']); +$set['can_sel_lang'] = empty($_POST['s_can_sel_lang']) ? 0 : 1; +$set['languages'] = hesk_getLanguagesArray(); +$lang = explode('|', hesk_input(hesk_POST('s_language'))); +if (isset($lang[1]) && in_array($lang[1], hesk_getLanguagesArray(1))) { + $set['language'] = $lang[1]; +} else { + hesk_error($hesklang['err_lang']); } /* --> Database settings */ hesk_dbClose(); -if ( hesk_testMySQL() ) -{ - // Database connection OK -} -elseif ($mysql_log) -{ - hesk_error($mysql_error . '

    ' . $hesklang['mysql_said'] . ': ' . $mysql_log); -} -else -{ - hesk_error($mysql_error); +if (hesk_testMySQL()) { + // Database connection OK +} elseif ($mysql_log) { + hesk_error($mysql_error . '

    ' . $hesklang['mysql_said'] . ': ' . $mysql_log); +} else { + hesk_error($mysql_error); } /*** HELP DESK ***/ /* --> Helpdesk settings */ -$set['hesk_title'] = hesk_input( hesk_POST('s_hesk_title'), $hesklang['err_htitle']); -$set['hesk_title'] = str_replace('\\"','"',$set['hesk_title']); -$set['hesk_url'] = rtrim( hesk_input( hesk_POST('s_hesk_url'), $hesklang['err_hurl']), '/'); +$set['hesk_title'] = hesk_input(hesk_POST('s_hesk_title'), $hesklang['err_htitle']); +$set['hesk_title'] = str_replace('\\"', '"', $set['hesk_title']); +$set['hesk_url'] = rtrim(hesk_input(hesk_POST('s_hesk_url'), $hesklang['err_hurl']), '/'); // ---> check admin folder -$set['admin_dir'] = isset($_POST['s_admin_dir']) && ! is_array($_POST['s_admin_dir']) ? preg_replace('/[^a-zA-Z0-9_-]/', '', $_POST['s_admin_dir']) : 'admin'; +$set['admin_dir'] = isset($_POST['s_admin_dir']) && !is_array($_POST['s_admin_dir']) ? preg_replace('/[^a-zA-Z0-9_-]/', '', $_POST['s_admin_dir']) : 'admin'; /* if ( ! is_dir(HESK_PATH . $set['admin_dir']) ) { @@ -127,7 +113,7 @@ if ( ! is_dir(HESK_PATH . $set['admin_dir']) ) */ // ---> check attachments folder -$set['attach_dir'] = isset($_POST['s_attach_dir']) && ! is_array($_POST['s_attach_dir']) ? preg_replace('/[^a-zA-Z0-9_-]/', '', $_POST['s_attach_dir']) : 'attachments'; +$set['attach_dir'] = isset($_POST['s_attach_dir']) && !is_array($_POST['s_attach_dir']) ? preg_replace('/[^a-zA-Z0-9_-]/', '', $_POST['s_attach_dir']) : 'attachments'; /* if ( ! is_dir(HESK_PATH . $set['attach_dir']) ) { @@ -139,112 +125,102 @@ if ( ! is_writable(HESK_PATH . $set['attach_dir']) ) } */ -$set['max_listings'] = hesk_checkMinMax( intval( hesk_POST('s_max_listings') ) , 1, 999, 10); -$set['print_font_size'] = hesk_checkMinMax( intval( hesk_POST('s_print_font_size') ) , 1, 99, 12); -$set['autoclose'] = hesk_checkMinMax( intval( hesk_POST('s_autoclose') ) , 0, 999, 7); -$set['max_open'] = hesk_checkMinMax( intval( hesk_POST('s_max_open') ) , 0, 999, 0); -$set['new_top'] = empty($_POST['s_new_top']) ? 0 : 1; -$set['reply_top'] = empty($_POST['s_reply_top']) ? 0 : 1; +$set['max_listings'] = hesk_checkMinMax(intval(hesk_POST('s_max_listings')), 1, 999, 10); +$set['print_font_size'] = hesk_checkMinMax(intval(hesk_POST('s_print_font_size')), 1, 99, 12); +$set['autoclose'] = hesk_checkMinMax(intval(hesk_POST('s_autoclose')), 0, 999, 7); +$set['max_open'] = hesk_checkMinMax(intval(hesk_POST('s_max_open')), 0, 999, 0); +$set['new_top'] = empty($_POST['s_new_top']) ? 0 : 1; +$set['reply_top'] = empty($_POST['s_reply_top']) ? 0 : 1; /* --> Features */ -$set['autologin'] = empty($_POST['s_autologin']) ? 0 : 1; -$set['autoassign'] = empty($_POST['s_autoassign']) ? 0 : 1; -$set['custclose'] = empty($_POST['s_custclose']) ? 0 : 1; -$set['custopen'] = empty($_POST['s_custopen']) ? 0 : 1; -$set['rating'] = empty($_POST['s_rating']) ? 0 : 1; -$set['cust_urgency'] = empty($_POST['s_cust_urgency']) ? 0 : 1; -$set['sequential'] = empty($_POST['s_sequential']) ? 0 : 1; -$set['time_worked'] = empty($_POST['s_time_worked']) ? 0 : 1; -$set['spam_notice'] = empty($_POST['s_spam_notice']) ? 0 : 1; -$set['list_users'] = empty($_POST['s_list_users']) ? 0 : 1; -$set['debug_mode'] = empty($_POST['s_debug_mode']) ? 0 : 1; -$set['short_link'] = empty($_POST['s_short_link']) ? 0 : 1; -$set['select_cat'] = empty($_POST['s_select_cat']) ? 0 : 1; -$set['select_pri'] = empty($_POST['s_select_pri']) ? 0 : 1; +$set['autologin'] = empty($_POST['s_autologin']) ? 0 : 1; +$set['autoassign'] = empty($_POST['s_autoassign']) ? 0 : 1; +$set['custclose'] = empty($_POST['s_custclose']) ? 0 : 1; +$set['custopen'] = empty($_POST['s_custopen']) ? 0 : 1; +$set['rating'] = empty($_POST['s_rating']) ? 0 : 1; +$set['cust_urgency'] = empty($_POST['s_cust_urgency']) ? 0 : 1; +$set['sequential'] = empty($_POST['s_sequential']) ? 0 : 1; +$set['time_worked'] = empty($_POST['s_time_worked']) ? 0 : 1; +$set['spam_notice'] = empty($_POST['s_spam_notice']) ? 0 : 1; +$set['list_users'] = empty($_POST['s_list_users']) ? 0 : 1; +$set['debug_mode'] = empty($_POST['s_debug_mode']) ? 0 : 1; +$set['short_link'] = empty($_POST['s_short_link']) ? 0 : 1; +$set['select_cat'] = empty($_POST['s_select_cat']) ? 0 : 1; +$set['select_pri'] = empty($_POST['s_select_pri']) ? 0 : 1; /* --> SPAM prevention */ -$set['secimg_use'] = empty($_POST['s_secimg_use']) ? 0 : ( hesk_POST('s_secimg_use') == 2 ? 2 : 1); -$set['secimg_sum'] = ''; -for ($i=1;$i<=10;$i++) -{ - $set['secimg_sum'] .= substr('AEUYBDGHJLMNPQRSTVWXZ123456789', rand(0,29), 1); -} -$set['recaptcha_use'] = hesk_checkMinMax( intval( hesk_POST('s_recaptcha_use') ) , 0, 2, 0); -$set['recaptcha_public_key'] = hesk_input( hesk_POST('s_recaptcha_public_key') ); -$set['recaptcha_private_key'] = hesk_input( hesk_POST('s_recaptcha_private_key') ); -$set['question_use'] = empty($_POST['s_question_use']) ? 0 : 1; -$set['question_ask'] = hesk_getHTML( hesk_POST('s_question_ask') ) or hesk_error($hesklang['err_qask']); -$set['question_ans'] = hesk_input( hesk_POST('s_question_ans'), $hesklang['err_qans']); +$set['secimg_use'] = empty($_POST['s_secimg_use']) ? 0 : (hesk_POST('s_secimg_use') == 2 ? 2 : 1); +$set['secimg_sum'] = ''; +for ($i = 1; $i <= 10; $i++) { + $set['secimg_sum'] .= substr('AEUYBDGHJLMNPQRSTVWXZ123456789', rand(0, 29), 1); +} +$set['recaptcha_use'] = hesk_checkMinMax(intval(hesk_POST('s_recaptcha_use')), 0, 2, 0); +$set['recaptcha_public_key'] = hesk_input(hesk_POST('s_recaptcha_public_key')); +$set['recaptcha_private_key'] = hesk_input(hesk_POST('s_recaptcha_private_key')); +$set['question_use'] = empty($_POST['s_question_use']) ? 0 : 1; +$set['question_ask'] = hesk_getHTML(hesk_POST('s_question_ask')) or hesk_error($hesklang['err_qask']); +$set['question_ans'] = hesk_input(hesk_POST('s_question_ans'), $hesklang['err_qans']); /* --> Security */ -$set['attempt_limit'] = hesk_checkMinMax( intval( hesk_POST('s_attempt_limit') ) , 0, 999, 5); -if ($set['attempt_limit'] > 0) -{ - $set['attempt_limit']++; +$set['attempt_limit'] = hesk_checkMinMax(intval(hesk_POST('s_attempt_limit')), 0, 999, 5); +if ($set['attempt_limit'] > 0) { + $set['attempt_limit']++; } -$set['attempt_banmin'] = hesk_checkMinMax( intval( hesk_POST('s_attempt_banmin') ) , 5, 99999, 60); +$set['attempt_banmin'] = hesk_checkMinMax(intval(hesk_POST('s_attempt_banmin')), 5, 99999, 60); $set['reset_pass'] = empty($_POST['s_reset_pass']) ? 0 : 1; $set['email_view_ticket'] = empty($_POST['s_email_view_ticket']) ? 0 : 1; /* --> Attachments */ $set['attachments']['use'] = empty($_POST['s_attach_use']) ? 0 : 1; -if ($set['attachments']['use']) -{ - $set['attachments']['max_number'] = intval( hesk_POST('s_max_number', 2) ); +if ($set['attachments']['use']) { + $set['attachments']['max_number'] = intval(hesk_POST('s_max_number', 2)); - $size = floatval( hesk_POST('s_max_size', '1.0') ); - $unit = hesk_htmlspecialchars( hesk_POST('s_max_unit', 'MB') ); + $size = floatval(hesk_POST('s_max_size', '1.0')); + $unit = hesk_htmlspecialchars(hesk_POST('s_max_unit', 'MB')); $set['attachments']['max_size'] = hesk_formatUnits($size . ' ' . $unit); - $set['attachments']['allowed_types'] = isset($_POST['s_allowed_types']) && ! is_array($_POST['s_allowed_types']) && strlen($_POST['s_allowed_types']) ? explode(',', strtolower( preg_replace('/[^a-zA-Z0-9,]/', '', $_POST['s_allowed_types']) ) ) : array(); - $set['attachments']['allowed_types'] = array_diff($set['attachments']['allowed_types'], array('php', 'php4', 'php3', 'php5', 'phps', 'phtml', 'shtml', 'shtm', 'cgi', 'pl') ); + $set['attachments']['allowed_types'] = isset($_POST['s_allowed_types']) && !is_array($_POST['s_allowed_types']) && strlen($_POST['s_allowed_types']) ? explode(',', strtolower(preg_replace('/[^a-zA-Z0-9,]/', '', $_POST['s_allowed_types']))) : array(); + $set['attachments']['allowed_types'] = array_diff($set['attachments']['allowed_types'], array('php', 'php4', 'php3', 'php5', 'phps', 'phtml', 'shtml', 'shtm', 'cgi', 'pl')); - if (count($set['attachments']['allowed_types'])) - { - $keep_these = array(); + if (count($set['attachments']['allowed_types'])) { + $keep_these = array(); - foreach ($set['attachments']['allowed_types'] as $ext) - { - if (strlen($ext) > 1) - { - $keep_these[] = '.' . $ext; - } - } + foreach ($set['attachments']['allowed_types'] as $ext) { + if (strlen($ext) > 1) { + $keep_these[] = '.' . $ext; + } + } - $set['attachments']['allowed_types'] = $keep_these; - } - else - { - $set['attachments']['allowed_types'] = array('.gif','.jpg','.png','.zip','.rar','.csv','.doc','.docx','.xls','.xlsx','.txt','.pdf'); - } -} -else -{ - $set['attachments']['max_number']=2; - $set['attachments']['max_size']=1048576; - $set['attachments']['allowed_types']=array('.gif','.jpg','.png','.zip','.rar','.csv','.doc','.docx','.xls','.xlsx','.txt','.pdf'); + $set['attachments']['allowed_types'] = $keep_these; + } else { + $set['attachments']['allowed_types'] = array('.gif', '.jpg', '.png', '.zip', '.rar', '.csv', '.doc', '.docx', '.xls', '.xlsx', '.txt', '.pdf'); + } +} else { + $set['attachments']['max_number'] = 2; + $set['attachments']['max_size'] = 1048576; + $set['attachments']['allowed_types'] = array('.gif', '.jpg', '.png', '.zip', '.rar', '.csv', '.doc', '.docx', '.xls', '.xlsx', '.txt', '.pdf'); } /*** KNOWLEDGEBASE ***/ /* --> Knowledgebase settings */ -$set['kb_enable'] = hesk_checkMinMax( intval( hesk_POST('s_kb_enable') ) , 0, 2, 1); -$set['kb_wysiwyg'] = empty($_POST['s_kb_wysiwyg']) ? 0 : 1; -$set['kb_search'] = empty($_POST['s_kb_search']) ? 0 : ( hesk_POST('s_kb_search') == 2 ? 2 : 1); -$set['kb_recommendanswers'] = empty($_POST['s_kb_recommendanswers']) ? 0 : 1; -$set['kb_views'] = empty($_POST['s_kb_views']) ? 0 : 1; -$set['kb_date'] = empty($_POST['s_kb_date']) ? 0 : 1; -$set['kb_rating'] = empty($_POST['s_kb_rating']) ? 0 : 1; -$set['kb_search_limit'] = hesk_checkMinMax( intval( hesk_POST('s_kb_search_limit') ) , 1, 99, 10); -$set['kb_substrart'] = hesk_checkMinMax( intval( hesk_POST('s_kb_substrart') ) , 20, 9999, 200); -$set['kb_cols'] = hesk_checkMinMax( intval( hesk_POST('s_kb_cols') ) , 1, 5, 2); -$set['kb_numshow'] = intval( hesk_POST('s_kb_numshow') ); // Popular articles on subcat listing -$set['kb_popart'] = intval( hesk_POST('s_kb_popart') ); // Popular articles on main category page -$set['kb_latest'] = intval( hesk_POST('s_kb_latest') ); // Popular articles on main category page -$set['kb_index_popart'] = intval( hesk_POST('s_kb_index_popart') ); -$set['kb_index_latest'] = intval( hesk_POST('s_kb_index_latest') ); -$set['kb_related'] = intval( hesk_POST('s_kb_related') ); +$set['kb_enable'] = hesk_checkMinMax(intval(hesk_POST('s_kb_enable')), 0, 2, 1); +$set['kb_wysiwyg'] = empty($_POST['s_kb_wysiwyg']) ? 0 : 1; +$set['kb_search'] = empty($_POST['s_kb_search']) ? 0 : (hesk_POST('s_kb_search') == 2 ? 2 : 1); +$set['kb_recommendanswers'] = empty($_POST['s_kb_recommendanswers']) ? 0 : 1; +$set['kb_views'] = empty($_POST['s_kb_views']) ? 0 : 1; +$set['kb_date'] = empty($_POST['s_kb_date']) ? 0 : 1; +$set['kb_rating'] = empty($_POST['s_kb_rating']) ? 0 : 1; +$set['kb_search_limit'] = hesk_checkMinMax(intval(hesk_POST('s_kb_search_limit')), 1, 99, 10); +$set['kb_substrart'] = hesk_checkMinMax(intval(hesk_POST('s_kb_substrart')), 20, 9999, 200); +$set['kb_cols'] = hesk_checkMinMax(intval(hesk_POST('s_kb_cols')), 1, 5, 2); +$set['kb_numshow'] = intval(hesk_POST('s_kb_numshow')); // Popular articles on subcat listing +$set['kb_popart'] = intval(hesk_POST('s_kb_popart')); // Popular articles on main category page +$set['kb_latest'] = intval(hesk_POST('s_kb_latest')); // Popular articles on main category page +$set['kb_index_popart'] = intval(hesk_POST('s_kb_index_popart')); +$set['kb_index_latest'] = intval(hesk_POST('s_kb_index_latest')); +$set['kb_related'] = intval(hesk_POST('s_kb_related')); /*** EMAIL ***/ @@ -261,26 +237,22 @@ if (empty($_POST['s_smtp'])) { $set['smtp'] = 0; $set['use_mailgun'] = 1; } -if ($set['smtp']) -{ - // Test SMTP connection +if ($set['smtp']) { + // Test SMTP connection $smtp_OK = hesk_testSMTP(true); - // If SMTP not working, disable it - if ( ! $smtp_OK) - { - $set['smtp'] = 0; + // If SMTP not working, disable it + if (!$smtp_OK) { + $set['smtp'] = 0; } -} -else -{ - $set['smtp_host_name'] = hesk_input( hesk_POST('tmp_smtp_host_name', 'mail.domain.com') ); - $set['smtp_host_port'] = intval( hesk_POST('tmp_smtp_host_port', 25) ); - $set['smtp_timeout'] = intval( hesk_POST('tmp_smtp_timeout', 10) ); - $set['smtp_ssl'] = empty($_POST['tmp_smtp_ssl']) ? 0 : 1; - $set['smtp_tls'] = empty($_POST['tmp_smtp_tls']) ? 0 : 1; - $set['smtp_user'] = hesk_input( hesk_POST('tmp_smtp_user') ); - $set['smtp_password'] = hesk_input( hesk_POST('tmp_smtp_password') ); +} else { + $set['smtp_host_name'] = hesk_input(hesk_POST('tmp_smtp_host_name', 'mail.domain.com')); + $set['smtp_host_port'] = intval(hesk_POST('tmp_smtp_host_port', 25)); + $set['smtp_timeout'] = intval(hesk_POST('tmp_smtp_timeout', 10)); + $set['smtp_ssl'] = empty($_POST['tmp_smtp_ssl']) ? 0 : 1; + $set['smtp_tls'] = empty($_POST['tmp_smtp_tls']) ? 0 : 1; + $set['smtp_user'] = hesk_input(hesk_POST('tmp_smtp_user')); + $set['smtp_password'] = hesk_input(hesk_POST('tmp_smtp_password')); } if ($set['use_mailgun'] == 1) { @@ -289,100 +261,88 @@ if ($set['use_mailgun'] == 1) { } /* --> Email piping */ -$set['email_piping'] = empty($_POST['s_email_piping']) ? 0 : 1; +$set['email_piping'] = empty($_POST['s_email_piping']) ? 0 : 1; /* --> POP3 fetching */ $pop3_OK = true; $set['pop3'] = empty($_POST['s_pop3']) ? 0 : 1; -if ($set['pop3']) -{ +if ($set['pop3']) { // Get POP3 fetching timeout - $set['pop3_job_wait'] = hesk_checkMinMax( intval( hesk_POST('s_pop3_job_wait') ) , 0, 1440, 15); + $set['pop3_job_wait'] = hesk_checkMinMax(intval(hesk_POST('s_pop3_job_wait')), 0, 1440, 15); - // Test POP3 connection + // Test POP3 connection $pop3_OK = hesk_testPOP3(true); - // If POP3 not working, disable it - if ( ! $pop3_OK) - { - $set['pop3'] = 0; + // If POP3 not working, disable it + if (!$pop3_OK) { + $set['pop3'] = 0; } -} -else -{ - $set['pop3_job_wait'] = intval( hesk_POST('s_pop3_job_wait', 15) ); - $set['pop3_host_name'] = hesk_input( hesk_POST('tmp_pop3_host_name', 'mail.domain.com') ); - $set['pop3_host_port'] = intval( hesk_POST('tmp_pop3_host_port', 110) ); - $set['pop3_tls'] = empty($_POST['tmp_pop3_tls']) ? 0 : 1; - $set['pop3_keep'] = empty($_POST['tmp_pop3_keep']) ? 0 : 1; - $set['pop3_user'] = hesk_input( hesk_POST('tmp_pop3_user') ); - $set['pop3_password'] = hesk_input( hesk_POST('tmp_pop3_password') ); +} else { + $set['pop3_job_wait'] = intval(hesk_POST('s_pop3_job_wait', 15)); + $set['pop3_host_name'] = hesk_input(hesk_POST('tmp_pop3_host_name', 'mail.domain.com')); + $set['pop3_host_port'] = intval(hesk_POST('tmp_pop3_host_port', 110)); + $set['pop3_tls'] = empty($_POST['tmp_pop3_tls']) ? 0 : 1; + $set['pop3_keep'] = empty($_POST['tmp_pop3_keep']) ? 0 : 1; + $set['pop3_user'] = hesk_input(hesk_POST('tmp_pop3_user')); + $set['pop3_password'] = hesk_input(hesk_POST('tmp_pop3_password')); } /* --> Email loops */ -$set['loop_hits'] = hesk_checkMinMax( intval( hesk_POST('s_loop_hits') ) , 0, 999, 5); -$set['loop_time'] = hesk_checkMinMax( intval( hesk_POST('s_loop_time') ) , 1, 86400, 300); +$set['loop_hits'] = hesk_checkMinMax(intval(hesk_POST('s_loop_hits')), 0, 999, 5); +$set['loop_time'] = hesk_checkMinMax(intval(hesk_POST('s_loop_time')), 1, 86400, 300); /* --> Detect email typos */ -$set['detect_typos'] = empty($_POST['s_detect_typos']) ? 0 : 1; +$set['detect_typos'] = empty($_POST['s_detect_typos']) ? 0 : 1; $set['email_providers'] = array(); -if ( ! empty($_POST['s_email_providers']) && ! is_array($_POST['s_email_providers']) ) -{ - $lines = preg_split('/$\R?^/m', hesk_input($_POST['s_email_providers']) ); - foreach ($lines as $domain) - { - $domain = trim($domain); +if (!empty($_POST['s_email_providers']) && !is_array($_POST['s_email_providers'])) { + $lines = preg_split('/$\R?^/m', hesk_input($_POST['s_email_providers'])); + foreach ($lines as $domain) { + $domain = trim($domain); $domain = str_replace('@', '', $domain); - $domainLen = strlen($domain); + $domainLen = strlen($domain); - /* Check domain part length */ - if ($domainLen < 1 || $domainLen > 254) - { - continue; - } + /* Check domain part length */ + if ($domainLen < 1 || $domainLen > 254) { + continue; + } - /* Check domain part characters */ - if ( ! preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain) ) - { - continue; - } + /* Check domain part characters */ + if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) { + continue; + } - /* Domain part mustn't have two consecutive dots */ - if ( strpos($domain, '..') !== false ) - { - continue; - } + /* Domain part mustn't have two consecutive dots */ + if (strpos($domain, '..') !== false) { + continue; + } - $set['email_providers'][] = $domain; - } + $set['email_providers'][] = $domain; + } } -if ( ! $set['detect_typos'] || count($set['email_providers']) < 1 ) -{ - $set['detect_typos'] = 0; - $set['email_providers'] = array('gmail.com','hotmail.com','hotmail.co.uk','yahoo.com','yahoo.co.uk','aol.com','aol.co.uk','msn.com','live.com','live.co.uk','mail.com','googlemail.com','btinternet.com','btopenworld.com'); +if (!$set['detect_typos'] || count($set['email_providers']) < 1) { + $set['detect_typos'] = 0; + $set['email_providers'] = array('gmail.com', 'hotmail.com', 'hotmail.co.uk', 'yahoo.com', 'yahoo.co.uk', 'aol.com', 'aol.co.uk', 'msn.com', 'live.com', 'live.co.uk', 'mail.com', 'googlemail.com', 'btinternet.com', 'btopenworld.com'); } -$set['email_providers'] = count($set['email_providers']) ? "'" . implode("','", $set['email_providers']) . "'" : ''; +$set['email_providers'] = count($set['email_providers']) ? "'" . implode("','", $set['email_providers']) . "'" : ''; /* --> Notify customer when */ -$set['notify_new'] = empty($_POST['s_notify_new']) ? 0 : 1; -$set['notify_closed'] = empty($_POST['s_notify_closed']) ? 0 : 1; +$set['notify_new'] = empty($_POST['s_notify_new']) ? 0 : 1; +$set['notify_closed'] = empty($_POST['s_notify_closed']) ? 0 : 1; // SPAM tags $set['notify_skip_spam'] = empty($_POST['s_notify_skip_spam']) ? 0 : 1; $set['notify_spam_tags'] = array(); -if ( ! empty($_POST['s_notify_spam_tags']) && ! is_array($_POST['s_notify_spam_tags']) ) -{ +if (!empty($_POST['s_notify_spam_tags']) && !is_array($_POST['s_notify_spam_tags'])) { $lines = preg_split('/$\R?^/m', $_POST['s_notify_spam_tags']); - foreach ($lines as $tag) - { + foreach ($lines as $tag) { // Remove dangerous tags just as an extra precaution - $tag = str_replace( array(' 50) - { + if (strlen($tag) < 1 || strlen($tag) > 50) { continue; } // Escape single quotes and backslashes - $set['notify_spam_tags'][] = str_replace( array("\\", "'"), array("\\\\", "\\'"), $tag); // ' + $set['notify_spam_tags'][] = str_replace(array("\\", "'"), array("\\\\", "\\'"), $tag); // ' } } -if ( count($set['notify_spam_tags']) < 1 ) -{ +if (count($set['notify_spam_tags']) < 1) { $set['notify_skip_spam'] = 0; - $set['notify_spam_tags'] = array('Spam?}','***SPAM***','[SPAM]','SPAM-LOW:','SPAM-MED:'); + $set['notify_spam_tags'] = array('Spam?}', '***SPAM***', '[SPAM]', 'SPAM-LOW:', 'SPAM-MED:'); } -$set['notify_spam_tags'] = count($set['notify_spam_tags']) ? "'" . implode("','", $set['notify_spam_tags']) . "'" : ''; +$set['notify_spam_tags'] = count($set['notify_spam_tags']) ? "'" . implode("','", $set['notify_spam_tags']) . "'" : ''; /* --> Other */ -$set['strip_quoted'] = empty($_POST['s_strip_quoted']) ? 0 : 1; -$set['eml_req_msg'] = empty($_POST['s_eml_req_msg']) ? 0 : 1; -$set['save_embedded'] = empty($_POST['s_save_embedded']) ? 0 : 1; -$set['multi_eml'] = empty($_POST['s_multi_eml']) ? 0 : 1; -$set['confirm_email'] = empty($_POST['s_confirm_email']) ? 0 : 1; -$set['open_only'] = empty($_POST['s_open_only']) ? 0 : 1; +$set['strip_quoted'] = empty($_POST['s_strip_quoted']) ? 0 : 1; +$set['eml_req_msg'] = empty($_POST['s_eml_req_msg']) ? 0 : 1; +$set['save_embedded'] = empty($_POST['s_save_embedded']) ? 0 : 1; +$set['multi_eml'] = empty($_POST['s_multi_eml']) ? 0 : 1; +$set['confirm_email'] = empty($_POST['s_confirm_email']) ? 0 : 1; +$set['open_only'] = empty($_POST['s_open_only']) ? 0 : 1; /*** TICKET LIST ***/ $set['ticket_list'] = array(); -foreach ($hesk_settings['possible_ticket_list'] as $key => $title) -{ - if ( hesk_POST('s_tl_'.$key, 0) == 1) - { +foreach ($hesk_settings['possible_ticket_list'] as $key => $title) { + if (hesk_POST('s_tl_' . $key, 0) == 1) { $set['ticket_list'][] = $key; } } // We need at least one of these: id, trackid, subject -if ( ! in_array('id', $set['ticket_list']) && ! in_array('trackid', $set['ticket_list']) && ! in_array('subject', $set['ticket_list']) ) -{ +if (!in_array('id', $set['ticket_list']) && !in_array('trackid', $set['ticket_list']) && !in_array('subject', $set['ticket_list'])) { $set['ticket_list'][] = 'trackid'; } -$set['ticket_list'] = count($set['ticket_list']) ? "'" . implode("','", $set['ticket_list']) . "'" : 'trackid'; +$set['ticket_list'] = count($set['ticket_list']) ? "'" . implode("','", $set['ticket_list']) . "'" : 'trackid'; /* --> Other */ -$set['submittedformat'] = hesk_checkMinMax( intval( hesk_POST('s_submittedformat') ) , 0, 2, 2); -$set['updatedformat'] = hesk_checkMinMax( intval( hesk_POST('s_updatedformat') ) , 0, 2, 2); +$set['submittedformat'] = hesk_checkMinMax(intval(hesk_POST('s_submittedformat')), 0, 2, 2); +$set['updatedformat'] = hesk_checkMinMax(intval(hesk_POST('s_updatedformat')), 0, 2, 2); /*** MISC ***/ /* --> Date & Time */ -$set['diff_hours'] = floatval( hesk_POST('s_diff_hours', 0) ); -$set['diff_minutes'] = floatval( hesk_POST('s_diff_minutes', 0) ); -$set['daylight'] = empty($_POST['s_daylight']) ? 0 : 1; -$set['timeformat'] = hesk_input( hesk_POST('s_timeformat') ) or $set['timeformat'] = 'Y-m-d H:i:s'; +$set['diff_hours'] = floatval(hesk_POST('s_diff_hours', 0)); +$set['diff_minutes'] = floatval(hesk_POST('s_diff_minutes', 0)); +$set['daylight'] = empty($_POST['s_daylight']) ? 0 : 1; +$set['timeformat'] = hesk_input(hesk_POST('s_timeformat')) or $set['timeformat'] = 'Y-m-d H:i:s'; /* --> Other */ -$set['ip_whois'] = hesk_input( hesk_POST('s_ip_whois', 'http://whois.domaintools.com/{IP}') ); +$set['ip_whois'] = hesk_input(hesk_POST('s_ip_whois', 'http://whois.domaintools.com/{IP}')); // If no {IP} tag append it to the end -if ( strlen($set['ip_whois']) == 0 ) -{ +if (strlen($set['ip_whois']) == 0) { $set['ip_whois'] = 'http://whois.domaintools.com/{IP}'; -} -elseif ( strpos($set['ip_whois'], '{IP}') === false ) -{ +} elseif (strpos($set['ip_whois'], '{IP}') === false) { $set['ip_whois'] .= '{IP}'; } -$set['maintenance_mode']= empty($_POST['s_maintenance_mode']) ? 0 : 1; -$set['alink'] = empty($_POST['s_alink']) ? 0 : 1; -$set['submit_notice'] = empty($_POST['s_submit_notice']) ? 0 : 1; -$set['online'] = empty($_POST['s_online']) ? 0 : 1; -$set['online_min'] = hesk_checkMinMax( intval( hesk_POST('s_online_min') ) , 1, 999, 10); -$set['check_updates'] = empty($_POST['s_check_updates']) ? 0 : 1; +$set['maintenance_mode'] = empty($_POST['s_maintenance_mode']) ? 0 : 1; +$set['alink'] = empty($_POST['s_alink']) ? 0 : 1; +$set['submit_notice'] = empty($_POST['s_submit_notice']) ? 0 : 1; +$set['online'] = empty($_POST['s_online']) ? 0 : 1; +$set['online_min'] = hesk_checkMinMax(intval(hesk_POST('s_online_min')), 1, 999, 10); +$set['check_updates'] = empty($_POST['s_check_updates']) ? 0 : 1; /*** CUSTOM FIELDS ***/ -for ($i=1;$i<=20;$i++) -{ - $this_field='custom' . $i; - $set['custom_fields'][$this_field]['use'] = ! empty($_POST['s_custom'.$i.'_use']) ? 1 : 0; - - if ($set['custom_fields'][$this_field]['use']) - { - $set['custom_fields'][$this_field]['place'] = empty($_POST['s_custom'.$i.'_place']) ? 0 : 1; - $set['custom_fields'][$this_field]['type'] = hesk_htmlspecialchars( hesk_POST('s_custom'.$i.'_type', 'text') ); - $set['custom_fields'][$this_field]['req'] = ! empty($_POST['s_custom'.$i.'_req']) ? 1 : 0; - $set['custom_fields'][$this_field]['name'] = hesk_input( hesk_POST('s_custom'.$i.'_name'), $hesklang['err_custname']); - $set['custom_fields'][$this_field]['maxlen'] = intval( hesk_POST('s_custom'.$i.'_maxlen', 255) ); - $set['custom_fields'][$this_field]['value'] = hesk_input( hesk_POST('s_custom'.$i.'_val') ); - - if ($set['custom_fields'][$this_field]['type'] == 'email' && $set['custom_fields'][$this_field]['value'] == '') - { +for ($i = 1; $i <= 20; $i++) { + $this_field = 'custom' . $i; + $set['custom_fields'][$this_field]['use'] = !empty($_POST['s_custom' . $i . '_use']) ? 1 : 0; + + if ($set['custom_fields'][$this_field]['use']) { + $set['custom_fields'][$this_field]['place'] = empty($_POST['s_custom' . $i . '_place']) ? 0 : 1; + $set['custom_fields'][$this_field]['type'] = hesk_htmlspecialchars(hesk_POST('s_custom' . $i . '_type', 'text')); + $set['custom_fields'][$this_field]['req'] = !empty($_POST['s_custom' . $i . '_req']) ? 1 : 0; + $set['custom_fields'][$this_field]['name'] = hesk_input(hesk_POST('s_custom' . $i . '_name'), $hesklang['err_custname']); + $set['custom_fields'][$this_field]['maxlen'] = intval(hesk_POST('s_custom' . $i . '_maxlen', 255)); + $set['custom_fields'][$this_field]['value'] = hesk_input(hesk_POST('s_custom' . $i . '_val')); + + if ($set['custom_fields'][$this_field]['type'] == 'email' && $set['custom_fields'][$this_field]['value'] == '') { // New custom field without any options set. Default to Cc $set['custom_fields'][$this_field]['value'] = 'cc'; } - if (!in_array($set['custom_fields'][$this_field]['type'],array('text','textarea','select','radio','checkbox','date','multiselect','email','hidden','readonly'))) - { - $set['custom_fields'][$this_field]['type'] = 'text'; + if (!in_array($set['custom_fields'][$this_field]['type'], array('text', 'textarea', 'select', 'radio', 'checkbox', 'date', 'multiselect', 'email', 'hidden', 'readonly'))) { + $set['custom_fields'][$this_field]['type'] = 'text'; } - // Try to detect if field type changed to anything except "select" - if ($set['custom_fields'][$this_field]['type'] != 'select') - { - // If type is "radio" or "checkbox" remove "please select", keep other options - $set['custom_fields'][$this_field]['value'] = str_replace('{HESK_SELECT}', '', $set['custom_fields'][$this_field]['value']); - - // Field type changed to "text" or "textarea", clear default value if it contains "#HESK#" separator - if ( in_array($set['custom_fields'][$this_field]['type'], array('text','textarea')) && ! in_array($hesk_settings['custom_fields'][$this_field]['type'], array('text','textarea')) && strpos($set['custom_fields'][$this_field]['value'], '#HESK#') !== false ) - { - $set['custom_fields'][$this_field]['value'] = ''; - } - } - } - else - { - $set['custom_fields'][$this_field] = array('use'=>0,'place'=>0,'type'=>'text','req'=>0,'name'=>'Custom field '.$i ,'maxlen'=>255,'value'=>''); - } + // Try to detect if field type changed to anything except "select" + if ($set['custom_fields'][$this_field]['type'] != 'select') { + // If type is "radio" or "checkbox" remove "please select", keep other options + $set['custom_fields'][$this_field]['value'] = str_replace('{HESK_SELECT}', '', $set['custom_fields'][$this_field]['value']); + + // Field type changed to "text" or "textarea", clear default value if it contains "#HESK#" separator + if (in_array($set['custom_fields'][$this_field]['type'], array('text', 'textarea')) && !in_array($hesk_settings['custom_fields'][$this_field]['type'], array('text', 'textarea')) && strpos($set['custom_fields'][$this_field]['value'], '#HESK#') !== false) { + $set['custom_fields'][$this_field]['value'] = ''; + } + } + } else { + $set['custom_fields'][$this_field] = array('use' => 0, 'place' => 0, 'type' => 'text', 'req' => 0, 'name' => 'Custom field ' . $i, 'maxlen' => 255, 'value' => ''); + } } $set['hesk_version'] = $hesk_settings['hesk_version']; // Process quick help sections hesk_dbConnect(); -hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."quick_help_sections` SET `show` = '0'"); +hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "quick_help_sections` SET `show` = '0'"); $postArray = hesk_POST_array('quick_help_sections'); foreach ($postArray as $value) { - hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."quick_help_sections` SET `show` = '1' WHERE `id` = '".intval($value)."'"); + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "quick_help_sections` SET `show` = '1' WHERE `id` = '" . intval($value) . "'"); } // Save the modsForHesk_settings.inc.php file @@ -531,7 +475,7 @@ $set['custom-field-setting'] = empty($_POST['custom-field-setting']) ? 0 : 1; $set['customer-email-verification-required'] = empty($_POST['email-verification']) ? 0 : 1; $set['html_emails'] = empty($_POST['html_emails']) ? 0 : 1; $set['use_bootstrap_theme'] = empty($_POST['use_bootstrap_theme']) ? 0 : 1; -$set['new_kb_article_visibility'] = hesk_checkMinMax( intval( hesk_POST('new_kb_article_visibility') ) , 0, 2, 2); +$set['new_kb_article_visibility'] = hesk_checkMinMax(intval(hesk_POST('new_kb_article_visibility')), 0, 2, 2); $set['mfh_attachments'] = empty($_POST['email_attachments']) ? 0 : 1; $set['show_number_merged'] = empty($_POST['show_number_merged']) ? 0 : 1; $set['request_location'] = empty($_POST['request_location']) ? 0 : 1; @@ -539,22 +483,21 @@ $set['category_order_column'] = empty($_POST['category_order_column']) ? 'cat_or $rich_text_setting = hesk_POST('rich_text_for_tickets', 0); if ($rich_text_setting == 0) { - $set['rich_text_for_tickets'] = 0; - $set['rich_text_for_tickets_for_customers'] = 0; + $set['rich_text_for_tickets'] = 0; + $set['rich_text_for_tickets_for_customers'] = 0; } elseif ($rich_text_setting == 1) { - $set['rich_text_for_tickets'] = 1; - $set['rich_text_for_tickets_for_customers'] = 0; + $set['rich_text_for_tickets'] = 1; + $set['rich_text_for_tickets_for_customers'] = 0; } else { - $set['rich_text_for_tickets'] = 1; - $set['rich_text_for_tickets_for_customers'] = 1; + $set['rich_text_for_tickets'] = 1; + $set['rich_text_for_tickets_for_customers'] = 1; } $set['statuses_order_column'] = empty($_POST['statuses_order_column']) ? 'sort' : 'name'; $set['kb_attach_dir'] = hesk_POST('kb_attach_dir', 'attachments'); $set['display_user_agent_information'] = empty($_POST['display_user_agent_information']) ? 0 : 1; -if ($set['customer-email-verification-required']) -{ +if ($set['customer-email-verification-required']) { //-- Don't allow multiple emails if verification is required $set['multi_eml'] = 0; } @@ -598,7 +541,7 @@ mfh_updateSetting('dropdownItemTextHoverBackgroundColor', $set['dropdownItemText mfh_updateSetting('display_user_agent_information', $set['display_user_agent_information']); // Prepare settings file and save it -$settings_file_content=' GENERAL @@ -614,7 +557,7 @@ $hesk_settings[\'noreply_name\']=\'' . $set['noreply_name'] . '\'; $hesk_settings[\'can_sel_lang\']=' . $set['can_sel_lang'] . '; $hesk_settings[\'language\']=\'' . $set['language'] . '\'; $hesk_settings[\'languages\']=array( -'.$set['languages'].'); +' . $set['languages'] . '); // --> Database settings $hesk_settings[\'db_host\']=\'' . $set['db_host'] . '\'; @@ -676,7 +619,7 @@ $hesk_settings[\'attachments\']=array ( \'use\' => ' . $set['attachments']['use'] . ', \'max_number\' => ' . $set['attachments']['max_number'] . ', \'max_size\' => ' . $set['attachments']['max_size'] . ', -\'allowed_types\' => array(\'' . implode('\',\'',$set['attachments']['allowed_types']) . '\') +\'allowed_types\' => array(\'' . implode('\',\'', $set['attachments']['allowed_types']) . '\') ); @@ -780,13 +723,15 @@ $hesk_settings[\'check_updates\']=' . $set['check_updates'] . '; $hesk_settings[\'custom_fields\']=array ( '; -for ($i=1;$i<=20;$i++) { - $settings_file_content.='\'custom'.$i.'\'=>array(\'use\'=>'.$set['custom_fields']['custom'.$i]['use'].',\'place\'=>'.$set['custom_fields']['custom'.$i]['place'].',\'type\'=>\''.$set['custom_fields']['custom'.$i]['type'].'\',\'req\'=>'.$set['custom_fields']['custom'.$i]['req'].',\'name\'=>\''.$set['custom_fields']['custom'.$i]['name'].'\',\'maxlen\'=>'.$set['custom_fields']['custom'.$i]['maxlen'].',\'value\'=>\''.$set['custom_fields']['custom'.$i]['value'].'\')'; - if ($i!=20) {$settings_file_content.=', -';} +for ($i = 1; $i <= 20; $i++) { + $settings_file_content .= '\'custom' . $i . '\'=>array(\'use\'=>' . $set['custom_fields']['custom' . $i]['use'] . ',\'place\'=>' . $set['custom_fields']['custom' . $i]['place'] . ',\'type\'=>\'' . $set['custom_fields']['custom' . $i]['type'] . '\',\'req\'=>' . $set['custom_fields']['custom' . $i]['req'] . ',\'name\'=>\'' . $set['custom_fields']['custom' . $i]['name'] . '\',\'maxlen\'=>' . $set['custom_fields']['custom' . $i]['maxlen'] . ',\'value\'=>\'' . $set['custom_fields']['custom' . $i]['value'] . '\')'; + if ($i != 20) { + $settings_file_content .= ', +'; + } } -$settings_file_content.=' +$settings_file_content .= ' ); ############################# @@ -804,154 +749,123 @@ else if (!defined(\'IN_SCRIPT\')) {die(\'Invalid attempt!\');}'; // Write to the settings file -if ( ! file_put_contents(HESK_PATH . 'hesk_settings.inc.php', $settings_file_content) ) -{ - hesk_error($hesklang['err_openset']); +if (!file_put_contents(HESK_PATH . 'hesk_settings.inc.php', $settings_file_content)) { + hesk_error($hesklang['err_openset']); } // Any settings problems? $tmp = array(); -if ( ! $smtp_OK) -{ - $tmp[] = ''.$hesklang['sme'].': '.$smtp_error.'

    '.$hesklang['scl'].''; +if (!$smtp_OK) { + $tmp[] = '' . $hesklang['sme'] . ': ' . $smtp_error . '

    ' . $hesklang['scl'] . ''; } -if ( ! $pop3_OK) -{ - $tmp[] = ''.$hesklang['pop3e'].': '.$pop3_error.'

    '.$hesklang['pop3log'].''; +if (!$pop3_OK) { + $tmp[] = '' . $hesklang['pop3e'] . ': ' . $pop3_error . '

    ' . $hesklang['pop3log'] . ''; } // Show the settings page and display any notices or success -if ( count($tmp) ) -{ - $errors = implode('

    ', $tmp); - hesk_process_messages( $hesklang['sns'] . '

    ' . $errors,'admin_settings.php','NOTICE'); -} -else -{ - hesk_process_messages($hesklang['set_were_saved'],'admin_settings.php','SUCCESS'); +if (count($tmp)) { + $errors = implode('

    ', $tmp); + hesk_process_messages($hesklang['sns'] . '

    ' . $errors, 'admin_settings.php', 'NOTICE'); +} else { + hesk_process_messages($hesklang['set_were_saved'], 'admin_settings.php', 'SUCCESS'); } exit(); -function mfh_updateSetting($key, $value, $isString = false) { - global $hesk_settings; +function mfh_updateSetting($key, $value, $isString = false) +{ + global $hesk_settings; - $formattedValue = $isString ? "'".hesk_dbEscape($value)."'" : intval($value); + $formattedValue = $isString ? "'" . hesk_dbEscape($value) . "'" : intval($value); - hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."settings` SET `Value` = ".$formattedValue." WHERE `Key` = '".$key."'"); + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` SET `Value` = " . $formattedValue . " WHERE `Key` = '" . $key . "'"); } -function hesk_checkMinMax($myint,$min,$max,$defval) +function hesk_checkMinMax($myint, $min, $max, $defval) { - if ($myint > $max || $myint < $min) - { - return $defval; - } - return $myint; + if ($myint > $max || $myint < $min) { + return $defval; + } + return $myint; } // END hesk_checkMinMax() -function hesk_getLanguagesArray($returnArray=0) +function hesk_getLanguagesArray($returnArray = 0) { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* Get a list of valid emails */ + /* Get a list of valid emails */ $hesk_settings['smtp'] = 0; - $valid_emails = array_keys( hesk_validEmails() ); + $valid_emails = array_keys(hesk_validEmails()); - $dir = HESK_PATH . 'language/'; - $path = opendir($dir); + $dir = HESK_PATH . 'language/'; + $path = opendir($dir); $code = ''; $langArray = array(); /* Test all folders inside the language folder */ - while (false !== ($subdir = readdir($path))) - { - if ($subdir == "." || $subdir == "..") - { - continue; - } - - if (filetype($dir . $subdir) == 'dir') - { - $add = 1; - $langu = $dir . $subdir . '/text.php'; - $email = $dir . $subdir . '/emails'; - - /* Check the text.php */ - if (file_exists($langu)) - { - $tmp = file_get_contents($langu); - - // Some servers add slashes to file_get_contents output - if ( strpos ($tmp, '[\\\'LANGUAGE\\\']') !== false ) - { - $tmp = stripslashes($tmp); - } - - $err = ''; - if ( ! preg_match('/\$hesklang\[\'LANGUAGE\'\]\=\'(.*)\'\;/', $tmp, $l) ) - { - $add = 0; - } - elseif ( ! preg_match('/\$hesklang\[\'ENCODING\'\]\=\'(.*)\'\;/', $tmp) ) - { - $add = 0; - } - elseif ( ! preg_match('/\$hesklang\[\'_COLLATE\'\]\=\'(.*)\'\;/', $tmp) ) - { - $add = 0; - } - elseif ( ! preg_match('/\$hesklang\[\'EMAIL_HR\'\]\=\'(.*)\'\;/', $tmp, $hr) ) - { - $add = 0; + while (false !== ($subdir = readdir($path))) { + if ($subdir == "." || $subdir == "..") { + continue; + } + + if (filetype($dir . $subdir) == 'dir') { + $add = 1; + $langu = $dir . $subdir . '/text.php'; + $email = $dir . $subdir . '/emails'; + + /* Check the text.php */ + if (file_exists($langu)) { + $tmp = file_get_contents($langu); + + // Some servers add slashes to file_get_contents output + if (strpos($tmp, '[\\\'LANGUAGE\\\']') !== false) { + $tmp = stripslashes($tmp); } - elseif ( ! preg_match('/\$hesklang\[\'ms01\'\]/', $tmp) ) - { - $add = 0; + + $err = ''; + if (!preg_match('/\$hesklang\[\'LANGUAGE\'\]\=\'(.*)\'\;/', $tmp, $l)) { + $add = 0; + } elseif (!preg_match('/\$hesklang\[\'ENCODING\'\]\=\'(.*)\'\;/', $tmp)) { + $add = 0; + } elseif (!preg_match('/\$hesklang\[\'_COLLATE\'\]\=\'(.*)\'\;/', $tmp)) { + $add = 0; + } elseif (!preg_match('/\$hesklang\[\'EMAIL_HR\'\]\=\'(.*)\'\;/', $tmp, $hr)) { + $add = 0; + } elseif (!preg_match('/\$hesklang\[\'ms01\'\]/', $tmp)) { + $add = 0; } - } - else - { - $add = 0; - } + } else { + $add = 0; + } /* Check emails folder */ - if (file_exists($email) && filetype($email) == 'dir') - { - foreach ($valid_emails as $eml) - { - if (!file_exists($email.'/'.$eml.'.txt')) - { - $add = 0; - } - } - } - else - { - $add = 0; - } + if (file_exists($email) && filetype($email) == 'dir') { + foreach ($valid_emails as $eml) { + if (!file_exists($email . '/' . $eml . '.txt')) { + $add = 0; + } + } + } else { + $add = 0; + } /* Add an option for the - - - : - - - - : - - - - -
    - - - - - - -
    - - - - +
  • +
    + + + + + + + + + +
  • +

    fetch_assoc(); - echo ' - '; - echo ' '.$parent['trackid'].''; + $parent = hesk_dbQuery('SELECT `trackid` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'tickets` + WHERE `ID` = ' . hesk_dbEscape($ticket['parent']))->fetch_assoc(); + echo ' + '; + echo ' ' . $parent['trackid'] . ''; } else { echo $hesklang['none']; } - ?>

    + ?>

  • +

    fetch_assoc()) { - $hasRows = true; - echo ' - '; - echo ' '.$row['trackid'].''; - echo '
    '; - } - if (!$hasRows) { - echo $hesklang['none']; - } - ?>

    + //-- Check if any tickets have a parent set to this tracking ID + $hasRows = false; + $childrenRS = hesk_dbQuery('SELECT * FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'tickets` + WHERE `parent` = ' . hesk_dbEscape($ticket['id'])); + while ($row = $childrenRS->fetch_assoc()) { + $hasRows = true; + echo ' + '; + echo ' ' . $row['trackid'] . ''; + echo '
    '; + } + if (!$hasRows) { + echo $hesklang['none']; + } + ?>

    -

    '.$hesklang['add_child'].''; ?>

    - + ?> +
    +

    ' . $hesklang['add_child'] . ''; ?>

    +
    +
  • @@ -849,7 +769,7 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); - '.$recentTicket['trackid'].''; ?> + ' . $recentTicket['trackid'] . ''; ?>

    @@ -864,9 +784,9 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); /* Do we need or have any canned responses? */ $can_options = hesk_printCanned(); - + echo hesk_getAdminButtons(); - ?> + ?>
    @@ -874,12 +794,10 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');

     '; + if ($ticket['archive']) { + echo '  '; } - if ($ticket['locked']) - { + if ($ticket['locked']) { echo ' '; } if ($modsForHesk_settings['display_user_agent_information'] @@ -887,13 +805,15 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); && $ticket['screen_resolution_height'] !== NULL && $ticket['screen_resolution_height'] != 0 && $ticket['screen_resolution_width'] !== NULL - && $ticket['screen_resolution_width'] != 0): - ?> + && $ticket['screen_resolution_width'] != 0 + ): + ?> -
    +
    - +
    + if ($can_view_unassigned) { + ?>
    - -
    - /> + +
    + + ?>
    + if ($can_view_ass_others) { + ?>
    - +
    -
    - +
    -
    -
    +

    +
    +
    - +
    - -
    + +
    - +
    - -
    + +
    - +
    - -
    -
    -
    + +
    +
    +
    +
    -
    + +
    +
    -
    -
    - +
    +
    + +
    +
    + +
    -
    - -
    -
    - - -
    + + +
    diff --git a/admin/find_tickets.php b/admin/find_tickets.php index 6836f7d5..e9b00417 100644 --- a/admin/find_tickets.php +++ b/admin/find_tickets.php @@ -1,39 +1,35 @@ - -
    -
    -
    -
    -

    -
    - - +
    +
    +
    +
    +

    +
    + + $v) -{ - if ($v['use']) - { - $sql_final .= ", `".$k."`"; - } -} - -$sql_final.= " FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` WHERE "; - -// This code will be used to count number of results -$sql_count = "SELECT COUNT(*) FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` WHERE "; - -// This is common SQL for both queries -$sql = ""; - -// Some default settings -$archive = array(1=>0,2=>0); -$s_my = array(1=>1,2=>1); -$s_ot = array(1=>1,2=>1); -$s_un = array(1=>1,2=>1); - -// --> TICKET CATEGORY -$category = intval( hesk_GET('category', 0) ); - -// Make sure user has access to this category -if ($category && hesk_okCategory($category, 0) ) -{ - $sql .= " `category`='{$category}' "; -} -// No category selected, show only allowed categories -else -{ - $sql .= hesk_myCategories(); -} - -// Show only tagged tickets? -if ( ! empty($_GET['archive']) ) -{ - $archive[2]=1; - $sql .= " AND `archive`='1' "; -} - -// Ticket owner preferences -$fid = 2; -require(HESK_PATH . 'inc/assignment_search.inc.php'); - -$hesk_error_buffer = ''; -$no_query = 0; - -// Search query -$q = stripslashes( hesk_input( hesk_GET('q', '') ) ); - -// No query entered? -if ( ! strlen($q) ) -{ - $hesk_error_buffer .= $hesklang['fsq']; - $no_query = 1; -} - -// What field are we searching in -$what = hesk_GET('what', '') or $hesk_error_buffer .= '
    ' . $hesklang['wsel']; - -// Sequential ID supported? -if ($what == 'seqid' && ! $hesk_settings['sequential']) -{ - $what = 'trackid'; -} - -// Setup SQL based on searching preferences -if ( ! $no_query) -{ - $sql .= " AND "; - - switch ($what) - { - case 'trackid': - $sql .= " ( `trackid` = '".hesk_dbEscape($q)."' OR `merged` LIKE '%#".hesk_dbEscape($q)."#%' ) "; - break; - case 'name': - $sql .= "`name` LIKE '%".hesk_dbEscape($q)."%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' "; - break; - case 'email': - $sql .= "`email` LIKE '%".hesk_dbEscape($q)."%' "; - break; - case 'subject': - $sql .= "`subject` LIKE '%".hesk_dbEscape($q)."%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' "; - break; - case 'message': - $sql .= " ( `message` LIKE '%".hesk_dbEscape($q)."%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' + foreach ($hesk_settings['custom_fields'] as $k => $v) { + if ($v['use']) { + $sql_final .= ", `" . $k . "`"; + } + } + + $sql_final .= " FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` WHERE "; + + // This code will be used to count number of results + $sql_count = "SELECT COUNT(*) FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` WHERE "; + + // This is common SQL for both queries + $sql = ""; + + // Some default settings + $archive = array(1 => 0, 2 => 0); + $s_my = array(1 => 1, 2 => 1); + $s_ot = array(1 => 1, 2 => 1); + $s_un = array(1 => 1, 2 => 1); + + // --> TICKET CATEGORY + $category = intval(hesk_GET('category', 0)); + + // Make sure user has access to this category + if ($category && hesk_okCategory($category, 0)) { + $sql .= " `category`='{$category}' "; + } // No category selected, show only allowed categories + else { + $sql .= hesk_myCategories(); + } + + // Show only tagged tickets? + if (!empty($_GET['archive'])) { + $archive[2] = 1; + $sql .= " AND `archive`='1' "; + } + + // Ticket owner preferences + $fid = 2; + require(HESK_PATH . 'inc/assignment_search.inc.php'); + + $hesk_error_buffer = ''; + $no_query = 0; + + // Search query + $q = stripslashes(hesk_input(hesk_GET('q', ''))); + + // No query entered? + if (!strlen($q)) { + $hesk_error_buffer .= $hesklang['fsq']; + $no_query = 1; + } + + // What field are we searching in + $what = hesk_GET('what', '') or $hesk_error_buffer .= '
    ' . $hesklang['wsel']; + + // Sequential ID supported? + if ($what == 'seqid' && !$hesk_settings['sequential']) { + $what = 'trackid'; + } + + // Setup SQL based on searching preferences + if (!$no_query) { + $sql .= " AND "; + + switch ($what) { + case 'trackid': + $sql .= " ( `trackid` = '" . hesk_dbEscape($q) . "' OR `merged` LIKE '%#" . hesk_dbEscape($q) . "#%' ) "; + break; + case 'name': + $sql .= "`name` LIKE '%" . hesk_dbEscape($q) . "%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' "; + break; + case 'email': + $sql .= "`email` LIKE '%" . hesk_dbEscape($q) . "%' "; + break; + case 'subject': + $sql .= "`subject` LIKE '%" . hesk_dbEscape($q) . "%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' "; + break; + case 'message': + $sql .= " ( `message` LIKE '%" . hesk_dbEscape($q) . "%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' OR `id` IN ( SELECT DISTINCT `replyto` - FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."replies` - WHERE `message` LIKE '%".hesk_dbEscape($q)."%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' ) + FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "replies` + WHERE `message` LIKE '%" . hesk_dbEscape($q) . "%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' ) ) "; - break; - case 'seqid': - $sql .= "`id` = '".intval($q)."' "; - break; - case 'notes': - $sql .= "`id` IN ( + break; + case 'seqid': + $sql .= "`id` = '" . intval($q) . "' "; + break; + case 'notes': + $sql .= "`id` IN ( SELECT DISTINCT `ticket` - FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."notes` - WHERE `message` LIKE '%".hesk_dbEscape($q)."%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' ) + FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "notes` + WHERE `message` LIKE '%" . hesk_dbEscape($q) . "%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' ) "; - break; - default: - if (isset($hesk_settings['custom_fields'][$what]) && $hesk_settings['custom_fields'][$what]['use']) - { - $sql .= "`".hesk_dbEscape($what)."` LIKE '%".hesk_dbEscape($q)."%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' "; - } - else - { - $hesk_error_buffer .= '
    ' . $hesklang['invalid_search']; - } - } -} - -// Owner -if ( $tmp = intval( hesk_GET('owner', 0) ) ) -{ - $sql .= " AND `owner`={$tmp} "; - $owner_input = $tmp; - $hesk_error_buffer = str_replace($hesklang['fsq'],'',$hesk_error_buffer); -} -else -{ - $owner_input = 0; -} - -/* Date */ -/* -> Check for compatibility with old date format */ -if (preg_match("/(\d{4})-(\d{2})-(\d{2})/", hesk_GET('dt'), $m)) -{ - $_GET['dt']=$m[2].$m[3].$m[1]; -} - -/* -> Now process the date value */ -$dt = preg_replace('/[^0-9]/','', hesk_GET('dt') ); -if (strlen($dt) == 8) -{ - $date = substr($dt,4,4) . '-' . substr($dt,0,2) . '-' . substr($dt,2,2); - $date_input= substr($dt,0,2) . '/' . substr($dt,2,2) . '/' . substr($dt,4,4); - - /* This search is valid even if no query is entered */ - if ($no_query) - { - $hesk_error_buffer = str_replace($hesklang['fsq'],'',$hesk_error_buffer); - } - - $sql .= " AND `dt` BETWEEN '{$date} 00:00:00' AND '{$date} 23:59:59' "; -} -else -{ - $date = ''; - $date_input = ''; -} - -/* Any errors? */ -if (strlen($hesk_error_buffer)) -{ - hesk_process_messages($hesk_error_buffer,'NOREDIRECT'); -} - -/* This will handle error, success and notice messages */ -$handle = hesk_handle_messages(); - -# echo "$sql
    "; - -// That's all the SQL we need for count -$sql_count .= $sql; -$sql = $sql_final . $sql; - -/* Prepare variables used in search and forms */ -require_once(HESK_PATH . 'inc/prepare_ticket_search.inc.php'); - -/* If there has been an error message skip searching for tickets */ -if ($handle !== FALSE) -{ - $href = 'find_tickets.php'; - require_once(HESK_PATH . 'inc/ticket_list.inc.php'); -} -?> - - + break; + default: + if (isset($hesk_settings['custom_fields'][$what]) && $hesk_settings['custom_fields'][$what]['use']) { + $sql .= "`" . hesk_dbEscape($what) . "` LIKE '%" . hesk_dbEscape($q) . "%' COLLATE '" . hesk_dbEscape($hesklang['_COLLATE']) . "' "; + } else { + $hesk_error_buffer .= '
    ' . $hesklang['invalid_search']; + } + } + } + + // Owner + if ($tmp = intval(hesk_GET('owner', 0))) { + $sql .= " AND `owner`={$tmp} "; + $owner_input = $tmp; + $hesk_error_buffer = str_replace($hesklang['fsq'], '', $hesk_error_buffer); + } else { + $owner_input = 0; + } + + /* Date */ + /* -> Check for compatibility with old date format */ + if (preg_match("/(\d{4})-(\d{2})-(\d{2})/", hesk_GET('dt'), $m)) { + $_GET['dt'] = $m[2] . $m[3] . $m[1]; + } + + /* -> Now process the date value */ + $dt = preg_replace('/[^0-9]/', '', hesk_GET('dt')); + if (strlen($dt) == 8) { + $date = substr($dt, 4, 4) . '-' . substr($dt, 0, 2) . '-' . substr($dt, 2, 2); + $date_input = substr($dt, 0, 2) . '/' . substr($dt, 2, 2) . '/' . substr($dt, 4, 4); + + /* This search is valid even if no query is entered */ + if ($no_query) { + $hesk_error_buffer = str_replace($hesklang['fsq'], '', $hesk_error_buffer); + } + + $sql .= " AND `dt` BETWEEN '{$date} 00:00:00' AND '{$date} 23:59:59' "; + } else { + $date = ''; + $date_input = ''; + } + + /* Any errors? */ + if (strlen($hesk_error_buffer)) { + hesk_process_messages($hesk_error_buffer, 'NOREDIRECT'); + } + + /* This will handle error, success and notice messages */ + $handle = hesk_handle_messages(); + + # echo "$sql
    "; + + // That's all the SQL we need for count + $sql_count .= $sql; + $sql = $sql_final . $sql; + + /* Prepare variables used in search and forms */ + require_once(HESK_PATH . 'inc/prepare_ticket_search.inc.php'); + + /* If there has been an error message skip searching for tickets */ + if ($handle !== FALSE) { + $href = 'find_tickets.php'; + require_once(HESK_PATH . 'inc/ticket_list.inc.php'); + } + ?> + + diff --git a/admin/index.php b/admin/index.php index 5909f9ee..440205b7 100644 --- a/admin/index.php +++ b/admin/index.php @@ -1,39 +1,35 @@ is_valid) - { - $_SESSION['img_a_verified']=true; - } - else - { - $hesk_error_buffer['mysecnum']=$hesklang['recaptcha_error']; - } - } - // Using ReCaptcha API v2? - elseif ($hesk_settings['recaptcha_use'] == 2) - { + if ($resp->is_valid) { + $_SESSION['img_a_verified'] = true; + } else { + $hesk_error_buffer['mysecnum'] = $hesklang['recaptcha_error']; + } + } // Using ReCaptcha API v2? + elseif ($hesk_settings['recaptcha_use'] == 2) { require(HESK_PATH . 'inc/recaptcha/recaptchalib_v2.php'); $resp = null; $reCaptcha = new ReCaptcha($hesk_settings['recaptcha_private_key']); // Was there a reCAPTCHA response? - if ( isset($_POST["g-recaptcha-response"]) ) - { - $resp = $reCaptcha->verifyResponse($_SERVER["REMOTE_ADDR"], hesk_POST("g-recaptcha-response") ); + if (isset($_POST["g-recaptcha-response"])) { + $resp = $reCaptcha->verifyResponse($_SERVER["REMOTE_ADDR"], hesk_POST("g-recaptcha-response")); } - if ($resp != null && $resp->success) - { - $_SESSION['img_a_verified']=true; + if ($resp != null && $resp->success) { + $_SESSION['img_a_verified'] = true; + } else { + $hesk_error_buffer['mysecnum'] = $hesklang['recaptcha_error']; } - else - { - $hesk_error_buffer['mysecnum']=$hesklang['recaptcha_error']; + } // Using PHP generated image + else { + $mysecnum = intval(hesk_POST('mysecnum', 0)); + + if (empty($mysecnum)) { + $hesk_error_buffer['mysecnum'] = $hesklang['sec_miss']; + } else { + require(HESK_PATH . 'inc/secimg.inc.php'); + $sc = new PJ_SecurityImage($hesk_settings['secimg_sum']); + if (isset($_SESSION['checksum']) && $sc->checkCode($mysecnum, $_SESSION['checksum'])) { + $_SESSION['img_a_verified'] = true; + } else { + $hesk_error_buffer['mysecnum'] = $hesklang['sec_wrng']; + } } } - // Using PHP generated image - else - { - $mysecnum = intval( hesk_POST('mysecnum', 0) ); - - if ( empty($mysecnum) ) - { - $hesk_error_buffer['mysecnum'] = $hesklang['sec_miss']; - } - else - { - require(HESK_PATH . 'inc/secimg.inc.php'); - $sc = new PJ_SecurityImage($hesk_settings['secimg_sum']); - if ( isset($_SESSION['checksum']) && $sc->checkCode($mysecnum, $_SESSION['checksum']) ) - { - $_SESSION['img_a_verified'] = true; - } - else - { - $hesk_error_buffer['mysecnum'] = $hesklang['sec_wrng']; - } - } - } - } + } /* Any missing fields? */ - if (count($hesk_error_buffer)!=0) - { - $_SESSION['a_iserror'] = array_keys($hesk_error_buffer); + if (count($hesk_error_buffer) != 0) { + $_SESSION['a_iserror'] = array_keys($hesk_error_buffer); - $tmp = ''; - foreach ($hesk_error_buffer as $error) - { - $tmp .= "
  • $error
  • \n"; - } - $hesk_error_buffer = $tmp; + $tmp = ''; + foreach ($hesk_error_buffer as $error) { + $tmp .= "
  • $error
  • \n"; + } + $hesk_error_buffer = $tmp; - $hesk_error_buffer = $hesklang['pcer'].'

      '.$hesk_error_buffer.'
    '; - hesk_process_messages($hesk_error_buffer,'NOREDIRECT'); + $hesk_error_buffer = $hesklang['pcer'] . '

      ' . $hesk_error_buffer . '
    '; + hesk_process_messages($hesk_error_buffer, 'NOREDIRECT'); print_login(); exit(); - } - elseif (isset($_SESSION['img_a_verified'])) - { - unset($_SESSION['img_a_verified']); + } elseif (isset($_SESSION['img_a_verified'])) { + unset($_SESSION['img_a_verified']); } - /* User entered all required info, now lets limit brute force attempts */ - hesk_limitBfAttempts(); + /* User entered all required info, now lets limit brute force attempts */ + hesk_limitBfAttempts(); - $result = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE `user` = '".hesk_dbEscape($user)."' LIMIT 1"); - if (hesk_dbNumRows($result) != 1) - { + $result = hesk_dbQuery("SELECT * FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` WHERE `user` = '" . hesk_dbEscape($user) . "' LIMIT 1"); + if (hesk_dbNumRows($result) != 1) { hesk_session_stop(); - $_SESSION['a_iserror'] = array('user','pass'); - hesk_process_messages($hesklang['wrong_user'],'NOREDIRECT'); + $_SESSION['a_iserror'] = array('user', 'pass'); + hesk_process_messages($hesklang['wrong_user'], 'NOREDIRECT'); print_login(); exit(); - } + } - $res=hesk_dbFetchAssoc($result); - foreach ($res as $k=>$v) - { - $_SESSION[$k]=$v; - } + $res = hesk_dbFetchAssoc($result); + foreach ($res as $k => $v) { + $_SESSION[$k] = $v; + } - /* Check password */ - if (hesk_Pass2Hash($pass) != $_SESSION['pass']) - { + /* Check password */ + if (hesk_Pass2Hash($pass) != $_SESSION['pass']) { hesk_session_stop(); - $_SESSION['a_iserror'] = array('pass'); - hesk_process_messages($hesklang['wrong_pass'],'NOREDIRECT'); - print_login(); - exit(); - } + $_SESSION['a_iserror'] = array('pass'); + hesk_process_messages($hesklang['wrong_pass'], 'NOREDIRECT'); + print_login(); + exit(); + } - $pass_enc = hesk_Pass2Hash($_SESSION['pass'].strtolower($user).$_SESSION['pass']); + $pass_enc = hesk_Pass2Hash($_SESSION['pass'] . strtolower($user) . $_SESSION['pass']); /* Check if default password */ - if ($_SESSION['pass'] == '499d74967b28a841c98bb4baaabaad699ff3c079') - { - hesk_process_messages($hesklang['chdp'],'NOREDIRECT','NOTICE'); + if ($_SESSION['pass'] == '499d74967b28a841c98bb4baaabaad699ff3c079') { + hesk_process_messages($hesklang['chdp'], 'NOREDIRECT', 'NOTICE'); } // Set a tag that will be used to expire sessions after username or password change $_SESSION['session_verify'] = hesk_activeSessionCreateTag($user, $_SESSION['pass']); // We don't need the password hash anymore - unset($_SESSION['pass']); - + unset($_SESSION['pass']); - /* Login successful, clean brute force attempts */ - hesk_cleanBfAttempts(); + /* Login successful, clean brute force attempts */ + hesk_cleanBfAttempts(); /* Make sure our user is active */ if (!$_SESSION['active']) { @@ -239,34 +204,28 @@ function do_login() } /* Regenerate session ID (security) */ - hesk_session_regenerate_id(); - - /* Remember username? */ - if ($hesk_settings['autologin'] && hesk_POST('remember_user') == 'AUTOLOGIN') - { - setcookie('hesk_username', "$user", strtotime('+1 year')); - setcookie('hesk_p', "$pass_enc", strtotime('+1 year')); - } - elseif ( hesk_POST('remember_user') == 'JUSTUSER') - { - setcookie('hesk_username', "$user", strtotime('+1 year')); - setcookie('hesk_p', ''); - } - else - { - // Expire cookie if set otherwise - setcookie('hesk_username', ''); - setcookie('hesk_p', ''); - } + hesk_session_regenerate_id(); + + /* Remember username? */ + if ($hesk_settings['autologin'] && hesk_POST('remember_user') == 'AUTOLOGIN') { + setcookie('hesk_username', "$user", strtotime('+1 year')); + setcookie('hesk_p', "$pass_enc", strtotime('+1 year')); + } elseif (hesk_POST('remember_user') == 'JUSTUSER') { + setcookie('hesk_username', "$user", strtotime('+1 year')); + setcookie('hesk_p', ''); + } else { + // Expire cookie if set otherwise + setcookie('hesk_username', ''); + setcookie('hesk_p', ''); + } /* Close any old tickets here so Cron jobs aren't necessary */ - if ($hesk_settings['autoclose']) - { - $revision = sprintf($hesklang['thist3'],hesk_date(),$hesklang['auto']); - $dt = date('Y-m-d H:i:s',time() - $hesk_settings['autoclose']*86400); + if ($hesk_settings['autoclose']) { + $revision = sprintf($hesklang['thist3'], hesk_date(), $hesklang['auto']); + $dt = date('Y-m-d H:i:s', time() - $hesk_settings['autoclose'] * 86400); - $closedStatusRs = hesk_dbQuery('SELECT `ID`, `Closable` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsDefaultStaffReplyStatus` = 1'); + $closedStatusRs = hesk_dbQuery('SELECT `ID`, `Closable` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'statuses` WHERE `IsDefaultStaffReplyStatus` = 1'); $closedStatus = hesk_dbFetchAssoc($closedStatusRs); // Are we allowed to close tickets in this status? if ($closedStatus['Closable'] == 'yes' || $closedStatus['Closable'] == 'sonly') { @@ -286,21 +245,21 @@ function do_login() $ticket['dt'] = hesk_date($ticket['dt'], true); $ticket['lastchange'] = hesk_date($ticket['lastchange'], true); $ticket = hesk_ticketToPlain($ticket, 1, 0); - hesk_notifyCustomer($modsForHesk_settings,'ticket_closed'); + hesk_notifyCustomer($modsForHesk_settings, 'ticket_closed'); } } } // Update ticket statuses and history in database if we're allowed to do so - $defaultCloseRs = hesk_dbQuery('SELECT `ID` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsAutocloseOption` = 1'); + $defaultCloseRs = hesk_dbQuery('SELECT `ID` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'statuses` WHERE `IsAutocloseOption` = 1'); $defaultCloseStatus = hesk_dbFetchAssoc($defaultCloseRs); - hesk_dbQuery("UPDATE `" . $hesk_settings['db_pfix'] . "tickets` SET `status`=".intval($defaultCloseStatus['ID']).", `closedat`=NOW(), `closedby`='-1', `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `status` = '".$closedStatus['ID']."' AND `lastchange` <= '" . hesk_dbEscape($dt) . "' "); + hesk_dbQuery("UPDATE `" . $hesk_settings['db_pfix'] . "tickets` SET `status`=" . intval($defaultCloseStatus['ID']) . ", `closedat`=NOW(), `closedby`='-1', `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `status` = '" . $closedStatus['ID'] . "' AND `lastchange` <= '" . hesk_dbEscape($dt) . "' "); } } /* Redirect to the destination page */ - header('Location: ' . hesk_verifyGoto() ); - exit(); + header('Location: ' . hesk_verifyGoto()); + exit(); } // End do_login() @@ -524,37 +483,35 @@ function print_login() } // End print_login() -function logout() { - global $hesk_settings, $hesklang; +function logout() +{ + global $hesk_settings, $hesklang; - if ( ! hesk_token_check('GET', 0)) - { - print_login(); + if (!hesk_token_check('GET', 0)) { + print_login(); exit(); } /* Delete from Who's online database */ - if ($hesk_settings['online']) - { - require(HESK_PATH . 'inc/users_online.inc.php'); - hesk_setOffline($_SESSION['id']); - } + if ($hesk_settings['online']) { + require(HESK_PATH . 'inc/users_online.inc.php'); + hesk_setOffline($_SESSION['id']); + } /* Destroy session and cookies */ - hesk_session_stop(); + hesk_session_stop(); /* If we're using the security image for admin login start a new session */ - if ($hesk_settings['secimg_use'] == 2) - { - hesk_session_start(); + if ($hesk_settings['secimg_use'] == 2) { + hesk_session_start(); } - /* Show success message and reset the cookie */ - hesk_process_messages($hesklang['logout_success'],'NOREDIRECT','SUCCESS'); + /* Show success message and reset the cookie */ + hesk_process_messages($hesklang['logout_success'], 'NOREDIRECT', 'SUCCESS'); setcookie('hesk_p', ''); /* Print the login form */ - print_login(); - exit(); + print_login(); + exit(); } // End logout() ?> diff --git a/admin/knowledgebase_private.php b/admin/knowledgebase_private.php index 261f066b..7259a39d 100644 --- a/admin/knowledgebase_private.php +++ b/admin/knowledgebase_private.php @@ -8,24 +8,20 @@ * COPYRIGHT AND TRADEMARK NOTICE * Copyright 2005-2015 Klemen Stirn. All Rights Reserved. * HESK is a registered trademark of Klemen Stirn. - -* The HESK may be used and modified free of charge by anyone + * The HESK may be used and modified free of charge by anyone * AS LONG AS COPYRIGHT NOTICES AND ALL THE COMMENTS REMAIN INTACT. * By using this code you agree to indemnify Klemen Stirn from any * liability that might arise from it's use. - -* Selling the code for this program, in part or full, without prior + * Selling the code for this program, in part or full, without prior * written consent is expressly forbidden. - -* Using this code, in part or full, to create derivate work, + * Using this code, in part or full, to create derivate work, * new scripts or products is expressly forbidden. Obtain permission * before redistributing this software over the Internet or in * any other medium. In all cases copyright and header must remain intact. * This Copyright is in full effect in any country that has International * Trade Agreements with the United States of America or * with the European Union. - -* Removing any of the copyright notices without purchasing a license + * Removing any of the copyright notices without purchasing a license * is expressly forbidden. To remove HESK copyright notice you must purchase * a license for this script. For more information on how to obtain * a license please visit the page below: diff --git a/admin/lock.php b/admin/lock.php index 1d96296f..24e1410e 100644 --- a/admin/lock.php +++ b/admin/lock.php @@ -1,39 +1,35 @@ fetch_assoc(); $statusId = $statusRow['ID']; -hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` SET `status`='{$statusId}',`locked`='{$status}' $closedby_sql , `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') WHERE `trackid`='".hesk_dbEscape($trackingID)."' LIMIT 1"); +hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `status`='{$statusId}',`locked`='{$status}' $closedby_sql , `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `trackid`='" . hesk_dbEscape($trackingID) . "' LIMIT 1"); /* Back to ticket page and show a success message */ -hesk_process_messages($tmp,'admin_ticket.php?track='.$trackingID.'&Refresh='.rand(10000,99999),'SUCCESS'); +hesk_process_messages($tmp, 'admin_ticket.php?track=' . $trackingID . '&Refresh=' . rand(10000, 99999), 'SUCCESS'); ?> diff --git a/admin/mail.php b/admin/mail.php index c2535884..4d32fb95 100644 --- a/admin/mail.php +++ b/admin/mail.php @@ -1,39 +1,35 @@ '.$hesklang['inbox'].''; -$hesk_settings['mailtmp']['outbox'] = ' '.$hesklang['outbox'].''; -$hesk_settings['mailtmp']['new'] = ' '.$hesklang['m_new'].''; +$hesk_settings['mailtmp']['inbox'] = ' ' . $hesklang['inbox'] . ''; +$hesk_settings['mailtmp']['outbox'] = ' ' . $hesklang['outbox'] . ''; +$hesk_settings['mailtmp']['new'] = ' ' . $hesklang['m_new'] . ''; /* Get action */ -if ( $action = hesk_REQUEST('a') ) -{ - if ( defined('HESK_DEMO') && $action != 'new' && $action != 'read' ) - { - hesk_process_messages($hesklang['ddemo'], 'mail.php', 'NOTICE'); - } +if ($action = hesk_REQUEST('a')) { + if (defined('HESK_DEMO') && $action != 'new' && $action != 'read') { + hesk_process_messages($hesklang['ddemo'], 'mail.php', 'NOTICE'); + } } /* Sub-page specific settings */ -if (isset($_GET['folder']) && hesk_GET('folder') == 'outbox') -{ - $hesk_settings['mailtmp']['this'] = 'from'; - $hesk_settings['mailtmp']['other'] = 'to'; - $hesk_settings['mailtmp']['m_from'] = $hesklang['m_to']; - $hesk_settings['mailtmp']['outbox'] = ' '.$hesklang['outbox'].''; +if (isset($_GET['folder']) && hesk_GET('folder') == 'outbox') { + $hesk_settings['mailtmp']['this'] = 'from'; + $hesk_settings['mailtmp']['other'] = 'to'; + $hesk_settings['mailtmp']['m_from'] = $hesklang['m_to']; + $hesk_settings['mailtmp']['outbox'] = ' ' . $hesklang['outbox'] . ''; $hesk_settings['mailtmp']['folder'] = 'outbox'; -} -elseif ($action == 'new') -{ - $hesk_settings['mailtmp']['new'] = ' '.$hesklang['m_new'].''; - $_SESSION['hide']['list'] = 1; +} elseif ($action == 'new') { + $hesk_settings['mailtmp']['new'] = ' ' . $hesklang['m_new'] . ''; + $_SESSION['hide']['list'] = 1; /* Do we have a recipient selected? */ - if (!isset($_SESSION['mail']['to']) && isset($_GET['id'])) - { - $_SESSION['mail']['to'] = intval( hesk_GET('id') ); + if (!isset($_SESSION['mail']['to']) && isset($_GET['id'])) { + $_SESSION['mail']['to'] = intval(hesk_GET('id')); } -} -else -{ - $hesk_settings['mailtmp']['this'] = 'to'; - $hesk_settings['mailtmp']['other'] = 'from'; - $hesk_settings['mailtmp']['m_from'] = $hesklang['m_from']; - if ($action != 'read') - { - $hesk_settings['mailtmp']['inbox'] = ' '.$hesklang['inbox'].''; +} else { + $hesk_settings['mailtmp']['this'] = 'to'; + $hesk_settings['mailtmp']['other'] = 'from'; + $hesk_settings['mailtmp']['m_from'] = $hesklang['m_from']; + if ($action != 'read') { + $hesk_settings['mailtmp']['inbox'] = ' ' . $hesklang['inbox'] . ''; $hesk_settings['mailtmp']['folder'] = ''; } } /* What should we do? */ -switch ($action) -{ - case 'send': - mail_send(); +switch ($action) { + case 'send': + mail_send(); break; case 'mark_read': - mail_mark_read(); + mail_mark_read(); break; case 'mark_unread': - mail_mark_unread(); + mail_mark_unread(); break; case 'delete': - mail_delete(); + mail_delete(); break; } @@ -127,12 +112,15 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); ?>
    @@ -140,47 +128,46 @@ function confirm_delete()
      - '.$hesk_settings['mailtmp']['inbox'].' + ' . $hesk_settings['mailtmp']['inbox'] . '
    • ' . $hesk_settings['mailtmp']['outbox'] . '
    • ' . $hesk_settings['mailtmp']['new'] . '
    • '; - ?> + ?>

    +
    -
    -
    + /* Hide list of messages? */ + if (!isset($_SESSION['hide']['list'])) { + mail_list_messages(); + } // END hide list of messages + + /* Show new message form */ + show_new_form(); + + /* Clean unneeded session variables */ + hesk_cleanSessionVars('hide'); + hesk_cleanSessionVars('mail'); + ?> +
    +
    ' . $hesklang['m_rec'] . ''; - } - elseif ($_SESSION['mail']['to'] == $_SESSION['id']) - { - $hesk_error_buffer .= '
  • ' . $hesklang['m_inr'] . '
  • '; - } - else - { - $res = hesk_dbQuery("SELECT `name`,`email`,`notify_pm` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE `id`='".intval($_SESSION['mail']['to'])."' LIMIT 1"); - $num = hesk_dbNumRows($res); - if (!$num) - { - $hesk_error_buffer .= '
  • ' . $hesklang['m_inr'] . '
  • '; - } - else - { - $pm_recipient = hesk_dbFetchAssoc($res); + global $hesk_settings, $hesklang, $modsForHesk_settings; + + /* A security check */ + hesk_token_check('POST'); + + $hesk_error_buffer = ''; + + /* Recipient */ + $_SESSION['mail']['to'] = intval(hesk_POST('to')); + + /* Valid recipient? */ + if (empty($_SESSION['mail']['to'])) { + $hesk_error_buffer .= '
  • ' . $hesklang['m_rec'] . '
  • '; + } elseif ($_SESSION['mail']['to'] == $_SESSION['id']) { + $hesk_error_buffer .= '
  • ' . $hesklang['m_inr'] . '
  • '; + } else { + $res = hesk_dbQuery("SELECT `name`,`email`,`notify_pm` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` WHERE `id`='" . intval($_SESSION['mail']['to']) . "' LIMIT 1"); + $num = hesk_dbNumRows($res); + if (!$num) { + $hesk_error_buffer .= '
  • ' . $hesklang['m_inr'] . '
  • '; + } else { + $pm_recipient = hesk_dbFetchAssoc($res); } - } + } - /* Subject */ - $_SESSION['mail']['subject'] = hesk_input( hesk_POST('subject') ) or $hesk_error_buffer .= '
  • ' . $hesklang['m_esu'] . '
  • '; + /* Subject */ + $_SESSION['mail']['subject'] = hesk_input(hesk_POST('subject')) or $hesk_error_buffer .= '
  • ' . $hesklang['m_esu'] . '
  • '; - /* Message */ - $_SESSION['mail']['message'] = hesk_input( hesk_POST('message') ) or $hesk_error_buffer .= '
  • ' . $hesklang['enter_message'] . '
  • '; + /* Message */ + $_SESSION['mail']['message'] = hesk_input(hesk_POST('message')) or $hesk_error_buffer .= '
  • ' . $hesklang['enter_message'] . '
  • '; // Attach signature to the message? - if ( ! empty($_POST['signature'])) - { - $_SESSION['mail']['message'] .= "\n\n" . addslashes($_SESSION['signature']) . "\n"; + if (!empty($_POST['signature'])) { + $_SESSION['mail']['message'] .= "\n\n" . addslashes($_SESSION['signature']) . "\n"; } - /* Any errors? */ - if (strlen($hesk_error_buffer)) - { - $_SESSION['hide']['list'] = 1; - $hesk_error_buffer = $hesklang['rfm'].'

      '.$hesk_error_buffer.'
    '; - hesk_process_messages($hesk_error_buffer,'NOREDIRECT'); - } - else - { - $_SESSION['mail']['message'] = hesk_makeURL($_SESSION['mail']['message']); - $_SESSION['mail']['message'] = nl2br($_SESSION['mail']['message']); - - hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."mail` (`from`,`to`,`subject`,`message`,`dt`,`read`) VALUES ('".intval($_SESSION['id'])."','".intval($_SESSION['mail']['to'])."','".hesk_dbEscape($_SESSION['mail']['subject'])."','".hesk_dbEscape($_SESSION['mail']['message'])."',NOW(),'0')"); + /* Any errors? */ + if (strlen($hesk_error_buffer)) { + $_SESSION['hide']['list'] = 1; + $hesk_error_buffer = $hesklang['rfm'] . '

      ' . $hesk_error_buffer . '
    '; + hesk_process_messages($hesk_error_buffer, 'NOREDIRECT'); + } else { + $_SESSION['mail']['message'] = hesk_makeURL($_SESSION['mail']['message']); + $_SESSION['mail']['message'] = nl2br($_SESSION['mail']['message']); + + hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "mail` (`from`,`to`,`subject`,`message`,`dt`,`read`) VALUES ('" . intval($_SESSION['id']) . "','" . intval($_SESSION['mail']['to']) . "','" . hesk_dbEscape($_SESSION['mail']['subject']) . "','" . hesk_dbEscape($_SESSION['mail']['message']) . "',NOW(),'0')"); /* Notify receiver via e-mail? */ - if (isset($pm_recipient) && $pm_recipient['notify_pm']) - { + if (isset($pm_recipient) && $pm_recipient['notify_pm']) { $pm_id = hesk_dbInsertID(); $pm = array( - 'name' => hesk_msgToPlain( addslashes($_SESSION['name']) ,1,1), - 'subject' => hesk_msgToPlain($_SESSION['mail']['subject'],1,1), - 'message' => hesk_msgToPlain($_SESSION['mail']['message'],1,1), - 'id' => $pm_id, + 'name' => hesk_msgToPlain(addslashes($_SESSION['name']), 1, 1), + 'subject' => hesk_msgToPlain($_SESSION['mail']['subject'], 1, 1), + 'message' => hesk_msgToPlain($_SESSION['mail']['message'], 1, 1), + 'id' => $pm_id, ); - /* Format email subject and message for recipient */ - $subject = hesk_getEmailSubject('new_pm',$pm,0); - $message = hesk_getEmailMessage('new_pm',$pm,$modsForHesk_settings,1,0); - $htmlMessage = hesk_getHtmlMessage('new_pm',$pm,$modsForHesk_settings,1,0); - $hasMessage = hesk_doesTemplateHaveTag('new_pm','%%MESSAGE%%', $modsForHesk_settings); + /* Format email subject and message for recipient */ + $subject = hesk_getEmailSubject('new_pm', $pm, 0); + $message = hesk_getEmailMessage('new_pm', $pm, $modsForHesk_settings, 1, 0); + $htmlMessage = hesk_getHtmlMessage('new_pm', $pm, $modsForHesk_settings, 1, 0); + $hasMessage = hesk_doesTemplateHaveTag('new_pm', '%%MESSAGE%%', $modsForHesk_settings); - /* Send e-mail */ - hesk_mail($pm_recipient['email'], $subject, $message, $htmlMessage, $modsForHesk_settings, array(), array(), $hasMessage); + /* Send e-mail */ + hesk_mail($pm_recipient['email'], $subject, $message, $htmlMessage, $modsForHesk_settings, array(), array(), $hasMessage); } - unset($_SESSION['mail']); + unset($_SESSION['mail']); - hesk_process_messages($hesklang['m_pms'],'./mail.php','SUCCESS'); + hesk_process_messages($hesklang['m_pms'], './mail.php', 'SUCCESS'); } } // END mail_send() @@ -502,119 +464,109 @@ function show_message() function mail_list_messages() { - global $hesk_settings, $hesklang, $admins; + global $hesk_settings, $hesklang, $admins; $href = 'mail.php'; $query = ''; - if ($hesk_settings['mailtmp']['folder'] == 'outbox') - { - $query .= 'folder=outbox&'; + if ($hesk_settings['mailtmp']['folder'] == 'outbox') { + $query .= 'folder=outbox&'; } $query .= 'page='; - $maxresults = 30; - - $tmp = intval( hesk_POST('page', 1) ); - $page = ($tmp > 1) ? $tmp : 1; - - /* List of private messages */ - $res = hesk_dbQuery("SELECT COUNT(*) FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."mail` WHERE `".hesk_dbEscape($hesk_settings['mailtmp']['this'])."`='".intval($_SESSION['id'])."' AND `deletedby`!='".intval($_SESSION['id'])."'"); - $total = hesk_dbResult($res,0,0); - - if ($total > 0) - { - - $pages = ceil($total/$maxresults) or $pages = 1; - if ($page > $pages) - { - $page = $pages; - } - $limit_down = ($page * $maxresults) - $maxresults; - - $prev_page = ($page - 1 <= 0) ? 0 : $page - 1; - $next_page = ($page + 1 > $pages) ? 0 : $page + 1; - - if ($pages > 1) - { - echo $hesklang['pg'] . ': '; - - /* List pages */ - if ($pages >= 7) - { - if ($page > 2) - { - echo '«   '; - } - - if ($prev_page) - { - echo '   '; - } - } - - for ($i=1; $i<=$pages; $i++) - { - if ($i <= ($page+5) && $i >= ($page-5)) - { - if ($i == $page) - { - echo ' '.$i.' '; - } - else - { - echo ' '.$i.' '; - } - } - } - - if ($pages >= 7) - { - if ($next_page) - { - echo '   '; - } - - if ($page < ($pages - 1)) - { - echo '   »'; - } - } + $maxresults = 30; + + $tmp = intval(hesk_POST('page', 1)); + $page = ($tmp > 1) ? $tmp : 1; + + /* List of private messages */ + $res = hesk_dbQuery("SELECT COUNT(*) FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "mail` WHERE `" . hesk_dbEscape($hesk_settings['mailtmp']['this']) . "`='" . intval($_SESSION['id']) . "' AND `deletedby`!='" . intval($_SESSION['id']) . "'"); + $total = hesk_dbResult($res, 0, 0); + + if ($total > 0) { + + $pages = ceil($total / $maxresults) or $pages = 1; + if ($page > $pages) { + $page = $pages; + } + $limit_down = ($page * $maxresults) - $maxresults; + + $prev_page = ($page - 1 <= 0) ? 0 : $page - 1; + $next_page = ($page + 1 > $pages) ? 0 : $page + 1; + + if ($pages > 1) { + echo $hesklang['pg'] . ': '; + + /* List pages */ + if ($pages >= 7) { + if ($page > 2) { + echo '«   '; + } + + if ($prev_page) { + echo '   '; + } + } + + for ($i = 1; $i <= $pages; $i++) { + if ($i <= ($page + 5) && $i >= ($page - 5)) { + if ($i == $page) { + echo ' ' . $i . ' '; + } else { + echo ' ' . $i . ' '; + } + } + } + + if ($pages >= 7) { + if ($next_page) { + echo '   '; + } + + if ($page < ($pages - 1)) { + echo '   »'; + } + } echo '
     '; - } // end PAGES > 1 - - // Get messages from the database - $res = hesk_dbQuery("SELECT `id`, `from`, `to`, `subject`, `dt`, `read` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."mail` WHERE `".hesk_dbEscape($hesk_settings['mailtmp']['this'])."`='".intval($_SESSION['id'])."' AND `deletedby`!='".intval($_SESSION['id'])."' ORDER BY `id` DESC LIMIT ".intval($limit_down)." , ".intval($maxresults)." "); - ?> - -
    - -
    - - - - - - - - - '.$pm['subject'].''; - if ($hesk_settings['mailtmp']['this'] == 'to' && !$pm['read']) - { - $pm['subject'] = ''.$pm['subject'].''; - } - $pm['name'] = isset($admins[$pm[$hesk_settings['mailtmp']['other']]]) ? ''.$admins[$pm[$hesk_settings['mailtmp']['other']]].'' : (($pm['from'] == 9999) ? 'HESK.com' : $hesklang['e_udel']); - $pm['dt'] = hesk_dateToString($pm['dt'],0,0,0,true); - - echo << 1 + + // Get messages from the database + $res = hesk_dbQuery("SELECT `id`, `from`, `to`, `subject`, `dt`, `read` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "mail` WHERE `" . hesk_dbEscape($hesk_settings['mailtmp']['this']) . "`='" . intval($_SESSION['id']) . "' AND `deletedby`!='" . intval($_SESSION['id']) . "' ORDER BY `id` DESC LIMIT " . intval($limit_down) . " , " . intval($maxresults) . " "); + ?> + + + +
    +
    + + + + + + + + ' . $pm['subject'] . ''; + if ($hesk_settings['mailtmp']['this'] == 'to' && !$pm['read']) { + $pm['subject'] = '' . $pm['subject'] . ''; + } + $pm['name'] = isset($admins[$pm[$hesk_settings['mailtmp']['other']]]) ? '' . $admins[$pm[$hesk_settings['mailtmp']['other']]] . '' : (($pm['from'] == 9999) ? 'HESK.com' : $hesklang['e_udel']); + $pm['dt'] = hesk_dateToString($pm['dt'], 0, 0, 0, true); + + echo << @@ -623,41 +575,41 @@ function mail_list_messages() EOC; - } // End while - ?> -
      $pm[subject]
    -
    - -
    -
    - + } // End while + ?> +
    -
    - - + +
    +
    + +
    +
    + + +
    -
    - + -

     

    -  

    + 0 - else - { - echo '' . $hesklang['npm'] . '

     

    '; + } // END if total > 0 + else { + echo '' . $hesklang['npm'] . '

     

    '; } } // END mail_list_messages() @@ -665,74 +617,74 @@ EOC; function show_new_form() { - global $hesk_settings, $hesklang, $admins; - ?> -
    -
    -

    -
    - -
    - -
    - -
    -
    -
    - -
    - - /> -
    +global $hesk_settings, $hesklang, $admins; +?> +
    + +

    + +
    + +
    + + +
    +
    -
    - -
    - -
    - () -
    -
    + ?> + />
    -
    -
    - - - +
    +
    + + +
    + + +
    + ()
    +
    +
    +
    + + + +
    +
    + } // END show_new_form() + ?> diff --git a/admin/manage_canned.php b/admin/manage_canned.php index a4c9a7e2..fad16a4d 100644 --- a/admin/manage_canned.php +++ b/admin/manage_canned.php @@ -1,39 +1,35 @@
    @@ -126,84 +130,72 @@ function hesk_insertAtCursor(myField, myValue) {
    '.$hesklang['no_saved'].'

    '; + echo '

    ' . $hesklang['no_saved'] . '

    '; } else { ?> - - + + '.$mysaved['title'].''; + $options .= '>' . $mysaved['title'] . ''; - $javascript_titles.='myTitle['.$mysaved['id'].']=\''.addslashes($mysaved['title'])."';\n"; + $javascript_titles .= 'myTitle[' . $mysaved['id'] . ']=\'' . addslashes($mysaved['title']) . "';\n"; if ($modsForHesk_settings['rich_text_for_tickets']) { $theMessage = hesk_html_entity_decode($mysaved['message']); $theMessage = addslashes($theMessage); - $javascript_messages.='myMsgTxt['.$mysaved['id'].']=\''.str_replace("\r\n","\\r\\n' + \r\n'", $theMessage )."';\n"; + $javascript_messages .= 'myMsgTxt[' . $mysaved['id'] . ']=\'' . str_replace("\r\n", "\\r\\n' + \r\n'", $theMessage) . "';\n"; } else { - $javascript_messages.='myMsgTxt['.$mysaved['id'].']=\''.str_replace("\r\n","\\r\\n' + \r\n'", addslashes($mysaved['message']) )."';\n"; + $javascript_messages .= 'myMsgTxt[' . $mysaved['id'] . ']=\'' . str_replace("\r\n", "\\r\\n' + \r\n'", addslashes($mysaved['message'])) . "';\n"; } echo ' - + +   '; } // End while - } + } ?>
    '.$mysaved['title'].'' . $mysaved['title'] . ' '; - if ($num > 1) - { - if ($j == 1) - { - echo' '; - } - elseif ($j == $num) - { - echo' '; - } - else - { - echo' - - + if ($num > 1) { + if ($j == 1) { + echo ' '; + } elseif ($j == $num) { + echo ' '; + } else { + echo ' + + '; } - } - else - { + } else { echo ''; } echo ' -  
    @@ -213,20 +205,20 @@ function hesk_insertAtCursor(myField, myValue) { @@ -236,22 +228,20 @@ function hesk_insertAtCursor(myField, myValue) { // --> var myMsgTxt = new Array(); var myTitle = new Array(); - myMsgTxt[0]=''; - myTitle[0]=''; + myMsgTxt[0] = ''; + myTitle[0] = ''; - function setMessage(msgid) - { + function setMessage(msgid) { var useHtmlEditor = ; - var myMsg=myMsgTxt[msgid]; - var mySubject=myTitle[msgid]; + var myMsg = myMsgTxt[msgid]; + var mySubject = myTitle[msgid]; - if (myMsg == '') - { + if (myMsg == '') { if (useHtmlEditor) { tinymce.get("message").setContent(''); tinymce.get("message").execCommand('mceInsertRawHTML', false, ''); @@ -262,8 +252,7 @@ function hesk_insertAtCursor(myField, myValue) { document.getElementById('subject').value = ''; return true; } - if (document.getElementById) - { + if (document.getElementById) { if (useHtmlEditor) { tinymce.get("message").setContent(''); tinymce.get("message").execCommand('mceInsertRawHTML', false, myMsg); @@ -272,16 +261,15 @@ function hesk_insertAtCursor(myField, myValue) { } document.getElementById('subject').value = mySubject; } - else - { - document.form1.message.value=myMsg; - document.form1.subject.value=mySubject; + else { + document.form1.message.value = myMsg; + document.form1.subject.value = mySubject; } - if (msgid==0) { - document.form1.a[0].checked=true; + if (msgid == 0) { + document.form1.a[0].checked = true; } else { - document.form1.a[1].checked=true; + document.form1.a[1].checked = true; } } @@ -291,37 +279,44 @@ function hesk_insertAtCursor(myField, myValue) { /* This will handle error, success and notice messages */ hesk_handle_messages(); ?> -

    +

    +

    +
    0) - { + if ($num > 0) { ?>
    - +
    - : + :
    - +
    '; } ?> @@ -329,47 +324,57 @@ function hesk_insertAtCursor(myField, myValue) {
    +
    - /> + />
    +
    - : - | - | - | - | - - $v) - { - if ($v['use']) - { - if ($modsForHesk_settings['custom_field_setting']) - { - $v['name'] = $hesklang[$v['name']]; - } - - echo '| '.$v['name'].' '; - } + | + | + | + | + + $v) { + if ($v['use']) { + if ($modsForHesk_settings['custom_field_setting']) { + $v['name'] = $hesklang[$v['name']]; } - ?> -
    + + echo '| ' . $v['name'] . ' '; + } + } + ?> +
    - - -
    + + +
    @@ -383,129 +388,127 @@ exit(); function edit_saved() { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* A security check */ - hesk_token_check('POST'); + /* A security check */ + hesk_token_check('POST'); $hesk_error_buffer = ''; - $id = intval( hesk_POST('saved_replies') ) or $hesk_error_buffer .= '
  • ' . $hesklang['selcan'] . '
  • '; - $savename = hesk_input( hesk_POST('name') ) or $hesk_error_buffer .= '
  • ' . $hesklang['ent_saved_title'] . '
  • '; - $msg = hesk_input( hesk_POST('msg') ) or $hesk_error_buffer .= '
  • ' . $hesklang['ent_saved_msg'] . '
  • '; - + $id = intval(hesk_POST('saved_replies')) or $hesk_error_buffer .= '
  • ' . $hesklang['selcan'] . '
  • '; + $savename = hesk_input(hesk_POST('name')) or $hesk_error_buffer .= '
  • ' . $hesklang['ent_saved_title'] . '
  • '; + $msg = hesk_input(hesk_POST('msg')) or $hesk_error_buffer .= '
  • ' . $hesklang['ent_saved_msg'] . '
  • '; + // Avoid problems with utf-8 newline chars in Javascript code, detect and remove them $msg = preg_replace('/\R/u', "\r\n", $msg); - $_SESSION['canned']['what'] = 'EDIT'; + $_SESSION['canned']['what'] = 'EDIT'; $_SESSION['canned']['id'] = $id; $_SESSION['canned']['name'] = $savename; $_SESSION['canned']['msg'] = $msg; /* Any errors? */ - if (strlen($hesk_error_buffer)) - { - $hesk_error_buffer = $hesklang['rfm'].'

      '.$hesk_error_buffer.'
    '; - hesk_process_messages($hesk_error_buffer,'manage_canned.php?saved_replies='.$id); + if (strlen($hesk_error_buffer)) { + $hesk_error_buffer = $hesklang['rfm'] . '

      ' . $hesk_error_buffer . '
    '; + hesk_process_messages($hesk_error_buffer, 'manage_canned.php?saved_replies=' . $id); } - $result = hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."std_replies` SET `title`='".hesk_dbEscape($savename)."',`message`='".hesk_dbEscape($msg)."' WHERE `id`='".intval($id)."' LIMIT 1"); + $result = hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "std_replies` SET `title`='" . hesk_dbEscape($savename) . "',`message`='" . hesk_dbEscape($msg) . "' WHERE `id`='" . intval($id) . "' LIMIT 1"); - unset($_SESSION['canned']['what']); + unset($_SESSION['canned']['what']); unset($_SESSION['canned']['id']); unset($_SESSION['canned']['name']); unset($_SESSION['canned']['msg']); - hesk_process_messages($hesklang['your_saved'],'manage_canned.php?saved_replies='.$id,'SUCCESS'); + hesk_process_messages($hesklang['your_saved'], 'manage_canned.php?saved_replies=' . $id, 'SUCCESS'); } // End edit_saved() function new_saved() { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* A security check */ - hesk_token_check('POST'); + /* A security check */ + hesk_token_check('POST'); $hesk_error_buffer = ''; - $savename = hesk_input( hesk_POST('name') ) or $hesk_error_buffer .= '
  • ' . $hesklang['ent_saved_title'] . '
  • '; - $msg = hesk_input( hesk_POST('msg') ) or $hesk_error_buffer .= '
  • ' . $hesklang['ent_saved_msg'] . '
  • '; - + $savename = hesk_input(hesk_POST('name')) or $hesk_error_buffer .= '
  • ' . $hesklang['ent_saved_title'] . '
  • '; + $msg = hesk_input(hesk_POST('msg')) or $hesk_error_buffer .= '
  • ' . $hesklang['ent_saved_msg'] . '
  • '; + // Avoid problems with utf-8 newline chars in Javascript code, detect and remove them $msg = preg_replace('/\R/u', "\r\n", $msg); - $_SESSION['canned']['what'] = 'NEW'; + $_SESSION['canned']['what'] = 'NEW'; $_SESSION['canned']['name'] = $savename; $_SESSION['canned']['msg'] = $msg; /* Any errors? */ - if (strlen($hesk_error_buffer)) - { - $hesk_error_buffer = $hesklang['rfm'].'

      '.$hesk_error_buffer.'
    '; - hesk_process_messages($hesk_error_buffer,'manage_canned.php'); + if (strlen($hesk_error_buffer)) { + $hesk_error_buffer = $hesklang['rfm'] . '

      ' . $hesk_error_buffer . '
    '; + hesk_process_messages($hesk_error_buffer, 'manage_canned.php'); } - /* Get the latest reply_order */ - $result = hesk_dbQuery('SELECT `reply_order` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'std_replies` ORDER BY `reply_order` DESC LIMIT 1'); - $row = hesk_dbFetchRow($result); - $my_order = $row[0]+10; + /* Get the latest reply_order */ + $result = hesk_dbQuery('SELECT `reply_order` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'std_replies` ORDER BY `reply_order` DESC LIMIT 1'); + $row = hesk_dbFetchRow($result); + $my_order = $row[0] + 10; - hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."std_replies` (`title`,`message`,`reply_order`) VALUES ('".hesk_dbEscape($savename)."','".hesk_dbEscape($msg)."','".intval($my_order)."')"); + hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "std_replies` (`title`,`message`,`reply_order`) VALUES ('" . hesk_dbEscape($savename) . "','" . hesk_dbEscape($msg) . "','" . intval($my_order) . "')"); - unset($_SESSION['canned']['what']); + unset($_SESSION['canned']['what']); unset($_SESSION['canned']['name']); unset($_SESSION['canned']['msg']); - hesk_process_messages($hesklang['your_saved'],'manage_canned.php','SUCCESS'); + hesk_process_messages($hesklang['your_saved'], 'manage_canned.php', 'SUCCESS'); } // End new_saved() function remove() { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* A security check */ - hesk_token_check(); + /* A security check */ + hesk_token_check(); - $mysaved = intval( hesk_GET('id') ) or hesk_error($hesklang['id_not_valid']); + $mysaved = intval(hesk_GET('id')) or hesk_error($hesklang['id_not_valid']); - hesk_dbQuery("DELETE FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."std_replies` WHERE `id`='".intval($mysaved)."' LIMIT 1"); - if (hesk_dbAffectedRows() != 1) - { - hesk_error("$hesklang[int_error]: $hesklang[reply_not_found]."); + hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "std_replies` WHERE `id`='" . intval($mysaved) . "' LIMIT 1"); + if (hesk_dbAffectedRows() != 1) { + hesk_error("$hesklang[int_error]: $hesklang[reply_not_found]."); } - hesk_process_messages($hesklang['saved_rem_full'],'manage_canned.php','SUCCESS'); + hesk_process_messages($hesklang['saved_rem_full'], 'manage_canned.php', 'SUCCESS'); } // End remove() function order_saved() { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* A security check */ - hesk_token_check(); + /* A security check */ + hesk_token_check(); - $replyid = intval( hesk_GET('replyid') ) or hesk_error($hesklang['reply_move_id']); + $replyid = intval(hesk_GET('replyid')) or hesk_error($hesklang['reply_move_id']); $_SESSION['canned']['selcat2'] = $replyid; - $reply_move = intval( hesk_GET('move') ); + $reply_move = intval(hesk_GET('move')); - hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."std_replies` SET `reply_order`=`reply_order`+".intval($reply_move)." WHERE `id`='".intval($replyid)."' LIMIT 1"); - if (hesk_dbAffectedRows() != 1) {hesk_error("$hesklang[int_error]: $hesklang[reply_not_found].");} + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "std_replies` SET `reply_order`=`reply_order`+" . intval($reply_move) . " WHERE `id`='" . intval($replyid) . "' LIMIT 1"); + if (hesk_dbAffectedRows() != 1) { + hesk_error("$hesklang[int_error]: $hesklang[reply_not_found]."); + } - /* Update all category fields with new order */ - $result = hesk_dbQuery('SELECT `id` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'std_replies` ORDER BY `reply_order` ASC'); + /* Update all category fields with new order */ + $result = hesk_dbQuery('SELECT `id` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'std_replies` ORDER BY `reply_order` ASC'); - $i = 10; - while ($myreply=hesk_dbFetchAssoc($result)) - { - hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."std_replies` SET `reply_order`=".intval($i)." WHERE `id`='".intval($myreply['id'])."' LIMIT 1"); - $i += 10; - } + $i = 10; + while ($myreply = hesk_dbFetchAssoc($result)) { + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "std_replies` SET `reply_order`=" . intval($i) . " WHERE `id`='" . intval($myreply['id']) . "' LIMIT 1"); + $i += 10; + } - header('Location: manage_canned.php'); - exit(); + header('Location: manage_canned.php'); + exit(); } // End order_saved() ?> diff --git a/admin/manage_categories.php b/admin/manage_categories.php index 647e9251..99ea294d 100644 --- a/admin/manage_categories.php +++ b/admin/manage_categories.php @@ -1,39 +1,35 @@ array('value' => 3, 'text' => $hesklang['low'], 'formatted' => $hesklang['low']), - 2 => array('value' => 2, 'text' => $hesklang['medium'], 'formatted' => ''.$hesklang['medium'].''), - 1 => array('value' => 1, 'text' => $hesklang['high'], 'formatted' => ''.$hesklang['high'].''), - 0 => array('value' => 0, 'text' => $hesklang['critical'], 'formatted' => ''.$hesklang['critical'].''), + 3 => array('value' => 3, 'text' => $hesklang['low'], 'formatted' => $hesklang['low']), + 2 => array('value' => 2, 'text' => $hesklang['medium'], 'formatted' => '' . $hesklang['medium'] . ''), + 1 => array('value' => 1, 'text' => $hesklang['high'], 'formatted' => '' . $hesklang['high'] . ''), + 0 => array('value' => 0, 'text' => $hesklang['critical'], 'formatted' => '' . $hesklang['critical'] . ''), ); /* What should we do? */ -if ( $action = hesk_REQUEST('a') ) -{ - if ($action == 'linkcode') {generate_link_code();} - elseif ( defined('HESK_DEMO') ) {hesk_process_messages($hesklang['ddemo'], 'manage_categories.php', 'NOTICE');} - elseif ($action == 'new') {new_cat();} - elseif ($action == 'rename') {rename_cat();} - elseif ($action == 'remove') {remove();} - elseif ($action == 'order') {order_cat();} - elseif ($action == 'autoassign') {toggle_autoassign();} - elseif ($action == 'type') {toggle_type();} - elseif ($action == 'priority') {change_priority();} - elseif ($action == 'manager') {change_manager();} +if ($action = hesk_REQUEST('a')) { + if ($action == 'linkcode') { + generate_link_code(); + } elseif (defined('HESK_DEMO')) { + hesk_process_messages($hesklang['ddemo'], 'manage_categories.php', 'NOTICE'); + } elseif ($action == 'new') { + new_cat(); + } elseif ($action == 'rename') { + rename_cat(); + } elseif ($action == 'remove') { + remove(); + } elseif ($action == 'order') { + order_cat(); + } elseif ($action == 'autoassign') { + toggle_autoassign(); + } elseif ($action == 'type') { + toggle_type(); + } elseif ($action == 'priority') { + change_priority(); + } elseif ($action == 'manager') { + change_manager(); + } } $modsForHesk_settings = mfh_getSettings(); @@ -81,24 +87,26 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); ?> '.$mycat['name'].''; - } +$orderBy = $modsForHesk_settings['category_order_column']; +$res = hesk_dbQuery("SELECT * FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` ORDER BY `" . $orderBy . "` ASC"); +$options = ''; +while ($mycat = hesk_dbFetchAssoc($res)) { + $options .= '
    - - - + + +

    +
    +
    +
    - /> + />
    - - - + + +

    +
    +
    - + +
    @@ -227,8 +256,8 @@ else {return false;}
    - - + +
    @@ -237,22 +266,24 @@ else {return false;}
    -

    +

    +
    @@ -267,130 +298,106 @@ else {return false;} '; - } - else - { - $remove_code=' '; + if ($mycat['id'] == 1) { + $remove_code = ' '; + } else { + $remove_code = ' '; } /* Is category private or public? */ - if ($mycat['type']) - { - $type_code = ''; - } - else - { - $type_code = ''; + if ($mycat['type']) { + $type_code = ''; + } else { + $type_code = ''; } /* Is auto assign enabled? */ - if ($hesk_settings['autoassign']) - { - if ($mycat['autoassign']) - { - $autoassign_code = ''; - } - else - { - $autoassign_code = ''; + if ($hesk_settings['autoassign']) { + if ($mycat['autoassign']) { + $autoassign_code = ''; + } else { + $autoassign_code = ''; } - } - else - { + } else { $autoassign_code = ''; } echo ' - - - - + + + + - + + echo $remove_code . ' '; @@ -398,7 +405,7 @@ else {return false;} ?>
    '.$mycat['id'].''.$mycat['name'].''.$priorities[$mycat['priority']]['formatted'].''.$all.'' . $mycat['id'] . '' . $mycat['name'] . '' . $priorities[$mycat['priority']]['formatted'] . '' . $all . ' -
    -
    +
    +
    40% Complete (success)
    '.output_user_dropdown($mycat['id'], $mycat['manager'], $users).'' . output_user_dropdown($mycat['id'], $mycat['manager'], $users) . ' - + ' . $autoassign_code . ' ' . $type_code . ' '; - if ($orderBy != 'name' && $num > 1) - { - if ($j == 1) - { - echo' '; - } - elseif ($j == $num) - { - echo' '; - } - else - { - echo' - -   + if ($orderBy != 'name' && $num > 1) { + if ($j == 1) { + echo ' '; + } elseif ($j == $num) { + echo ' '; + } else { + echo ' + +   '; } } - echo $remove_code.'
    -
    +
    3) - { + $_SESSION['cat_priority'] = intval(hesk_POST('priority', 3)); + if ($_SESSION['cat_priority'] < 0 || $_SESSION['cat_priority'] > 3) { $_SESSION['cat_priority'] = 3; } /* Category name */ - $catname = hesk_input( hesk_POST('name') , $hesklang['enter_cat_name'], 'manage_categories.php'); + $catname = hesk_input(hesk_POST('name'), $hesklang['enter_cat_name'], 'manage_categories.php'); /* Do we already have a category with this name? */ - $res = hesk_dbQuery("SELECT `id` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `name` LIKE '".hesk_dbEscape( hesk_dbLike($catname) )."' LIMIT 1"); - if (hesk_dbNumRows($res) != 0) - { - $_SESSION['catname'] = $catname; - hesk_process_messages($hesklang['cndupl'],'manage_categories.php'); + $res = hesk_dbQuery("SELECT `id` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` WHERE `name` LIKE '" . hesk_dbEscape(hesk_dbLike($catname)) . "' LIMIT 1"); + if (hesk_dbNumRows($res) != 0) { + $_SESSION['catname'] = $catname; + hesk_process_messages($hesklang['cndupl'], 'manage_categories.php'); } - /* Get the latest cat_order */ - $res = hesk_dbQuery("SELECT `cat_order` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` ORDER BY `cat_order` DESC LIMIT 1"); - $row = hesk_dbFetchRow($res); - $my_order = $row[0]+10; + /* Get the latest cat_order */ + $res = hesk_dbQuery("SELECT `cat_order` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` ORDER BY `cat_order` DESC LIMIT 1"); + $row = hesk_dbFetchRow($res); + $my_order = $row[0] + 10; - hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` (`name`,`cat_order`,`autoassign`,`type`, `priority`) VALUES ('".hesk_dbEscape($catname)."','".intval($my_order)."','".intval($_SESSION['cat_autoassign'])."','".intval($_SESSION['cat_type'])."','{$_SESSION['cat_priority']}')"); + hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` (`name`,`cat_order`,`autoassign`,`type`, `priority`) VALUES ('" . hesk_dbEscape($catname) . "','" . intval($my_order) . "','" . intval($_SESSION['cat_autoassign']) . "','" . intval($_SESSION['cat_type']) . "','{$_SESSION['cat_priority']}')"); hesk_cleanSessionVars('catname'); hesk_cleanSessionVars('cat_autoassign'); @@ -545,103 +549,95 @@ function new_cat() $_SESSION['selcat2'] = hesk_dbInsertID(); - hesk_process_messages(sprintf($hesklang['cat_name_added'],''.stripslashes($catname).''),'manage_categories.php','SUCCESS'); + hesk_process_messages(sprintf($hesklang['cat_name_added'], '' . stripslashes($catname) . ''), 'manage_categories.php', 'SUCCESS'); } // End new_cat() function rename_cat() { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* A security check */ - hesk_token_check('POST'); + /* A security check */ + hesk_token_check('POST'); - $_SERVER['PHP_SELF'] = 'manage_categories.php?catid='.intval( hesk_POST('catid') ); + $_SERVER['PHP_SELF'] = 'manage_categories.php?catid=' . intval(hesk_POST('catid')); - $catid = hesk_isNumber( hesk_POST('catid'), $hesklang['choose_cat_ren'], $_SERVER['PHP_SELF']); - $_SESSION['selcat'] = $catid; + $catid = hesk_isNumber(hesk_POST('catid'), $hesklang['choose_cat_ren'], $_SERVER['PHP_SELF']); + $_SESSION['selcat'] = $catid; $_SESSION['selcat2'] = $catid; - $catname = hesk_input( hesk_POST('name'), $hesklang['cat_ren_name'], $_SERVER['PHP_SELF']); + $catname = hesk_input(hesk_POST('name'), $hesklang['cat_ren_name'], $_SERVER['PHP_SELF']); $_SESSION['catname2'] = $catname; - $res = hesk_dbQuery("SELECT `id` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `name` LIKE '".hesk_dbEscape( hesk_dbLike($catname) )."' LIMIT 1"); - if (hesk_dbNumRows($res) != 0) - { - $old = hesk_dbFetchAssoc($res); - if ($old['id'] == $catid) - { - hesk_process_messages($hesklang['noch'],$_SERVER['PHP_SELF'],'NOTICE'); - } - else - { - hesk_process_messages($hesklang['cndupl'],$_SERVER['PHP_SELF']); + $res = hesk_dbQuery("SELECT `id` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` WHERE `name` LIKE '" . hesk_dbEscape(hesk_dbLike($catname)) . "' LIMIT 1"); + if (hesk_dbNumRows($res) != 0) { + $old = hesk_dbFetchAssoc($res); + if ($old['id'] == $catid) { + hesk_process_messages($hesklang['noch'], $_SERVER['PHP_SELF'], 'NOTICE'); + } else { + hesk_process_messages($hesklang['cndupl'], $_SERVER['PHP_SELF']); } } - hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` SET `name`='".hesk_dbEscape($catname)."' WHERE `id`='".intval($catid)."' LIMIT 1"); + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` SET `name`='" . hesk_dbEscape($catname) . "' WHERE `id`='" . intval($catid) . "' LIMIT 1"); unset($_SESSION['selcat']); unset($_SESSION['catname2']); - hesk_process_messages($hesklang['cat_renamed_to'].' '.stripslashes($catname).'',$_SERVER['PHP_SELF'],'SUCCESS'); + hesk_process_messages($hesklang['cat_renamed_to'] . ' ' . stripslashes($catname) . '', $_SERVER['PHP_SELF'], 'SUCCESS'); } // End rename_cat() function remove() { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* A security check */ - hesk_token_check(); + /* A security check */ + hesk_token_check(); $_SERVER['PHP_SELF'] = 'manage_categories.php'; - $mycat = intval( hesk_GET('catid') ) or hesk_error($hesklang['no_cat_id']); - if ($mycat == 1) - { - hesk_process_messages($hesklang['cant_del_default_cat'],$_SERVER['PHP_SELF']); + $mycat = intval(hesk_GET('catid')) or hesk_error($hesklang['no_cat_id']); + if ($mycat == 1) { + hesk_process_messages($hesklang['cant_del_default_cat'], $_SERVER['PHP_SELF']); } - hesk_dbQuery("DELETE FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `id`='".intval($mycat)."' LIMIT 1"); - if (hesk_dbAffectedRows() != 1) - { - hesk_error("$hesklang[int_error]: $hesklang[cat_not_found]."); + hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` WHERE `id`='" . intval($mycat) . "' LIMIT 1"); + if (hesk_dbAffectedRows() != 1) { + hesk_error("$hesklang[int_error]: $hesklang[cat_not_found]."); } - hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` SET `category`=1 WHERE `category`='".intval($mycat)."'"); + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `category`=1 WHERE `category`='" . intval($mycat) . "'"); - hesk_process_messages($hesklang['cat_removed_db'],$_SERVER['PHP_SELF'],'SUCCESS'); + hesk_process_messages($hesklang['cat_removed_db'], $_SERVER['PHP_SELF'], 'SUCCESS'); } // End remove() function order_cat() { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* A security check */ - hesk_token_check(); + /* A security check */ + hesk_token_check(); - $catid = intval( hesk_GET('catid') ) or hesk_error($hesklang['cat_move_id']); - $_SESSION['selcat2'] = $catid; + $catid = intval(hesk_GET('catid')) or hesk_error($hesklang['cat_move_id']); + $_SESSION['selcat2'] = $catid; - $cat_move=intval( hesk_GET('move') ); + $cat_move = intval(hesk_GET('move')); - hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` SET `cat_order`=`cat_order`+".intval($cat_move)." WHERE `id`='".intval($catid)."' LIMIT 1"); - if (hesk_dbAffectedRows() != 1) - { - hesk_error("$hesklang[int_error]: $hesklang[cat_not_found]."); + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` SET `cat_order`=`cat_order`+" . intval($cat_move) . " WHERE `id`='" . intval($catid) . "' LIMIT 1"); + if (hesk_dbAffectedRows() != 1) { + hesk_error("$hesklang[int_error]: $hesklang[cat_not_found]."); } - /* Update all category fields with new order */ - $res = hesk_dbQuery("SELECT `id` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` ORDER BY `cat_order` ASC"); + /* Update all category fields with new order */ + $res = hesk_dbQuery("SELECT `id` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` ORDER BY `cat_order` ASC"); - $i = 10; - while ($mycat=hesk_dbFetchAssoc($res)) - { - hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` SET `cat_order`=".intval($i)." WHERE `id`='".intval($mycat['id'])."' LIMIT 1"); - $i += 10; - } + $i = 10; + while ($mycat = hesk_dbFetchAssoc($res)) { + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` SET `cat_order`=" . intval($i) . " WHERE `id`='" . intval($mycat['id']) . "' LIMIT 1"); + $i += 10; + } header('Location: manage_categories.php'); exit(); @@ -650,120 +646,114 @@ function order_cat() function toggle_autoassign() { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* A security check */ - hesk_token_check(); + /* A security check */ + hesk_token_check(); - $catid = intval( hesk_GET('catid') ) or hesk_error($hesklang['cat_move_id']); - $_SESSION['selcat2'] = $catid; + $catid = intval(hesk_GET('catid')) or hesk_error($hesklang['cat_move_id']); + $_SESSION['selcat2'] = $catid; - if ( intval( hesk_GET('s') ) ) - { - $autoassign = 1; + if (intval(hesk_GET('s'))) { + $autoassign = 1; $tmp = $hesklang['caaon']; - } - else - { + } else { $autoassign = 0; $tmp = $hesklang['caaoff']; } - /* Update auto-assign settings */ - $res = hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` SET `autoassign`='".intval($autoassign)."' WHERE `id`='".intval($catid)."' LIMIT 1"); - if (hesk_dbAffectedRows() != 1) - { - hesk_process_messages($hesklang['int_error'].': '.$hesklang['cat_not_found'],'./manage_categories.php'); + /* Update auto-assign settings */ + $res = hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` SET `autoassign`='" . intval($autoassign) . "' WHERE `id`='" . intval($catid) . "' LIMIT 1"); + if (hesk_dbAffectedRows() != 1) { + hesk_process_messages($hesklang['int_error'] . ': ' . $hesklang['cat_not_found'], './manage_categories.php'); } - hesk_process_messages($tmp,'./manage_categories.php','SUCCESS'); + hesk_process_messages($tmp, './manage_categories.php', 'SUCCESS'); } // End toggle_autoassign() function toggle_type() { - global $hesk_settings, $hesklang; + global $hesk_settings, $hesklang; - /* A security check */ - hesk_token_check(); + /* A security check */ + hesk_token_check(); - $catid = intval( hesk_GET('catid') ) or hesk_error($hesklang['cat_move_id']); - $_SESSION['selcat2'] = $catid; + $catid = intval(hesk_GET('catid')) or hesk_error($hesklang['cat_move_id']); + $_SESSION['selcat2'] = $catid; - if ( intval( hesk_GET('s') ) ) - { - $type = 1; + if (intval(hesk_GET('s'))) { + $type = 1; $tmp = $hesklang['cpriv']; - } - else - { + } else { $type = 0; $tmp = $hesklang['cpub']; } - /* Update auto-assign settings */ - hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` SET `type`='{$type}' WHERE `id`='".intval($catid)."' LIMIT 1"); - if (hesk_dbAffectedRows() != 1) - { - hesk_process_messages($hesklang['int_error'].': '.$hesklang['cat_not_found'],'./manage_categories.php'); + /* Update auto-assign settings */ + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` SET `type`='{$type}' WHERE `id`='" . intval($catid) . "' LIMIT 1"); + if (hesk_dbAffectedRows() != 1) { + hesk_process_messages($hesklang['int_error'] . ': ' . $hesklang['cat_not_found'], './manage_categories.php'); } - hesk_process_messages($tmp,'./manage_categories.php','SUCCESS'); + hesk_process_messages($tmp, './manage_categories.php', 'SUCCESS'); } // End toggle_type() -function output_user_dropdown($catId, $selectId, $userArray) { +function output_user_dropdown($catId, $selectId, $userArray) +{ global $hesklang; if (!hesk_checkPermission('can_set_manager', 0)) { foreach ($userArray as $user) { if ($user['id'] == $selectId) { - return '

    '.$user['name'].'

    '; + return '

    ' . $user['name'] . '

    '; } } - return '

    '.$hesklang['no_manager'].'

    '; + return '

    ' . $hesklang['no_manager'] . '

    '; } else { $dropdownMarkup = ''; - return ' + return ' - - '.$dropdownMarkup.' + + ' . $dropdownMarkup . ' '; } } -function change_manager() { +function change_manager() +{ global $hesklang, $hesk_settings; $catid = hesk_POST('catid'); $newManagerId = hesk_POST('managerid'); - hesk_dbQuery('UPDATE `'.hesk_dbEscape($hesk_settings['db_pfix']).'categories` SET `manager` = '.intval($newManagerId).' WHERE `id` = '.intval($catid)); - if (hesk_dbAffectedRows() != 1) - { - hesk_process_messages($hesklang['int_error'].': '.$hesklang['cat_not_found'],'./manage_categories.php'); + hesk_dbQuery('UPDATE `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'categories` SET `manager` = ' . intval($newManagerId) . ' WHERE `id` = ' . intval($catid)); + if (hesk_dbAffectedRows() != 1) { + hesk_process_messages($hesklang['int_error'] . ': ' . $hesklang['cat_not_found'], './manage_categories.php'); } if ($newManagerId == 0) { // There is no new manager. return; } // Add the category to the user's categories list, if not already present - $currentCatRs = hesk_dbQuery('SELECT `categories` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'users` WHERE `id` = '.intval($newManagerId)); + $currentCatRs = hesk_dbQuery('SELECT `categories` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'users` WHERE `id` = ' . intval($newManagerId)); $currentCategories = hesk_dbFetchAssoc($currentCatRs); $categories = explode(',', $currentCategories['categories']); if (!in_array($catid, $categories)) { - hesk_dbQuery('UPDATE `'.hesk_dbEscape($hesk_settings['db_pfix']).'users` SET `categories` = \''.$currentCategories['categories'].','.$catid.'\' WHERE `id` = '.intval($newManagerId)); + hesk_dbQuery('UPDATE `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'users` SET `categories` = \'' . $currentCategories['categories'] . ',' . $catid . '\' WHERE `id` = ' . intval($newManagerId)); } - hesk_process_messages($hesklang['manager_updated'],'./manage_categories.php','SUCCESS'); + hesk_process_messages($hesklang['manager_updated'], './manage_categories.php', 'SUCCESS'); } + ?> diff --git a/admin/manage_email_templates.php b/admin/manage_email_templates.php index 5d816e92..87e0f586 100644 --- a/admin/manage_email_templates.php +++ b/admin/manage_email_templates.php @@ -1,7 +1,7 @@ -
    -
    - -
    -
    - +
    +
    + $value) { - $languages[$key] = $hesk_settings['languages'][$key]['folder']; - } + // Output list of templates, and provide links to edit the plaintext and HTML versions for each language + // First get list of languages + $languages = array(); + foreach ($hesk_settings['languages'] as $key => $value) { + $languages[$key] = $hesk_settings['languages'][$key]['folder']; + } - // Get all files, but don't worry about index.htm, items beginning with '.', or the html folder - // We'll also assume the template file exists in all language folders and in the html folder - reset($languages); - $firstKey = key($languages); - $firstDirectory = HESK_PATH . 'language/'.$languages[$firstKey].'/emails'; - $directoryListing = preg_grep('/^([^.])/', scandir($firstDirectory)); - $emailTemplates = array_diff($directoryListing, array('html', 'index.htm')); + // Get all files, but don't worry about index.htm, items beginning with '.', or the html folder + // We'll also assume the template file exists in all language folders and in the html folder + reset($languages); + $firstKey = key($languages); + $firstDirectory = HESK_PATH . 'language/' . $languages[$firstKey] . '/emails'; + $directoryListing = preg_grep('/^([^.])/', scandir($firstDirectory)); + $emailTemplates = array_diff($directoryListing, array('html', 'index.htm')); - ?> - - + ?> +
    + $languageCode): ?> - - + + $languageCode): ?> - + - -
    - - + +
    + + +
    -
    '; - $markup .= ''; + $markup = ''; + $markup .= ''; $markup .= ''; return $markup; } else { - $markup = ''; - $markup .= ''; + $markup = ''; + $markup .= ''; $markup .= ''; return $markup; } } -function save() { +function save() +{ global $hesklang; - $filePath = HESK_PATH . 'language/'.$_POST['language'].'/emails/'.$_POST['template']; + $filePath = HESK_PATH . 'language/' . $_POST['language'] . '/emails/' . $_POST['template']; if ($_POST['html'] == '1') { - $filePath = HESK_PATH . 'language/'.$_POST['language'].'/emails/html/'.$_POST['template']; + $filePath = HESK_PATH . 'language/' . $_POST['language'] . '/emails/html/' . $_POST['template']; } $success = file_put_contents($filePath, $_POST['text']); @@ -277,11 +283,12 @@ function save() { hesk_process_messages($hesklang['email_template_not_saved'], 'manage_email_templates.php'); } else { $message = sprintf($hesklang['email_template_saved'], $_POST['template']); - hesk_process_messages($message,'manage_email_templates.php','SUCCESS'); + hesk_process_messages($message, 'manage_email_templates.php', 'SUCCESS'); } } -function getSpecialTagMap() { +function getSpecialTagMap() +{ global $hesk_settings, $modsForHesk_settings, $hesklang; $map = array(); @@ -305,7 +312,7 @@ function getSpecialTagMap() { foreach ($hesk_settings['custom_fields'] as $key => $value) { if ($value['use']) { $uppercaseKey = strtoupper($key); - $map['%%'.$uppercaseKey.'%%'] = sprintf($hesklang['custom_field_x'], $i++); + $map['%%' . $uppercaseKey . '%%'] = sprintf($hesklang['custom_field_x'], $i++); } } diff --git a/admin/manage_knowledgebase.php b/admin/manage_knowledgebase.php index 97a407b0..e1c86bea 100644 --- a/admin/manage_knowledgebase.php +++ b/admin/manage_knowledgebase.php @@ -8,24 +8,20 @@ * COPYRIGHT AND TRADEMARK NOTICE * Copyright 2005-2015 Klemen Stirn. All Rights Reserved. * HESK is a registered trademark of Klemen Stirn. - -* The HESK may be used and modified free of charge by anyone + * The HESK may be used and modified free of charge by anyone * AS LONG AS COPYRIGHT NOTICES AND ALL THE COMMENTS REMAIN INTACT. * By using this code you agree to indemnify Klemen Stirn from any * liability that might arise from it's use. - -* Selling the code for this program, in part or full, without prior + * Selling the code for this program, in part or full, without prior * written consent is expressly forbidden. - -* Using this code, in part or full, to create derivate work, + * Using this code, in part or full, to create derivate work, * new scripts or products is expressly forbidden. Obtain permission * before redistributing this software over the Internet or in * any other medium. In all cases copyright and header must remain intact. * This Copyright is in full effect in any country that has International * Trade Agreements with the United States of America or * with the European Union. - -* Removing any of the copyright notices without purchasing a license + * Removing any of the copyright notices without purchasing a license * is expressly forbidden. To remove HESK copyright notice you must purchase * a license for this script. For more information on how to obtain * a license please visit the page below: diff --git a/admin/manage_permission_templates.php b/admin/manage_permission_templates.php index 1849f1b2..373a1629 100644 --- a/admin/manage_permission_templates.php +++ b/admin/manage_permission_templates.php @@ -1,39 +1,35 @@
    -

    - -

    +

    + +

    +
    - - - - - - - + + + + + + + @@ -137,13 +142,13 @@ else {return false;} - - - - - + ?> + + + + + @@ -160,14 +165,16 @@ exit(); /*** START FUNCTIONS ***/ -function getNumberOfUsersWithPermissionGroup($templateId) { +function getNumberOfUsersWithPermissionGroup($templateId) +{ global $hesk_settings; - $res = hesk_dbQuery("SELECT 1 FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE `permission_template` = ".intval($templateId)); + $res = hesk_dbQuery("SELECT 1 FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` WHERE `permission_template` = " . intval($templateId)); return hesk_dbNumRows($res); } -function createEditModal($template, $features, $categories) { +function createEditModal($template, $features, $categories) +{ global $hesklang; $showNotice = true; @@ -181,32 +188,37 @@ function createEditModal($template, $features, $categories) { $enabledCategories = explode(',', $template['categories']); } ?> -