' . $hesklang['warn'] . '
' . $hesklang['dmod'] . '
= ($half = ($ceil = ceil($num)) - 0.5) + 0.25) { return $ceil; } elseif ($num < $half - 0.25) { return floor($num); } else { return $half; } } // END hesk_round_to_half() function hesk_dateToString($dt, $returnName = 1, $returnTime = 0, $returnMonth = 0, $from_database = false) { global $hesk_settings, $hesklang; $dt = strtotime($dt); // Adjust MySQL time if different from PHP time if ($from_database) { if (!defined('MYSQL_TIME_DIFF')) { define('MYSQL_TIME_DIFF', time() - hesk_dbTime()); } if (MYSQL_TIME_DIFF != 0) { $dt += MYSQL_TIME_DIFF; } // Add HESK set time difference $dt += 3600 * $hesk_settings['diff_hours'] + 60 * $hesk_settings['diff_minutes']; // Daylight saving? if ($hesk_settings['daylight'] && date('I', $dt)) { $dt += 3600; } } list($y, $m, $n, $d, $G, $i, $s) = explode('-', date('Y-n-j-w-G-i-s', $dt)); $m = $hesklang['m' . $m]; $d = $hesklang['d' . $d]; if ($returnName) { return "$d, $m $n, $y"; } if ($returnTime) { return "$d, $m $n, $y $G:$i:$s"; } if ($returnMonth) { return "$m $y"; } return "$m $n, $y"; } // End hesk_dateToString() function hesk_getFeatureArray() { return array( 'can_view_tickets', /* User can read tickets */ 'can_reply_tickets', /* User can reply to tickets */ 'can_del_tickets', /* User can delete tickets */ 'can_edit_tickets', /* User can edit tickets */ 'can_merge_tickets', /* User can merge tickets */ 'can_resolve', /* User can resolve tickets */ 'can_submit_any_cat', /* User can submit a ticket to any category/department */ 'can_del_notes', /* User can delete ticket notes posted by other staff members */ 'can_change_cat', /* User can move ticket to any category/department */ 'can_change_own_cat', /* User can move ticket to a category/department he/she has access to */ 'can_man_kb', /* User can manage knowledgebase articles and categories */ 'can_man_users', /* User can create and edit staff accounts */ 'can_man_cat', /* User can manage categories/departments */ 'can_man_canned', /* User can manage canned responses */ 'can_man_ticket_tpl', /* User can manage ticket templates */ 'can_add_archive', /* User can mark tickets as "Tagged" */ 'can_assign_self', /* User can assign tickets to himself/herself */ 'can_assign_others', /* User can assign tickets to other staff members */ 'can_view_unassigned', /* User can view unassigned tickets */ 'can_view_ass_others', /* User can view tickets that are assigned to other staff */ 'can_run_reports', /* User can run reports and see statistics (only allowed categories and self) */ 'can_run_reports_full', /* User can run reports and see statistics (unrestricted) */ 'can_export', /* User can export own tickets to Excel */ 'can_view_online', /* User can view what staff members are currently online */ 'can_ban_emails', /* User can ban email addresses */ 'can_unban_emails', /* User can delete email address bans. Also enables "can_ban_emails" */ 'can_ban_ips', /* User can ban IP addresses */ 'can_unban_ips', /* User can delete IP bans. Also enables "can_ban_ips" */ 'can_service_msg', /* User can manage service messages shown in customer interface */ 'can_email_tpl', /* User can manage email templates */ 'can_man_ticket_statuses', /* User can manage ticket statuses */ 'can_set_manager', /* User can set category managers */ 'can_man_permission_tpl', /* User can manage permission templates */ 'can_man_settings', /* User can manage helpdesk settings */ 'can_change_notification_settings', /* User can change notification settings */ 'can_view_logs', /* User can view the message logs */ 'can_man_calendar', /* User can manage calendar events */ ); } function mfh_doesStatusHaveXrefRecord($statusId, $language) { global $hesk_settings; $rs = hesk_dbQuery("SELECT 1 FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "text_to_status_xref` WHERE `language` = '" . hesk_dbEscape($language) . "' AND `status_id` = " . intval($statusId)); return hesk_dbNumRows($rs) > 0; } function mfh_getDisplayTextForStatusId($statusId) { global $hesklang, $hesk_settings; $statusRs = hesk_dbQuery("SELECT `text`, `Key`, `language` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` AS `statuses` LEFT JOIN `" . hesk_dbEscape($hesk_settings['db_pfix']) . "text_to_status_xref` ON `status_id` = `statuses`.`ID` AND `language` = '" . hesk_dbEscape($hesk_settings['language']) . "' WHERE `statuses`.`ID` = " . intval($statusId)); $statusRec = hesk_dbFetchAssoc($statusRs); if ($statusRec['text'] != NULL) { // We found a record. Use the text field return $statusRec['text']; } else { // Fallback to the language key return $hesklang[$statusRec['Key']]; } } function mfh_getNumberOfDownloadsForAttachment($att_id, $table = 'attachments') { global $hesk_settings; $res = hesk_dbQuery('SELECT `download_count` FROM `' . hesk_dbEscape($hesk_settings['db_pfix'] . $table) . "` WHERE `att_id` = " . intval($att_id)); $rec = hesk_dbFetchAssoc($res); return $rec['download_count']; } function mfh_getSettings() { global $hesk_settings; $settings = array(); $res = hesk_dbQuery("SELECT `Key`, `Value` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` WHERE `Key` <> 'modsForHeskVersion'"); while ($row = hesk_dbFetchAssoc($res)) { $settings[$row['Key']] = $row['Value']; } return $settings; } function mfh_log($location, $message, $severity, $user) { global $hesk_settings; $sql = "INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "logging` (`username`, `message`, `severity`, `location`, `timestamp`) VALUES ('" . hesk_dbEscape($user) . "', '" . hesk_dbEscape($message) . "', " . intval($severity) . ", '" . hesk_dbEscape($location) . "', NOW())"; hesk_dbQuery($sql); } function mfh_log_debug($location, $message, $user) { global $hesk_settings; if ($hesk_settings['debug_mode']) { mfh_log($location, $message, 0, $user); } } function mfh_log_info($location, $message, $user) { mfh_log($location, $message, 1, $user); } function mfh_log_warning($location, $message, $user) { mfh_log($location, $message, 2, $user); } function mfh_log_error($location, $message, $user) { mfh_log($location, $message, 3, $user); } function mfh_bytesToUnits($size) { $bytes_in_megabyte = 1048576; $quotient = $size / $bytes_in_megabyte; return intval($quotient); } /** * Returns the star markup based on the rating provided. Filled in stars are orange, empty stars are gray. */ function mfh_get_stars($rating) { $int_value = intval($rating); $has_half = $int_value === $rating; $markup = ''; for ($i = 0; $i < $int_value; $i++) { $markup .= ''; } if ($has_half) { $markup .= ''; } for ($i = 0; $i < 5 - $int_value; $i++) { $markup .= ''; } return $markup; }