From df5ec2281d9d2a3d117bd70f5f5cb34d99142d69 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Wed, 5 Oct 2016 17:53:23 -0400 Subject: [PATCH] Some more changes --- admin/admin_settings.php | 4 +- admin/admin_ticket.php | 5 + inc/custom_fields.inc.php | 247 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 254 insertions(+), 2 deletions(-) create mode 100755 inc/custom_fields.inc.php diff --git a/admin/admin_settings.php b/admin/admin_settings.php index 54951d0f..e8ef90bc 100644 --- a/admin/admin_settings.php +++ b/admin/admin_settings.php @@ -47,6 +47,8 @@ require(HESK_PATH . 'inc/common.inc.php'); $hesk_settings['language'] = $hesk_settings['language_default']; require(HESK_PATH . 'inc/admin_functions.inc.php'); require(HESK_PATH . 'inc/mail_functions.inc.php'); +// Load custom fields +require_once(HESK_PATH . 'inc/custom_fields.inc.php'); hesk_load_database_functions(); hesk_session_start(); @@ -56,8 +58,6 @@ hesk_isLoggedIn(); // Check permissions for this feature hesk_checkPermission('can_man_settings'); -// Load custom fields -//require_once(HESK_PATH . 'inc/custom_fields.inc.php'); // Test languages function if (isset($_GET['test_languages'])) { diff --git a/admin/admin_ticket.php b/admin/admin_ticket.php index fb6f0698..9a434e44 100644 --- a/admin/admin_ticket.php +++ b/admin/admin_ticket.php @@ -60,14 +60,19 @@ $can_archive = hesk_checkPermission('can_add_archive', 0); $can_assign_self = hesk_checkPermission('can_assign_self', 0); $can_view_unassigned = hesk_checkPermission('can_view_unassigned', 0); $can_change_cat = hesk_checkPermission('can_change_cat', 0); +$can_change_own_cat = hesk_checkPermission('can_change_own_cat',0); $can_ban_emails = hesk_checkPermission('can_ban_emails', 0); $can_unban_emails = hesk_checkPermission('can_unban_emails', 0); $can_ban_ips = hesk_checkPermission('can_ban_ips', 0); $can_unban_ips = hesk_checkPermission('can_unban_ips', 0); +$can_resolve = hesk_checkPermission('can_resolve', 0); // Get ticket ID $trackingID = hesk_cleanID() or print_form(); +// Load custom fields +require_once(HESK_PATH . 'inc/custom_fields.inc.php'); + $_SERVER['PHP_SELF'] = 'admin_ticket.php?track=' . $trackingID . '&Refresh=' . mt_rand(10000, 99999); /* We will need timer function */ diff --git a/inc/custom_fields.inc.php b/inc/custom_fields.inc.php new file mode 100755 index 00000000..2a7798ce --- /dev/null +++ b/inc/custom_fields.inc.php @@ -0,0 +1,247 @@ + $v) + { + $hesk_settings['possible_ticket_list'][$k] = $hesk_settings['custom_fields'][$k]['title']; + } +} + + +/*** FUNCTIONS ***/ + + +function hesk_load_custom_fields($category=0, $use_cache=1) +{ + global $hesk_settings, $hesklang; + + // Do we have a cached version available + $cache_dir = dirname(dirname(__FILE__)).'/'.$hesk_settings['attach_dir'].'/cf/'; + $cache_file = $cache_dir . sha1($hesk_settings['language']).'.cache.php'; + + if ($use_cache && file_exists($cache_file)) + { + require($cache_file); + return true; + } + + // Get custom fields from the database + $hesk_settings['custom_fields'] = array(); + + // Make sure we have database connection + hesk_load_database_functions(); + hesk_dbConnect(); + + $res = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."custom_fields` WHERE `use` IN ('1', '2') ORDER BY `place` ASC, `order` ASC"); + while ($row = hesk_dbFetchAssoc($res)) + { + $id = 'custom' . $row['id']; + unset($row['id']); + + // Let's set field name for current language (or the first one we find) + $names = json_decode($row['name'], true); + $row['name'] = (isset($names[$hesk_settings['language']])) ? $names[$hesk_settings['language']] : reset($names); + + // Name for display in ticket list; punctuation removed and shortened + $row['title'] = hesk_remove_punctuation($row['name']); + $row['title'] = strlen($row['title']) > 30 ? substr($row['title'], 0, 30) . '...' : $row['title']; + + // A version with forced punctuation + $row['name:'] = in_array(substr($row['name'], -1), array(':', '?', '!', '.') ) ? $row['name'] : $row['name'] . ':'; + + // Decode categories + $row['category'] = strlen($row['category']) ? json_decode($row['category'], true) : array(); + + // Decode options + $row['value'] = json_decode($row['value'], true); + + // Add to custom_fields array + $hesk_settings['custom_fields'][$id] = $row; + } + + // Try to cache results + if ($use_cache && (is_dir($cache_dir) || ( @mkdir($cache_dir, 0777) && is_writable($cache_dir) ) ) ) + { + // Is there an index.htm file? + if ( ! file_exists($cache_dir.'index.htm')) + { + @file_put_contents($cache_dir.'index.htm', ''); + } + + // Write data + @file_put_contents($cache_file, ' $hesklang['m1'], + 'February' => $hesklang['m2'], + 'March' => $hesklang['m3'], + 'April' => $hesklang['m4'], + 'May' => $hesklang['m5'], + 'June' => $hesklang['m6'], + 'July' => $hesklang['m7'], + 'August' => $hesklang['m8'], + 'September' => $hesklang['m9'], + 'October' => $hesklang['m10'], + 'November' => $hesklang['m11'], + 'December' => $hesklang['m12'] + ); + + $translate_months_short = array( + 'Jan' => $hesklang['ms01'], + 'Feb' => $hesklang['ms02'], + 'Mar' => $hesklang['ms03'], + 'Apr' => $hesklang['ms04'], + 'May' => $hesklang['ms05'], + 'Jun' => $hesklang['ms06'], + 'Jul' => $hesklang['ms07'], + 'Aug' => $hesklang['ms08'], + 'Sep' => $hesklang['ms09'], + 'Oct' => $hesklang['ms10'], + 'Nov' => $hesklang['ms11'], + 'Dec' => $hesklang['ms12'] + ); + + $translate_days = array( + 'Monday' => $hesklang['d1'], + 'Tuesday' => $hesklang['d2'], + 'Wednesday' => $hesklang['d3'], + 'Thursday' => $hesklang['d4'], + 'Friday' => $hesklang['d5'], + 'Saturday' => $hesklang['d6'], + 'Sunday' => $hesklang['d0'] + ); + + $translate_days_short = array( + 'Mon' => $hesklang['mo'], + 'Tuw' => $hesklang['tu'], + 'Wes' => $hesklang['we'], + 'Thu' => $hesklang['th'], + 'Fri' => $hesklang['fr'], + 'Sat' => $hesklang['sa'], + 'Sun' => $hesklang['su'] + ); + + $date_translate = array(); + + if (strpos($format, 'F') !== false) + { + $date_translate = array_merge($date_translate, $translate_months); + } + + if (strpos($format, 'M') !== false) + { + $date_translate = array_merge($date_translate, $translate_months_short); + } + + if (strpos($format, 'l') !== false) + { + $date_translate = array_merge($date_translate, $translate_days); + } + + if (strpos($format, 'D') !== false) + { + $date_translate = array_merge($date_translate, $translate_days_short); + } + + if (count($date_translate)) + { + return str_replace( array_keys($date_translate), array_values($date_translate), gmdate($format, $timestamp)); + } + + return gmdate($format, $timestamp); + +} // END hesk_custom_date_display_format() + + +function hesk_remove_punctuation($in) +{ + return rtrim($in, ':?!.'); +} // END hesk_remove_punctuation()