From 7537f23bc3462bd633098070fd197bd444919ce0 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Tue, 24 Nov 2015 16:51:24 -0500 Subject: [PATCH 01/27] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 37f3f099..f26759aa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,7 +21,7 @@ If you have already completed any of these steps in the past (such as creating a - Check for unnecessary whitespace using the `git diff --check` command. If there is trailing whitespace, your pull request will be denied. ## Submitting Changes - - Sign the [Contributor License Agreement](https://www.clahub.com/agreements/mkoch227/Mods-for-HESK) + - Sign the [Contributor License Agreement](https://gist.github.com/mkoch227/edf8243d8c75d104247a) - Push your changes to a topic branch in your fork of the repository - Submit a pull request to the official Mods for HESK repository (mkoch227/Mods-for-HESK) - The owner of Mods for HESK will then inspect and test the code in the pull request. Feedback will be given via GitHub comments. From 7c13c5d7b9ed5a2e42c1f27afff65295f10257d5 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Tue, 24 Nov 2015 16:53:07 -0500 Subject: [PATCH 02/27] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f26759aa..e174429b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,8 +21,8 @@ If you have already completed any of these steps in the past (such as creating a - Check for unnecessary whitespace using the `git diff --check` command. If there is trailing whitespace, your pull request will be denied. ## Submitting Changes - - Sign the [Contributor License Agreement](https://gist.github.com/mkoch227/edf8243d8c75d104247a) - Push your changes to a topic branch in your fork of the repository - Submit a pull request to the official Mods for HESK repository (mkoch227/Mods-for-HESK) + - If necessary, sign the Contributor License Agreement by checking the "status checks" area of your pull request. - The owner of Mods for HESK will then inspect and test the code in the pull request. Feedback will be given via GitHub comments. - The owner of Mods for HESK expects responses within two weeks of the original comment. If there is no feedback within that time range, the pull request will be considered abandoned and subsequently will be closed. From 0e74dfb16d281163255e2b1c7b695e52f74142f8 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Wed, 16 Dec 2015 17:21:43 -0500 Subject: [PATCH 03/27] Fixes #450 Keep
s in their proper groups --- index.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/index.php b/index.php index 4824a121..9a5f4c69 100644 --- a/index.php +++ b/index.php @@ -1065,7 +1065,8 @@ function print_add_ticket() ?>
+ data-sitekey=""> +
 
' . $hesklang['sec_img'] . ' ' . '' . $hesklang['reload'] . '' . - '
 
'; + '
 
'; } - echo ''; + echo ''; } ?> From 8d581daf80faedc06873dc389bd17452e01e55ae Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Wed, 23 Dec 2015 08:08:38 -0500 Subject: [PATCH 04/27] Signatures can be up to 1000 characters --- admin/profile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/profile.php b/admin/profile.php index 93637154..10e60425 100644 --- a/admin/profile.php +++ b/admin/profile.php @@ -178,7 +178,7 @@ function update_profile() $_SESSION['new']['signature'] = hesk_input(hesk_POST('signature')); /* Signature */ - if (strlen($_SESSION['new']['signature']) > 255) { + if (strlen($_SESSION['new']['signature']) > 1000) { $hesk_error_buffer .= '
  • ' . $hesklang['signature_long'] . '
  • '; } From 43520978829c4ea0581b50f7861b5cdbe59e63f5 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Wed, 23 Dec 2015 08:10:22 -0500 Subject: [PATCH 05/27] Signatures can be up to 1000 characters long --- admin/manage_users.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/manage_users.php b/admin/manage_users.php index 4e39212b..85635d66 100644 --- a/admin/manage_users.php +++ b/admin/manage_users.php @@ -725,7 +725,7 @@ function hesk_validateUserInfo($pass_required = 1, $redirect_to = './manage_user } } - if (strlen($myuser['signature']) > 255) { + if (strlen($myuser['signature']) > 1000) { $hesk_error_buffer .= '
  • ' . $hesklang['signature_long'] . '
  • '; } From f739780f9e0f3c053f5b9a0323c9362ec34aae00 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Sat, 9 Jan 2016 20:55:17 -0500 Subject: [PATCH 06/27] Fixes #457 Move around some database stuff to fix the knowledgebase error --- knowledgebase.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/knowledgebase.php b/knowledgebase.php index daedd989..a2741297 100644 --- a/knowledgebase.php +++ b/knowledgebase.php @@ -36,12 +36,16 @@ require(HESK_PATH . 'hesk_settings.inc.php'); require(HESK_PATH . 'inc/common.inc.php'); require(HESK_PATH . 'inc/knowledgebase_functions.inc.php'); -// Are we in maintenance mode? -hesk_check_maintenance(); // Load Knowledgebase-related functions hesk_load_database_functions(); +/* Connect to database */ +hesk_dbConnect(); + +// Are we in maintenance mode? +hesk_check_maintenance(); + define('PAGE_TITLE', 'CUSTOMER_KB'); /* Is Knowledgebase enabled? */ @@ -49,9 +53,6 @@ if (!$hesk_settings['kb_enable']) { hesk_error($hesklang['kbdis']); } -/* Connect to database */ -hesk_dbConnect(); - /* Rating? */ if (isset($_GET['rating'])) { // Detect and block robots From 8e9e46ec47ae4c78e4910a786672e67b3deae1fa Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Sat, 9 Jan 2016 21:01:20 -0500 Subject: [PATCH 07/27] Fix view ticket db issue --- ticket.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ticket.php b/ticket.php index 583c42dd..2960f223 100644 --- a/ticket.php +++ b/ticket.php @@ -40,14 +40,16 @@ require(HESK_PATH . 'hesk_settings.inc.php'); require(HESK_PATH . 'inc/common.inc.php'); require(HESK_PATH . 'inc/view_attachment_functions.inc.php'); -// Are we in maintenance mode? -hesk_check_maintenance(); hesk_load_database_functions(); -hesk_session_start(); /* Connect to database */ hesk_dbConnect(); + +// Are we in maintenance mode? +hesk_check_maintenance(); + +hesk_session_start(); $modsForHesk_settings = mfh_getSettings(); $hesk_error_buffer = array(); From ae0db735a02d7249486532b22709d9610cba6e0c Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Sat, 9 Jan 2016 21:23:50 -0500 Subject: [PATCH 08/27] Fixes #456 Use the correct checkbox name --- admin/admin_settings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/admin_settings.php b/admin/admin_settings.php index 7d3f1d22..4f719b20 100644 --- a/admin/admin_settings.php +++ b/admin/admin_settings.php @@ -2693,7 +2693,7 @@ if (defined('HESK_DEMO')) {
    - From 4d4c29e0aeb77ee2dac650486de50415f1a2ec30 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Sat, 9 Jan 2016 21:38:25 -0500 Subject: [PATCH 09/27] Update installer --- inc/header.inc.php | 2 +- inc/headerAdmin.inc.php | 2 +- install/install_functions.inc.php | 2 +- .../ajax/install-database-ajax.php | 2 + install/mods-for-hesk/installModsForHesk.php | 3 ++ install/mods-for-hesk/js/version-scripts.js | 3 ++ install/mods-for-hesk/modsForHesk.php | 54 +++++++++++-------- install/mods-for-hesk/sql/installSql.php | 9 ++++ 8 files changed, 53 insertions(+), 24 deletions(-) diff --git a/inc/header.inc.php b/inc/header.inc.php index 4d6b7933..52eac5ac 100644 --- a/inc/header.inc.php +++ b/inc/header.inc.php @@ -29,7 +29,7 @@ *******************************************************************************/ // Define the current build -define('MODS_FOR_HESK_BUILD', 23); +define('MODS_FOR_HESK_BUILD', 24); /* Check if this is a valid include */ if (!defined('IN_SCRIPT')) { diff --git a/inc/headerAdmin.inc.php b/inc/headerAdmin.inc.php index f1504330..e1fe927b 100644 --- a/inc/headerAdmin.inc.php +++ b/inc/headerAdmin.inc.php @@ -29,7 +29,7 @@ *******************************************************************************/ // Define the current build -define('MODS_FOR_HESK_BUILD', 23); +define('MODS_FOR_HESK_BUILD', 24); /* Check if this is a valid include */ if (!defined('IN_SCRIPT')) { diff --git a/install/install_functions.inc.php b/install/install_functions.inc.php index 3edade87..9512e75a 100644 --- a/install/install_functions.inc.php +++ b/install/install_functions.inc.php @@ -37,7 +37,7 @@ if (!defined('IN_SCRIPT')) {die('Invalid attempt');} // We will be installing this HESK version: define('HESK_NEW_VERSION','2.6.5'); -define('MODS_FOR_HESK_NEW_VERSION','2.5.2'); +define('MODS_FOR_HESK_NEW_VERSION','2.5.3'); define('REQUIRE_PHP_VERSION','5.0.0'); define('REQUIRE_MYSQL_VERSION','5.0.7'); diff --git a/install/mods-for-hesk/ajax/install-database-ajax.php b/install/mods-for-hesk/ajax/install-database-ajax.php index b520f934..0ccc408c 100644 --- a/install/mods-for-hesk/ajax/install-database-ajax.php +++ b/install/mods-for-hesk/ajax/install-database-ajax.php @@ -52,6 +52,8 @@ if ($version == 2) { execute251Scripts(); } elseif ($version == 23) { execute252Scripts(); +} elseif ($version == 24) { + execute253Scripts(); } else { $response = 'The version "' . $version . '" was not recognized. Check the value submitted and try again.'; print $response; diff --git a/install/mods-for-hesk/installModsForHesk.php b/install/mods-for-hesk/installModsForHesk.php index 6e293bca..3e9075fb 100644 --- a/install/mods-for-hesk/installModsForHesk.php +++ b/install/mods-for-hesk/installModsForHesk.php @@ -77,6 +77,9 @@ function echoInitialVersionRows($version) if ($version < 23) { printRow('2.5.2'); } + if ($version < 24) { + printRow('2.5.3'); + } } function printRow($version) diff --git a/install/mods-for-hesk/js/version-scripts.js b/install/mods-for-hesk/js/version-scripts.js index 424ef110..6f5c4b2a 100644 --- a/install/mods-for-hesk/js/version-scripts.js +++ b/install/mods-for-hesk/js/version-scripts.js @@ -65,6 +65,9 @@ function processUpdates(startingVersion) { } else if (startingVersion < 23) { startVersionUpgrade('252'); executeUpdate(23, '252', '2.5.2'); + } else if (startingVersion < 24) { + startVersionUpgrade('253'); + executeUpdate(24, '253', '2.5.3'); } else { installationFinished(); } diff --git a/install/mods-for-hesk/modsForHesk.php b/install/mods-for-hesk/modsForHesk.php index 712de220..a95229f9 100644 --- a/install/mods-for-hesk/modsForHesk.php +++ b/install/mods-for-hesk/modsForHesk.php @@ -122,7 +122,7 @@ hesk_dbConnect(); if ($version != MODS_FOR_HESK_NEW_VERSION) { echo '
    '; echo '
    '; - echo '

    Mods for HESK has detected that you currently have ' . $version . ' installed. + echo '

    Mods for HESK has detected that you currently have version ' . $version . ' installed. The button you should click to upgrade has been highlighted for you. However, if Mods for HESK selected the wrong version, click here to reset them.

    '; echo '
    '; @@ -130,6 +130,18 @@ hesk_dbConnect(); } ?>
    +
    + + 2.5.2 +
    btn-block disablable" href="installModsForHesk.php?v=20">2.4.2
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=19">2.4.1
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=16">2.3.1
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=15">2.3.0
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=12">2.1.1
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=11">2.1.0
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=8">1.7.0
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=7">1.6.1
    -
    -
    - -
    1.4.1
    -
    - 1.4.0 -

    +
    + 1.4.0 +
    1.3.0 diff --git a/install/mods-for-hesk/sql/installSql.php b/install/mods-for-hesk/sql/installSql.php index 57162b37..000a4248 100644 --- a/install/mods-for-hesk/sql/installSql.php +++ b/install/mods-for-hesk/sql/installSql.php @@ -693,4 +693,13 @@ function execute252Scripts() hesk_dbConnect(); executeQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` SET `Value` = '2.5.2' WHERE `Key` = 'modsForHeskVersion'"); +} + +// Version 2.5.3 +function execute253Scripts() +{ + global $hesk_settings; + hesk_dbConnect(); + + executeQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` SET `Value` = '2.5.3' WHERE `Key` = 'modsForHeskVersion'"); } \ No newline at end of file From d917ef1d924ce377e6823dbe2bff36c280fbbd91 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Wed, 13 Jan 2016 18:06:24 -0500 Subject: [PATCH 10/27] Update status badge Switch from stillmaintained.com to a generic shields.io badge until stillmaintained.com returns. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b2e2897..c1de3950 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## [Mods for HESK](http://mods-for-hesk.mkochcs.com) [![Number of Downloads](https://img.shields.io/github/downloads/mkoch227/Mods-for-HESK/latest/total.svg)](https://www.github.com/mkoch227/Mods-for-HESK/releases) [![Open Issues](https://img.shields.io/github/issues-raw/mkoch227/Mods-for-HESK.svg)](https://www.github.com/mkoch227/Mods-for-HESK/issues) [![Current Release](https://img.shields.io/github/release/mkoch227/Mods-for-HESK.svg)](https://www.github.com/mkoch227/Mods-for-HESK/releases) [![Project Status](http://stillmaintained.com/mkoch227/Mods-for-HESK.png)](https://www.github.com/mkoch227/Mods-for-HESK) +## [Mods for HESK](http://mods-for-hesk.mkochcs.com) [![Number of Downloads](https://img.shields.io/github/downloads/mkoch227/Mods-for-HESK/latest/total.svg)](https://www.github.com/mkoch227/Mods-for-HESK/releases) [![Open Issues](https://img.shields.io/github/issues-raw/mkoch227/Mods-for-HESK.svg)](https://www.github.com/mkoch227/Mods-for-HESK/issues) [![Current Release](https://img.shields.io/github/release/mkoch227/Mods-for-HESK.svg)](https://www.github.com/mkoch227/Mods-for-HESK/releases) [![Project Status](https://img.shields.io/badge/status-maintained-brightgreen.svg)](https://www.github.com/mkoch227/Mods-for-HESK) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/mkoch227/Mods-for-HESK/blob/master/LICENSE) [![Join the chat at https://gitter.im/mkoch227/Mods-for-HESK](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mkoch227/Mods-for-HESK?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) From a4de4886d9fb5dea64ce633fd996953bc356fa25 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Tue, 2 Feb 2016 13:01:51 -0500 Subject: [PATCH 11/27] #471 Update knowledgebase for 2.6.6 --- admin/manage_knowledgebase.php | 85 +++++++++++++++++++++++----------- 1 file changed, 57 insertions(+), 28 deletions(-) diff --git a/admin/manage_knowledgebase.php b/admin/manage_knowledgebase.php index 44162e0b..250e4ba2 100644 --- a/admin/manage_knowledgebase.php +++ b/admin/manage_knowledgebase.php @@ -1,7 +1,7 @@


    +
    -
    -
    - +
    '; + } + ?>
    +
    @@ -1127,18 +1138,23 @@ function save_article() /* Article attachments */ define('KB',1); require_once(HESK_PATH . 'inc/posting_functions.inc.php'); - require_once(HESK_PATH . 'inc/attachments.inc.php'); $attachments = array(); - for ($i=1;$i<=3;$i++) - { - $att = hesk_uploadFile($i, false); - if ( ! empty($att)) - { - $attachments[$i] = $att; - } - } $myattachments=''; + if ($hesk_settings['attachments']['use']) + { + require_once(HESK_PATH . 'inc/attachments.inc.php'); + + for ($i=1; $i<=$hesk_settings['attachments']['max_number']; $i++) + { + $att = hesk_uploadFile($i); + if ( ! empty($att)) + { + $attachments[$i] = $att; + } + } + } + /* Any errors? */ if (count($hesk_error_buffer)) { @@ -1447,10 +1463,11 @@ function edit_article()


    +
    '; } + + // New attachments + if ($hesk_settings['attachments']['use']) + { + for ($i=1;$i<=$hesk_settings['attachments']['max_number'];$i++) + { + echo '
    '; + } + } ?> - -
    -
    - - +
    + +
    @@ -1952,18 +1976,23 @@ function new_article() /* Article attachments */ define('KB',1); require_once(HESK_PATH . 'inc/posting_functions.inc.php'); - require_once(HESK_PATH . 'inc/attachments.inc.php'); $attachments = array(); - for ($i=1;$i<=3;$i++) - { - $att = hesk_uploadFile($i, false); - if ( ! empty($att)) - { - $attachments[$i] = $att; - } - } $myattachments=''; + if ($hesk_settings['attachments']['use']) + { + require_once(HESK_PATH . 'inc/attachments.inc.php'); + + for ($i=1; $i<=$hesk_settings['attachments']['max_number']; $i++) + { + $att = hesk_uploadFile($i); + if ( ! empty($att)) + { + $attachments[$i] = $att; + } + } + } + /* Any errors? */ if (count($hesk_error_buffer)) { From c54aeb6fa0414b648c85bcd9160364e316e85cac Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Tue, 2 Feb 2016 13:03:02 -0500 Subject: [PATCH 12/27] #471 Update download_attachment for 2.6.6 --- download_attachment.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/download_attachment.php b/download_attachment.php index 59ec5758..ec265e4d 100755 --- a/download_attachment.php +++ b/download_attachment.php @@ -1,7 +1,7 @@ Date: Tue, 2 Feb 2016 13:06:48 -0500 Subject: [PATCH 13/27] #471 Update common to 2.6.6 --- inc/common.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/common.inc.php b/inc/common.inc.php index 90dbf58e..54d53595 100644 --- a/inc/common.inc.php +++ b/inc/common.inc.php @@ -1,7 +1,7 @@ Date: Tue, 2 Feb 2016 13:09:41 -0500 Subject: [PATCH 14/27] #471 Update headers to 2.6.6 for all other files --- admin/admin_main.php | 2 +- admin/admin_reply_ticket.php | 2 +- admin/admin_settings.php | 2 +- admin/admin_settings_save.php | 2 +- admin/admin_submit_ticket.php | 2 +- admin/admin_ticket.php | 2 +- admin/banned_emails.php | 2 +- admin/banned_ips.php | 2 +- admin/change_status.php | 2 +- admin/delete_tickets.php | 2 +- admin/edit_note.php | 2 +- admin/edit_post.php | 2 +- admin/export.php | 2 +- admin/find_tickets.php | 2 +- admin/index.php | 2 +- admin/lock.php | 2 +- admin/mail.php | 2 +- admin/manage_canned.php | 2 +- admin/manage_categories.php | 2 +- admin/manage_permission_templates.php | 2 +- admin/manage_ticket_templates.php | 2 +- admin/manage_users.php | 2 +- admin/new_ticket.php | 2 +- admin/options.php | 2 +- admin/password.php | 2 +- admin/profile.php | 2 +- admin/reports.php | 2 +- admin/service_messages.php | 2 +- admin/show_tickets.php | 2 +- change_status.php | 2 +- hesk_javascript.js | 2 +- inc/admin_functions.inc.php | 2 +- inc/attachments.inc.php | 2 +- inc/email_functions.inc.php | 2 +- inc/header.inc.php | 2 +- inc/headerAdmin.inc.php | 2 +- inc/knowledgebase_functions.inc.php | 2 +- inc/pipe_functions.inc.php | 2 +- inc/posting_functions.inc.php | 2 +- inc/print_tickets.inc.php | 2 +- inc/profile_functions.inc.php | 2 +- inc/show_admin_nav.inc.php | 2 +- inc/show_search_form.inc.php | 2 +- inc/status_functions.inc.php | 2 +- inc/ticket_list.inc.php | 2 +- index.php | 2 +- knowledgebase.php | 2 +- print.php | 2 +- reply_ticket.php | 2 +- submit_ticket.php | 2 +- suggest_articles.php | 2 +- suggest_email.php | 2 +- ticket.php | 2 +- 53 files changed, 53 insertions(+), 53 deletions(-) diff --git a/admin/admin_main.php b/admin/admin_main.php index ea556516..51711d66 100644 --- a/admin/admin_main.php +++ b/admin/admin_main.php @@ -1,7 +1,7 @@ Date: Tue, 2 Feb 2016 13:22:08 -0500 Subject: [PATCH 15/27] #471 Update installer --- inc/header.inc.php | 2 +- inc/headerAdmin.inc.php | 2 +- install/install_functions.inc.php | 4 +- .../ajax/install-database-ajax.php | 2 + install/mods-for-hesk/installModsForHesk.php | 103 ++++++------------ install/mods-for-hesk/js/version-scripts.js | 3 + install/mods-for-hesk/modsForHesk.php | 54 +++++---- install/mods-for-hesk/sql/installSql.php | 9 ++ 8 files changed, 84 insertions(+), 95 deletions(-) diff --git a/inc/header.inc.php b/inc/header.inc.php index e6e80149..d530a0cf 100644 --- a/inc/header.inc.php +++ b/inc/header.inc.php @@ -29,7 +29,7 @@ *******************************************************************************/ // Define the current build -define('MODS_FOR_HESK_BUILD', 24); +define('MODS_FOR_HESK_BUILD', 25); /* Check if this is a valid include */ if (!defined('IN_SCRIPT')) { diff --git a/inc/headerAdmin.inc.php b/inc/headerAdmin.inc.php index 4256ab55..11f74bf0 100644 --- a/inc/headerAdmin.inc.php +++ b/inc/headerAdmin.inc.php @@ -29,7 +29,7 @@ *******************************************************************************/ // Define the current build -define('MODS_FOR_HESK_BUILD', 24); +define('MODS_FOR_HESK_BUILD', 25); /* Check if this is a valid include */ if (!defined('IN_SCRIPT')) { diff --git a/install/install_functions.inc.php b/install/install_functions.inc.php index 9512e75a..02c357f3 100644 --- a/install/install_functions.inc.php +++ b/install/install_functions.inc.php @@ -36,8 +36,8 @@ if (!defined('IN_SCRIPT')) {die('Invalid attempt');} // We will be installing this HESK version: -define('HESK_NEW_VERSION','2.6.5'); -define('MODS_FOR_HESK_NEW_VERSION','2.5.3'); +define('HESK_NEW_VERSION','2.6.6'); +define('MODS_FOR_HESK_NEW_VERSION','2.5.4'); define('REQUIRE_PHP_VERSION','5.0.0'); define('REQUIRE_MYSQL_VERSION','5.0.7'); diff --git a/install/mods-for-hesk/ajax/install-database-ajax.php b/install/mods-for-hesk/ajax/install-database-ajax.php index 0ccc408c..85d1a9cb 100644 --- a/install/mods-for-hesk/ajax/install-database-ajax.php +++ b/install/mods-for-hesk/ajax/install-database-ajax.php @@ -54,6 +54,8 @@ if ($version == 2) { execute252Scripts(); } elseif ($version == 24) { execute253Scripts(); +} elseif ($version == 25) { + execute254Scripts(); } else { $response = 'The version "' . $version . '" was not recognized. Check the value submitted and try again.'; print $response; diff --git a/install/mods-for-hesk/installModsForHesk.php b/install/mods-for-hesk/installModsForHesk.php index 3e9075fb..1b9d7390 100644 --- a/install/mods-for-hesk/installModsForHesk.php +++ b/install/mods-for-hesk/installModsForHesk.php @@ -9,76 +9,39 @@ if (!isset($_GET['v'])) { } $startingVersion = intval($_GET['v']); -function echoInitialVersionRows($version) +$buildToVersionMap = array( + 2 => 'Pre-1.4.0', + 3 => '1.4.0', + 4 => '1.4.1', + 5 => '1.5.0', + 6 => '1.6.0', + 7 => '1.6.1', + 8 => '1.7.0', + 9 => '2.0.0', + 10 => '2.0.1', + 11 => '2.1.0', + 12 => '2.1.1', + 13 => '2.2.0', + 14 => '2.2.1', + 15 => '2.3.0', + 16 => '2.3.1', + 17 => '2.3.2', + 18 => '2.4.0', + 19 => '2.4.1', + 20 => '2.4.2', + 21 => '2.5.0', + 22 => '2.5.1', + 23 => '2.5.2', + 24 => '2.5.3', + 25 => '2.5.4' +); + +function echoInitialVersionRows($version, $build_to_version_map) { - if ($version < 2) { - printRow('Pre-1.4.0'); - } - if ($version < 3) { - printRow('1.4.0'); - } - if ($version < 4) { - printRow('1.4.1'); - } - if ($version < 5) { - printRow('1.5.0'); - } - if ($version < 6) { - printRow('1.6.0'); - } - if ($version < 7) { - printRow('1.6.1'); - } - if ($version < 8) { - printRow('1.7.0'); - } - if ($version < 9) { - printRow('2.0.0'); - } - if ($version < 10) { - printRow('2.0.1'); - } - if ($version < 11) { - printRow('2.1.0'); - } - if ($version < 12) { - printRow('2.1.1'); - } - if ($version < 13) { - printRow('2.2.0'); - } - if ($version < 14) { - printRow('2.2.1'); - } - if ($version < 15) { - printRow('2.3.0'); - } - if ($version < 16) { - printRow('2.3.1'); - } - if ($version < 17) { - printRow('2.3.2'); - } - if ($version < 18) { - printRow('2.4.0'); - } - if ($version < 19) { - printRow('2.4.1'); - } - if ($version < 20) { - printRow('2.4.2'); - } - if ($version < 21) { - printRow('2.5.0'); - } - if ($version < 22) { - printRow('2.5.1'); - } - if ($version < 23) { - printRow('2.5.2'); - } - if ($version < 24) { - printRow('2.5.3'); + foreach ($build_to_version_map as $build => $display_text) { + if ($version < $build) { + printRow($display_text); + } } } @@ -133,7 +96,7 @@ function printRow($version) - + diff --git a/install/mods-for-hesk/js/version-scripts.js b/install/mods-for-hesk/js/version-scripts.js index 6f5c4b2a..44eee536 100644 --- a/install/mods-for-hesk/js/version-scripts.js +++ b/install/mods-for-hesk/js/version-scripts.js @@ -68,6 +68,9 @@ function processUpdates(startingVersion) { } else if (startingVersion < 24) { startVersionUpgrade('253'); executeUpdate(24, '253', '2.5.3'); + } else if (startingVersion < 25) { + startVersionUpgrade('254'); + executeUpdate(25, '254', '2.5.4'); } else { installationFinished(); } diff --git a/install/mods-for-hesk/modsForHesk.php b/install/mods-for-hesk/modsForHesk.php index a95229f9..24c90bcc 100644 --- a/install/mods-for-hesk/modsForHesk.php +++ b/install/mods-for-hesk/modsForHesk.php @@ -119,7 +119,7 @@ hesk_dbConnect();

    What version of Mods for HESK do you currently have installed?


    '; echo '
    '; echo '

    Mods for HESK has detected that you currently have version ' . $version . ' installed. @@ -130,6 +130,18 @@ hesk_dbConnect(); } ?>

    +
    + + 2.5.3 +
    btn-block disablable" href="installModsForHesk.php?v=21">2.5.0
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=20">2.4.2
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=17">2.3.2
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=16">2.3.1
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=13">2.2.0
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=12">2.1.1
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=9">2.0.0
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=8">1.7.0
    -
    -
    - -
    1.5.0
    -
    - 1.4.1 -

    +
    + 1.4.1 +
    1.4.0 diff --git a/install/mods-for-hesk/sql/installSql.php b/install/mods-for-hesk/sql/installSql.php index 000a4248..e436617e 100644 --- a/install/mods-for-hesk/sql/installSql.php +++ b/install/mods-for-hesk/sql/installSql.php @@ -702,4 +702,13 @@ function execute253Scripts() hesk_dbConnect(); executeQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` SET `Value` = '2.5.3' WHERE `Key` = 'modsForHeskVersion'"); +} + +// Version 2.5.4 +function execute254Scripts() +{ + global $hesk_settings; + hesk_dbConnect(); + + executeQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` SET `Value` = '2.5.4' WHERE `Key` = 'modsForHeskVersion'"); } \ No newline at end of file From 1afa0ad639e451f8b23ad7934c8a4f490627ab62 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Tue, 2 Feb 2016 21:13:15 -0500 Subject: [PATCH 16/27] Fix installer --- install/mods-for-hesk/modsForHesk.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/mods-for-hesk/modsForHesk.php b/install/mods-for-hesk/modsForHesk.php index 24c90bcc..df76f7ee 100644 --- a/install/mods-for-hesk/modsForHesk.php +++ b/install/mods-for-hesk/modsForHesk.php @@ -133,10 +133,10 @@ hesk_dbConnect();
    Date: Mon, 8 Feb 2016 18:44:36 +0000 Subject: [PATCH 17/27] Update README.me --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c1de3950..a671b80a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/mkoch227/Mods-for-HESK/blob/master/LICENSE) [![Join the chat at https://gitter.im/mkoch227/Mods-for-HESK](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mkoch227/Mods-for-HESK?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -Mods for HESK is a set of modifications for [HESK](http://www.hesk.com) v2.6.5, a free and popular helpdesk solution. +Mods for HESK is a set of modifications for [HESK](http://www.hesk.com) v2.6.6, a free and popular helpdesk solution. ## Features From f7bd3374aa0bfe1c4e7441798241f5efa88e5d2a Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 18 Apr 2016 18:27:27 -0400 Subject: [PATCH 18/27] Update mail.php --- admin/mail.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/mail.php b/admin/mail.php index 2f1781c2..2f8df755 100644 --- a/admin/mail.php +++ b/admin/mail.php @@ -1,7 +1,7 @@ 1) ? $tmp : 1; /* List of private messages */ From f8fa90d85b5acfcacb6df4ec12a00849a4dfc417 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 18 Apr 2016 18:34:46 -0400 Subject: [PATCH 19/27] Update change_status --- change_status.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/change_status.php b/change_status.php index 578d17ec..9026d723 100644 --- a/change_status.php +++ b/change_status.php @@ -1,7 +1,7 @@ Date: Mon, 18 Apr 2016 18:34:50 -0400 Subject: [PATCH 20/27] Update common --- inc/common.inc.php | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/inc/common.inc.php b/inc/common.inc.php index 90dbf58e..f9642b98 100644 --- a/inc/common.inc.php +++ b/inc/common.inc.php @@ -1,7 +1,7 @@ Date: Mon, 18 Apr 2016 18:38:19 -0400 Subject: [PATCH 21/27] Update print --- print.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/print.php b/print.php index 56fa33af..adca0a00 100644 --- a/print.php +++ b/print.php @@ -1,7 +1,7 @@ Date: Mon, 18 Apr 2016 18:41:09 -0400 Subject: [PATCH 22/27] Update reply_ticket --- reply_ticket.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/reply_ticket.php b/reply_ticket.php index db6ffcb0..bcacfb73 100644 --- a/reply_ticket.php +++ b/reply_ticket.php @@ -1,7 +1,7 @@
      ' . $hesk_error_buffer . '
    '; - hesk_process_messages($hesk_error_buffer, 'ticket.php?track=' . $trackingID . $hesk_settings['e_param'] . '&Refresh=' . rand(10000, 99999)); + hesk_process_messages($hesk_error_buffer,'ticket.php'); } // Check if this IP is temporarily locked out @@ -142,7 +146,7 @@ hesk_verifyEmailMatch($trackingID, $my_email, $ticket['email']); /* Ticket locked? */ if ($ticket['locked']) { - hesk_process_messages($hesklang['tislock2'], 'ticket.php?track=' . $trackingID . $hesk_settings['e_param'] . '&Refresh=' . rand(10000, 99999)); + hesk_process_messages($hesklang['tislock2'],'ticket.php'); exit(); } @@ -226,6 +230,5 @@ else { hesk_cleanSessionVars('ticket_message'); /* Show the ticket and the success message */ -hesk_process_messages($hesklang['reply_submitted_success'], 'ticket.php?track=' . $trackingID . $hesk_settings['e_param'] . '&Refresh=' . rand(10000, 99999), 'SUCCESS'); +hesk_process_messages($hesklang['reply_submitted_success'],'ticket.php','SUCCESS'); exit(); -?> From 7ef6d6215ab17111bbf4c8805940db3fb7e2dce8 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 18 Apr 2016 18:54:37 -0400 Subject: [PATCH 23/27] Update ticket --- ticket.php | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/ticket.php b/ticket.php index 2960f223..493895a7 100644 --- a/ticket.php +++ b/ticket.php @@ -1,7 +1,7 @@
    -
    +
    From 7cbd197284d882ce1df789ed7840c12a5e8e9607 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 18 Apr 2016 18:57:07 -0400 Subject: [PATCH 24/27] Update headers --- admin/admin_main.php | 2 +- admin/admin_reply_ticket.php | 2 +- admin/admin_settings.php | 2 +- admin/admin_settings_save.php | 2 +- admin/admin_submit_ticket.php | 2 +- admin/admin_ticket.php | 2 +- admin/banned_emails.php | 2 +- admin/banned_ips.php | 2 +- admin/change_status.php | 2 +- admin/delete_tickets.php | 2 +- admin/edit_note.php | 2 +- admin/edit_post.php | 2 +- admin/export.php | 2 +- admin/find_tickets.php | 2 +- admin/index.php | 2 +- admin/knowledgebase_private.php | 2 +- admin/lock.php | 2 +- admin/manage_canned.php | 2 +- admin/manage_categories.php | 2 +- admin/manage_knowledgebase.php | 2 +- admin/manage_permission_templates.php | 2 +- admin/manage_ticket_templates.php | 2 +- admin/manage_users.php | 2 +- admin/new_ticket.php | 2 +- admin/options.php | 2 +- admin/password.php | 2 +- admin/profile.php | 2 +- admin/reports.php | 2 +- admin/service_messages.php | 2 +- admin/show_tickets.php | 2 +- download_attachment.php | 2 +- hesk_javascript.js | 2 +- inc/admin_functions.inc.php | 2 +- inc/attachments.inc.php | 2 +- inc/email_functions.inc.php | 2 +- inc/header.inc.php | 2 +- inc/headerAdmin.inc.php | 2 +- inc/knowledgebase_functions.inc.php | 2 +- inc/pipe_functions.inc.php | 2 +- inc/posting_functions.inc.php | 2 +- inc/print_tickets.inc.php | 2 +- inc/profile_functions.inc.php | 2 +- inc/show_admin_nav.inc.php | 2 +- inc/show_search_form.inc.php | 2 +- inc/status_functions.inc.php | 2 +- inc/ticket_list.inc.php | 2 +- index.php | 2 +- install/install.php | 2 +- install/install_functions.inc.php | 2 +- knowledgebase.php | 2 +- submit_ticket.php | 2 +- suggest_articles.php | 2 +- suggest_email.php | 2 +- 53 files changed, 53 insertions(+), 53 deletions(-) diff --git a/admin/admin_main.php b/admin/admin_main.php index ea556516..8a6a4141 100644 --- a/admin/admin_main.php +++ b/admin/admin_main.php @@ -1,7 +1,7 @@ Date: Mon, 18 Apr 2016 19:35:14 -0400 Subject: [PATCH 25/27] Update installer --- inc/header.inc.php | 2 +- inc/headerAdmin.inc.php | 2 +- install/install_functions.inc.php | 4 +- .../ajax/install-database-ajax.php | 2 + install/mods-for-hesk/installModsForHesk.php | 3 +- install/mods-for-hesk/js/version-scripts.js | 3 + install/mods-for-hesk/modsForHesk.php | 56 ++++++++++++------- install/mods-for-hesk/sql/installSql.php | 14 +++++ 8 files changed, 61 insertions(+), 25 deletions(-) diff --git a/inc/header.inc.php b/inc/header.inc.php index 43b91a58..0827618c 100644 --- a/inc/header.inc.php +++ b/inc/header.inc.php @@ -29,7 +29,7 @@ *******************************************************************************/ // Define the current build -define('MODS_FOR_HESK_BUILD', 25); +define('MODS_FOR_HESK_BUILD', 26); /* Check if this is a valid include */ if (!defined('IN_SCRIPT')) { diff --git a/inc/headerAdmin.inc.php b/inc/headerAdmin.inc.php index 47a034ec..8aab7018 100644 --- a/inc/headerAdmin.inc.php +++ b/inc/headerAdmin.inc.php @@ -29,7 +29,7 @@ *******************************************************************************/ // Define the current build -define('MODS_FOR_HESK_BUILD', 25); +define('MODS_FOR_HESK_BUILD', 26); /* Check if this is a valid include */ if (!defined('IN_SCRIPT')) { diff --git a/install/install_functions.inc.php b/install/install_functions.inc.php index ef35daa5..b7ea1911 100644 --- a/install/install_functions.inc.php +++ b/install/install_functions.inc.php @@ -36,8 +36,8 @@ if (!defined('IN_SCRIPT')) {die('Invalid attempt');} // We will be installing this HESK version: -define('HESK_NEW_VERSION','2.6.6'); -define('MODS_FOR_HESK_NEW_VERSION','2.5.4'); +define('HESK_NEW_VERSION','2.6.7'); +define('MODS_FOR_HESK_NEW_VERSION','2.5.5'); define('REQUIRE_PHP_VERSION','5.0.0'); define('REQUIRE_MYSQL_VERSION','5.0.7'); diff --git a/install/mods-for-hesk/ajax/install-database-ajax.php b/install/mods-for-hesk/ajax/install-database-ajax.php index 85d1a9cb..5776d02a 100644 --- a/install/mods-for-hesk/ajax/install-database-ajax.php +++ b/install/mods-for-hesk/ajax/install-database-ajax.php @@ -56,6 +56,8 @@ if ($version == 2) { execute253Scripts(); } elseif ($version == 25) { execute254Scripts(); +} elseif ($version == 26) { + execute255Scripts(); } else { $response = 'The version "' . $version . '" was not recognized. Check the value submitted and try again.'; print $response; diff --git a/install/mods-for-hesk/installModsForHesk.php b/install/mods-for-hesk/installModsForHesk.php index 1b9d7390..cb68f503 100644 --- a/install/mods-for-hesk/installModsForHesk.php +++ b/install/mods-for-hesk/installModsForHesk.php @@ -33,7 +33,8 @@ $buildToVersionMap = array( 22 => '2.5.1', 23 => '2.5.2', 24 => '2.5.3', - 25 => '2.5.4' + 25 => '2.5.4', + 26 => '2.5.5', ); function echoInitialVersionRows($version, $build_to_version_map) diff --git a/install/mods-for-hesk/js/version-scripts.js b/install/mods-for-hesk/js/version-scripts.js index 44eee536..c36267d3 100644 --- a/install/mods-for-hesk/js/version-scripts.js +++ b/install/mods-for-hesk/js/version-scripts.js @@ -71,6 +71,9 @@ function processUpdates(startingVersion) { } else if (startingVersion < 25) { startVersionUpgrade('254'); executeUpdate(25, '254', '2.5.4'); + } else if (startingVersion < 26) { + startVersionUpgrade('255'); + executeUpdate(25, '255', '2.5.5'); } else { installationFinished(); } diff --git a/install/mods-for-hesk/modsForHesk.php b/install/mods-for-hesk/modsForHesk.php index df76f7ee..d3fa7e53 100644 --- a/install/mods-for-hesk/modsForHesk.php +++ b/install/mods-for-hesk/modsForHesk.php @@ -130,6 +130,18 @@ hesk_dbConnect(); } ?>
    +
    + + 2.5.4 +
    btn-block disablable" href="installModsForHesk.php?v=22">2.5.1
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=21">2.5.0
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=18">2.4.0
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=17">2.3.2
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=14">2.2.1
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=13">2.2.0
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=10">2.0.1
    +
    +
    + +
    btn-block disablable" href="installModsForHesk.php?v=9">2.0.0
    -
    -
    - -
    btn-block disablable" href="installModsForHesk.php?v=6">1.6.0
    -
    - 1.5.0 -

    +
    + 1.5.0 +
    1.4.1 @@ -395,6 +407,10 @@ hesk_dbConnect(); 1.3.0
    +
    +
    + +
    1.2.4 diff --git a/install/mods-for-hesk/sql/installSql.php b/install/mods-for-hesk/sql/installSql.php index e436617e..cc8d9a86 100644 --- a/install/mods-for-hesk/sql/installSql.php +++ b/install/mods-for-hesk/sql/installSql.php @@ -711,4 +711,18 @@ function execute254Scripts() hesk_dbConnect(); executeQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` SET `Value` = '2.5.4' WHERE `Key` = 'modsForHeskVersion'"); +} + +// Version 2.5.5 +function execute255Scripts() +{ + updateVersion($version); +} + +function updateVersion($version) { + global $hesk_settings; + + hesk_dbConnect(); + + executeQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` SET `Value` = '{$version}' WHERE `Key` = 'modsForHeskVersion'"); } \ No newline at end of file From 62d04bf6e601a4b1ffa9d024226ab3d447a49ec9 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 18 Apr 2016 19:37:53 -0400 Subject: [PATCH 26/27] Fix install scripts --- install/mods-for-hesk/js/version-scripts.js | 2 +- install/mods-for-hesk/sql/installSql.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/mods-for-hesk/js/version-scripts.js b/install/mods-for-hesk/js/version-scripts.js index c36267d3..5a6369a7 100644 --- a/install/mods-for-hesk/js/version-scripts.js +++ b/install/mods-for-hesk/js/version-scripts.js @@ -73,7 +73,7 @@ function processUpdates(startingVersion) { executeUpdate(25, '254', '2.5.4'); } else if (startingVersion < 26) { startVersionUpgrade('255'); - executeUpdate(25, '255', '2.5.5'); + executeUpdate(26, '255', '2.5.5'); } else { installationFinished(); } diff --git a/install/mods-for-hesk/sql/installSql.php b/install/mods-for-hesk/sql/installSql.php index cc8d9a86..f272da2d 100644 --- a/install/mods-for-hesk/sql/installSql.php +++ b/install/mods-for-hesk/sql/installSql.php @@ -716,7 +716,7 @@ function execute254Scripts() // Version 2.5.5 function execute255Scripts() { - updateVersion($version); + updateVersion('2.5.5'); } function updateVersion($version) { From 38dd4ee7c9e6ebf159577900da9547e10fdd9bdb Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 18 Apr 2016 21:14:45 -0400 Subject: [PATCH 27/27] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a671b80a..bb7aa473 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/mkoch227/Mods-for-HESK/blob/master/LICENSE) [![Join the chat at https://gitter.im/mkoch227/Mods-for-HESK](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mkoch227/Mods-for-HESK?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -Mods for HESK is a set of modifications for [HESK](http://www.hesk.com) v2.6.6, a free and popular helpdesk solution. +Mods for HESK is a set of modifications for [HESK](http://www.hesk.com) v2.6.x, a free and popular helpdesk solution. ## Features