From 107839166aba95eb5b5ac004bcb76f3ef103a98a Mon Sep 17 00:00:00 2001 From: Luke Tainton Date: Tue, 25 Aug 2020 17:24:00 +0100 Subject: [PATCH] :rocket: HESK v3.1.2 Signed-off-by: Luke Tainton --- hesk/admin/admin_reply_ticket.php | 89 ++++--- hesk/admin/admin_ticket.php | 237 +++++++++++++++--- hesk/admin/banned_emails.php | 2 +- hesk/admin/banned_ips.php | 2 +- hesk/admin/custom_fields.php | 2 +- hesk/admin/export.php | 8 +- hesk/admin/mail.php | 2 +- hesk/admin/manage_categories.php | 3 +- hesk/admin/manage_knowledgebase.php | 2 + hesk/admin/new_ticket.php | 65 +++-- hesk/admin/service_messages.php | 10 +- hesk/css/app.css | 2 +- hesk/css/app.min.css | 2 +- hesk/docs/changelog.html | 33 ++- hesk/docs/index.html | 13 +- hesk/docs/quick-guide.html | 13 +- hesk/docs/step-by-step-guide.html | 13 +- hesk/hesk_settings.inc.php | 4 +- hesk/inc/common.inc.php | 35 ++- hesk/inc/email_functions.inc.php | 10 +- hesk/inc/footer.inc.php | 4 +- hesk/inc/header.inc.php | 4 +- .../htmlpurifier/HTMLPurifier.standalone.php | 38 ++- .../HTMLPurifier/ConfigSchema/schema.ser | 2 +- .../ConfigSchema/schema/HTML.Forms.txt | 11 + .../HTMLPurifier/Printer/HTMLDefinition.php | 4 +- hesk/inc/knowledgebase_functions.inc.php | 4 +- hesk/inc/mail/email_parser.php | 2 +- hesk/inc/mail/mime_parser.php | 18 +- hesk/inc/mail/smtp.php | 32 ++- hesk/inc/profile_functions.inc.php | 2 +- hesk/inc/show_search_form.inc.php | 14 +- hesk/inc/statuses.inc.php | 2 + .../5.2.0/plugins/advlist/plugin.min.js | 9 - .../5.2.0/plugins/anchor/plugin.min.js | 9 - .../5.2.0/plugins/autolink/plugin.min.js | 9 - .../5.2.0/plugins/autoresize/plugin.min.js | 9 - .../5.2.0/plugins/autosave/plugin.min.js | 9 - .../5.2.0/plugins/bbcode/plugin.min.js | 9 - .../5.2.0/plugins/charmap/plugin.min.js | 9 - .../tiny_mce/5.2.0/plugins/code/plugin.min.js | 9 - .../5.2.0/plugins/codesample/plugin.min.js | 9 - .../plugins/directionality/plugin.min.js | 9 - .../5.2.0/plugins/emoticons/plugin.min.js | 9 - .../5.2.0/plugins/fullpage/plugin.min.js | 9 - .../5.2.0/plugins/fullscreen/plugin.min.js | 9 - .../tiny_mce/5.2.0/plugins/help/plugin.min.js | 9 - .../tiny_mce/5.2.0/plugins/hr/plugin.min.js | 9 - .../5.2.0/plugins/image/plugin.min.js | 9 - .../5.2.0/plugins/imagetools/plugin.min.js | 9 - .../5.2.0/plugins/importcss/plugin.min.js | 9 - .../plugins/insertdatetime/plugin.min.js | 9 - .../5.2.0/plugins/legacyoutput/plugin.min.js | 9 - .../tiny_mce/5.2.0/plugins/link/plugin.min.js | 9 - .../5.2.0/plugins/lists/plugin.min.js | 9 - .../5.2.0/plugins/media/plugin.min.js | 9 - .../5.2.0/plugins/nonbreaking/plugin.min.js | 9 - .../5.2.0/plugins/noneditable/plugin.min.js | 9 - .../5.2.0/plugins/pagebreak/plugin.min.js | 9 - .../5.2.0/plugins/paste/plugin.min.js | 9 - .../5.2.0/plugins/preview/plugin.min.js | 9 - .../5.2.0/plugins/print/plugin.min.js | 9 - .../5.2.0/plugins/quickbars/plugin.min.js | 9 - .../tiny_mce/5.2.0/plugins/save/plugin.min.js | 9 - .../5.2.0/plugins/searchreplace/plugin.min.js | 9 - .../5.2.0/plugins/spellchecker/plugin.min.js | 9 - .../5.2.0/plugins/tabfocus/plugin.min.js | 9 - .../5.2.0/plugins/table/plugin.min.js | 9 - .../5.2.0/plugins/template/plugin.min.js | 9 - .../5.2.0/plugins/textpattern/plugin.min.js | 9 - .../tiny_mce/5.2.0/plugins/toc/plugin.min.js | 9 - .../5.2.0/plugins/visualblocks/plugin.min.js | 9 - .../5.2.0/plugins/visualchars/plugin.min.js | 9 - .../5.2.0/plugins/wordcount/plugin.min.js | 9 - .../skins/content/document/content.min.css | 7 - .../ui/oxide-dark/content.inline.min.css | 7 - .../5.2.0/skins/ui/oxide-dark/content.min.css | 7 - .../5.2.0/skins/ui/oxide-dark/skin.min.css | 7 - .../skins/ui/oxide/content.inline.min.css | 7 - .../5.2.0/skins/ui/oxide/content.min.css | 7 - .../5.2.0/skins/ui/oxide/skin.min.css | 7 - .../tiny_mce/5.2.0/themes/mobile/theme.min.js | 9 - .../tiny_mce/5.2.0/themes/silver/theme.min.js | 9 - hesk/inc/tiny_mce/5.2.0/tinymce.min.js | 9 - .../tiny_mce/5.4.2/icons/default/icons.min.js | 1 + .../{5.2.0 => 5.4.2}/jquery.tinymce.min.js | 31 +-- .../tiny_mce/{5.2.0 => 5.4.2}/langs/readme.md | 0 .../inc/tiny_mce/{5.2.0 => 5.4.2}/license.txt | 0 .../5.4.2/plugins/advlist/plugin.min.js | 9 + .../5.4.2/plugins/anchor/plugin.min.js | 9 + .../5.4.2/plugins/autolink/plugin.min.js | 9 + .../5.4.2/plugins/autoresize/plugin.min.js | 9 + .../5.4.2/plugins/autosave/plugin.min.js | 9 + .../5.4.2/plugins/bbcode/plugin.min.js | 9 + .../5.4.2/plugins/charmap/plugin.min.js | 9 + .../tiny_mce/5.4.2/plugins/code/plugin.min.js | 9 + .../5.4.2/plugins/codesample/plugin.min.js | 9 + .../plugins/colorpicker/plugin.min.js | 2 +- .../plugins/contextmenu/plugin.min.js | 2 +- .../plugins/directionality/plugin.min.js | 9 + .../plugins/emoticons/js/emojis.js | 0 .../plugins/emoticons/js/emojis.min.js | 0 .../5.4.2/plugins/emoticons/plugin.min.js | 9 + .../5.4.2/plugins/fullpage/plugin.min.js | 9 + .../5.4.2/plugins/fullscreen/plugin.min.js | 9 + .../tiny_mce/5.4.2/plugins/help/plugin.min.js | 9 + .../tiny_mce/5.4.2/plugins/hr/plugin.min.js | 9 + .../5.4.2/plugins/image/plugin.min.js | 9 + .../5.4.2/plugins/imagetools/plugin.min.js | 9 + .../5.4.2/plugins/importcss/plugin.min.js | 9 + .../plugins/insertdatetime/plugin.min.js | 9 + .../5.4.2/plugins/legacyoutput/plugin.min.js | 9 + .../tiny_mce/5.4.2/plugins/link/plugin.min.js | 9 + .../5.4.2/plugins/lists/plugin.min.js | 9 + .../5.4.2/plugins/media/plugin.min.js | 9 + .../5.4.2/plugins/nonbreaking/plugin.min.js | 9 + .../5.4.2/plugins/noneditable/plugin.min.js | 9 + .../5.4.2/plugins/pagebreak/plugin.min.js | 9 + .../5.4.2/plugins/paste/plugin.min.js | 9 + .../5.4.2/plugins/preview/plugin.min.js | 9 + .../5.4.2/plugins/print/plugin.min.js | 9 + .../5.4.2/plugins/quickbars/plugin.min.js | 9 + .../tiny_mce/5.4.2/plugins/save/plugin.min.js | 9 + .../5.4.2/plugins/searchreplace/plugin.min.js | 9 + .../5.4.2/plugins/spellchecker/plugin.min.js | 9 + .../5.4.2/plugins/tabfocus/plugin.min.js | 9 + .../5.4.2/plugins/table/plugin.min.js | 9 + .../5.4.2/plugins/template/plugin.min.js | 9 + .../plugins/textcolor/plugin.min.js | 2 +- .../5.4.2/plugins/textpattern/plugin.min.js | 9 + .../tiny_mce/5.4.2/plugins/toc/plugin.min.js | 9 + .../5.4.2/plugins/visualblocks/plugin.min.js | 9 + .../5.4.2/plugins/visualchars/plugin.min.js | 9 + .../5.4.2/plugins/wordcount/plugin.min.js | 9 + .../skins/content/dark/content.min.css | 0 .../skins/content/default/content.min.css | 0 .../skins/content/document/content.min.css | 7 + .../skins/content/writer/content.min.css | 0 .../ui/oxide-dark/content.inline.min.css | 7 + .../5.4.2/skins/ui/oxide-dark/content.min.css | 7 + .../ui/oxide-dark/content.mobile.min.css | 0 .../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin .../5.4.2/skins/ui/oxide-dark/skin.min.css | 7 + .../skins/ui/oxide-dark/skin.mobile.min.css | 0 .../skins/ui/oxide/content.inline.min.css | 7 + .../5.4.2/skins/ui/oxide/content.min.css | 7 + .../skins/ui/oxide/content.mobile.min.css | 0 .../skins/ui/oxide/fonts/tinymce-mobile.woff | Bin .../5.4.2/skins/ui/oxide/skin.min.css | 7 + .../skins/ui/oxide/skin.mobile.min.css | 0 .../tiny_mce/5.4.2/themes/mobile/theme.min.js | 9 + .../tiny_mce/5.4.2/themes/silver/theme.min.js | 9 + hesk/inc/tiny_mce/5.4.2/tinymce.min.js | 9 + hesk/install/install_functions.inc.php | 2 +- hesk/install/update.php | 1 + hesk/js/app.js | 8 +- hesk/js/app.min.js | 2 +- hesk/js/jquery-3.4.1.min.js | 4 - hesk/js/jquery-3.5.1.min.js | 2 + hesk/language/en/text.php | 2 +- .../create-ticket/category-select.php | 2 +- .../create-ticket-confirmation.php | 2 +- .../customer/create-ticket/create-ticket.php | 6 +- hesk/theme/hesk3/customer/index.php | 2 +- .../hesk3/customer/js/jquery-3.4.1.min.js | 4 - .../hesk3/customer/js/jquery-3.5.1.min.js | 2 + .../customer/knowledgebase/search-results.php | 2 +- .../customer/knowledgebase/view-article.php | 2 +- .../customer/knowledgebase/view-category.php | 2 +- .../theme/hesk3/customer/view-ticket/form.php | 2 +- .../customer/view-ticket/view-ticket.php | 4 +- 171 files changed, 978 insertions(+), 685 deletions(-) create mode 100644 hesk/inc/htmlpurifier/standalone/HTMLPurifier/ConfigSchema/schema/HTML.Forms.txt delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/advlist/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/anchor/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/autolink/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/autoresize/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/autosave/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/bbcode/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/charmap/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/code/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/codesample/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/directionality/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/emoticons/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/fullpage/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/fullscreen/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/help/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/hr/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/image/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/imagetools/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/importcss/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/insertdatetime/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/legacyoutput/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/link/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/lists/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/media/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/nonbreaking/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/noneditable/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/pagebreak/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/paste/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/preview/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/print/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/quickbars/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/save/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/searchreplace/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/spellchecker/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/tabfocus/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/table/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/template/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/textpattern/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/toc/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/visualblocks/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/visualchars/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/plugins/wordcount/plugin.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/skins/content/document/content.min.css delete mode 100644 hesk/inc/tiny_mce/5.2.0/skins/ui/oxide-dark/content.inline.min.css delete mode 100644 hesk/inc/tiny_mce/5.2.0/skins/ui/oxide-dark/content.min.css delete mode 100644 hesk/inc/tiny_mce/5.2.0/skins/ui/oxide-dark/skin.min.css delete mode 100644 hesk/inc/tiny_mce/5.2.0/skins/ui/oxide/content.inline.min.css delete mode 100644 hesk/inc/tiny_mce/5.2.0/skins/ui/oxide/content.min.css delete mode 100644 hesk/inc/tiny_mce/5.2.0/skins/ui/oxide/skin.min.css delete mode 100644 hesk/inc/tiny_mce/5.2.0/themes/mobile/theme.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/themes/silver/theme.min.js delete mode 100644 hesk/inc/tiny_mce/5.2.0/tinymce.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/icons/default/icons.min.js rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/jquery.tinymce.min.js (83%) rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/langs/readme.md (100%) rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/license.txt (100%) create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/advlist/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/anchor/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/autolink/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/autoresize/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/autosave/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/bbcode/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/charmap/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/code/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/codesample/plugin.min.js rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/plugins/colorpicker/plugin.min.js (94%) rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/plugins/contextmenu/plugin.min.js (94%) create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/directionality/plugin.min.js rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/plugins/emoticons/js/emojis.js (100%) rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/plugins/emoticons/js/emojis.min.js (100%) create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/emoticons/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/fullpage/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/fullscreen/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/help/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/hr/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/image/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/imagetools/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/importcss/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/insertdatetime/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/legacyoutput/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/link/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/lists/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/media/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/nonbreaking/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/noneditable/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/pagebreak/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/paste/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/preview/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/print/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/quickbars/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/save/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/searchreplace/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/spellchecker/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/tabfocus/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/table/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/template/plugin.min.js rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/plugins/textcolor/plugin.min.js (94%) create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/textpattern/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/toc/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/visualblocks/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/visualchars/plugin.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/plugins/wordcount/plugin.min.js rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/skins/content/dark/content.min.css (100%) rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/skins/content/default/content.min.css (100%) create mode 100644 hesk/inc/tiny_mce/5.4.2/skins/content/document/content.min.css rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/skins/content/writer/content.min.css (100%) create mode 100644 hesk/inc/tiny_mce/5.4.2/skins/ui/oxide-dark/content.inline.min.css create mode 100644 hesk/inc/tiny_mce/5.4.2/skins/ui/oxide-dark/content.min.css rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/skins/ui/oxide-dark/content.mobile.min.css (100%) rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/skins/ui/oxide-dark/fonts/tinymce-mobile.woff (100%) create mode 100644 hesk/inc/tiny_mce/5.4.2/skins/ui/oxide-dark/skin.min.css rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/skins/ui/oxide-dark/skin.mobile.min.css (100%) create mode 100644 hesk/inc/tiny_mce/5.4.2/skins/ui/oxide/content.inline.min.css create mode 100644 hesk/inc/tiny_mce/5.4.2/skins/ui/oxide/content.min.css rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/skins/ui/oxide/content.mobile.min.css (100%) rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/skins/ui/oxide/fonts/tinymce-mobile.woff (100%) create mode 100644 hesk/inc/tiny_mce/5.4.2/skins/ui/oxide/skin.min.css rename hesk/inc/tiny_mce/{5.2.0 => 5.4.2}/skins/ui/oxide/skin.mobile.min.css (100%) create mode 100644 hesk/inc/tiny_mce/5.4.2/themes/mobile/theme.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/themes/silver/theme.min.js create mode 100644 hesk/inc/tiny_mce/5.4.2/tinymce.min.js delete mode 100644 hesk/js/jquery-3.4.1.min.js create mode 100644 hesk/js/jquery-3.5.1.min.js delete mode 100644 hesk/theme/hesk3/customer/js/jquery-3.4.1.min.js create mode 100644 hesk/theme/hesk3/customer/js/jquery-3.5.1.min.js diff --git a/hesk/admin/admin_reply_ticket.php b/hesk/admin/admin_reply_ticket.php index 970d58b..3f454ed 100644 --- a/hesk/admin/admin_reply_ticket.php +++ b/hesk/admin/admin_reply_ticket.php @@ -71,6 +71,9 @@ $message = hesk_input(hesk_POST('message')); // Submit as customer? $submit_as_customer = isset($_POST['submit_as_customer']) ? true : false; +// Load statuses +require_once(HESK_PATH . 'inc/statuses.inc.php'); + if (strlen($message)) { // Save message for later and ignore the rest? @@ -227,45 +230,6 @@ if ($ticket['locked']) { $new_status = 3; } -// -> Submit as: Resolved -elseif ( isset($_POST['submit_as_resolved']) && hesk_checkPermission('can_resolve', 0) ) -{ - $new_status = 3; - - if ($ticket['status'] != $new_status) - { - $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) - { - $sql_status .= " , `locked`='1' "; - } - } -} -// -> Submit as: In Progress -elseif ( isset($_POST['submit_as_in_progress']) ) -{ - $new_status = 4; - - if ($ticket['status'] != $new_status) - { - $revision = sprintf($hesklang['thist9'],hesk_date(),$hesklang['in_progress'],$_SESSION['name'].' ('.$_SESSION['user'].')'); - $sql_status = " , `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') "; - } -} -// -> Submit as: On Hold -elseif ( isset($_POST['submit_as_on_hold']) ) -{ - $new_status = 5; - - if ($ticket['status'] != $new_status) - { - $revision = sprintf($hesklang['thist9'],hesk_date(),$hesklang['on_hold'],$_SESSION['name'].' ('.$_SESSION['user'].')'); - $sql_status = " , `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') "; - } -} // -> Submit as Customer reply elseif ($submit_as_customer) { @@ -277,10 +241,53 @@ elseif ($submit_as_customer) $sql_status = " , `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') "; } } -// -> Default: submit as "Replied by staff" +// -> Submitted with a status change? else { - $new_status = 2; + $submit_as_status = false; + + foreach ($hesk_settings['statuses'] as $id => $data) + { + if ( ! isset($_POST['submit_as-' . $id])) + { + continue; + } + + // "Resolved" status needs special care + if ($id == 3) + { + // Permission to resolve? + if ( ! hesk_checkPermission('can_resolve', 0)) + { + break; + } + + // Lock the ticket if customers are not allowed to reopen tickets + if ($hesk_settings['custopen'] != 1) + { + $sql_status .= " , `locked`='1' "; + } + } + + // Set the new status and log revision if modified + $new_status = $id; + + if ($ticket['status'] != $new_status && $new_status != 2) + { + $revision = sprintf($hesklang['thist9'],hesk_date(),$data['name'],$_SESSION['name'].' ('.$_SESSION['user'].')'); + $sql_status .= " , `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') "; + } + + $submit_as_status = true; + + break; + } + + // Default: submit as "Replied by staff" + if ( ! $submit_as_status) + { + $new_status = 2; + } } $sql = "UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` SET `status`='{$new_status}',"; diff --git a/hesk/admin/admin_ticket.php b/hesk/admin/admin_ticket.php index 833ed02..2f37d35 100644 --- a/hesk/admin/admin_ticket.php +++ b/hesk/admin/admin_ticket.php @@ -611,23 +611,11 @@ $options = array( ?>
> - -
+ + +
+

@@ -657,6 +645,181 @@ $options = array(

+ +
+ + +
> + +
+
+
+ + + » + +
+ + + +
+
+

+
+
+ ' : ''; + + $att = explode(',', substr($note['attachments'], 0, -1) ); + $num = count($att); + foreach ($att as $myatt) + { + list($att_id, $att_name) = explode('#', $myatt); + + // Can edit and delete note (attachments)? + if ($can_del_notes || $note['who'] == $_SESSION['id']) + { + // If this is the last attachment and no message, show "delete ticket" link + if ($num == 1 && strlen($note['message']) == 0) + { + echo ' + + + + »'; + } + // Show "delete attachment" link + else + { + echo ' + + + + »'; + } + } + + echo ' + + + + + + '.$att_name.'
+ '; + } + } + ?> +
+
+ +
+
+
+ + '; + for ($i=1;$i<=$hesk_settings['attachments']['max_number'];$i++) + { + echo '
'; + } + echo '
'; + } + ?> + + + +
+
+
+ +
+ + + + +
+ +

+ +
+ + + +
+
+ +
+
+
+ +
+ + + +
+
+ +
+
+
+ + +

+
: @@ -931,8 +1094,15 @@ $options = array( +
+
- +  
-
+ @@ -2021,15 +2185,28 @@ function hesk_printReplyForm() { if ( ! $ticket['locked']) { ?> -
@@ -271,7 +271,7 @@ END LICENSE CODE - +