diff --git a/.gitignore b/.gitignore index f60657bd..f83f4883 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,14 @@ plugins/htmlpurifier/standalone/HTMLPurifier/DefinitionCache/Serializer/CSS/* xcustom/* !xcustom/readme.php post/xcustom -custom/* !post/xcustom/readme.php +admin/custom/* +!admin/custom/readme.php +agent/custom/* +!agent/custom/readme.php +client/custom/* +!client/custom/readme.php +guest/custom/* +!guest/custom/readme.php .zed + diff --git a/CHANGELOG.md b/CHANGELOG.md index 69983bcb..5797ed84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,44 @@ This file documents all notable changes made to ITFlow. +## [25.10] + +### Breaking Changes +- Renamed `/user/` directory to `/agent/`. +- Deprecation Notice: `/scripts/cron_mail_queue.php` and `/scripts/cron_ticket_email_parser.php` are being phased out. Please transition to `/cron/mail_queue.php` and `/cron/ticket_email_parser.php`. These older scripts will be removed in the November release—update accordingly. New Installs via the script will have this already configured. +- Custom is working now. Custom code should be placed in /admin/custom/ , /agent/custom/ , /client/custom/ /guest/custom/ +We will provide example code with directory structure for each custom directory a week after this release. + +### Fixes +- Resolved issue with "Restore from Setup" not functioning correctly. +- Corrected asset name display in logs and flash messages when editing an asset in a ticket. +- Fixed Payment Provider Threshold not being applied. +- Fixed issue where Threshold setting was not saving properly. +- Various minor fixes for Payment Provider issues. +- Removed leads from the client selection list in the "New Ticket" modal. +- Fixed issues with the MFA modal. +- Resolved MFA enforcement bugs. +- Fixed KeepAlive functionality to maintain user sessions longer. +- Fixed multiple broken links caused by the `/user/` to `/agent/` path migration. +- Fixed Custom code directories. + +### Added / Changed +- Removed "ACH" as a payment method; added "Bank Transfer" instead. +- Replaced relative paths with absolute paths for web assets. +- Tickets can now be resolved via the API. +- Added a filter for Archived Users and an option to restore them. +- Introduced a modal when archiving users, allowing reassignment of open and recurring tickets to another agent. +- Improved logic for determining the index/root page. +- Added "Assigned Agent" column for recurring tickets. +- Introduced "Additional Assets" option when editing assets in tickets; modal now uses the updated AJAX method. +- Added Gibraltar to the list of supported countries. +- Added Custom Link Option for the Admin Nav. +- Added Custom Link Option for the Reports Nav. + +### Other notes +- Major releases will happen on the first week of every Month. + + ## [25.09.2] ### Fixes diff --git a/admin/audit_log.php b/admin/audit_log.php index 3da62911..33b58ac0 100644 --- a/admin/audit_log.php +++ b/admin/audit_log.php @@ -266,7 +266,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); if (empty($client_name)) { $client_name_display = "-"; } else { - $client_name_display = "$client_name"; + $client_name_display = "$client_name"; } $log_entity_id = intval($row['log_entity_id']); diff --git a/admin/custom/readme.php b/admin/custom/readme.php new file mode 100644 index 00000000..498c1b53 --- /dev/null +++ b/admin/custom/readme.php @@ -0,0 +1,8 @@ + diff --git a/admin/database_updates.php b/admin/database_updates.php index f97ce66b..688a9daa 100644 --- a/admin/database_updates.php +++ b/admin/database_updates.php @@ -3992,6 +3992,40 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) { mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '2.3.4'"); } + + if (CURRENT_DATABASE_VERSION == '2.3.4') { + + // Add Software Keys + mysqli_query($mysqli, "CREATE TABLE `software_keys` ( + `software_key_id` INT(11) NOT NULL AUTO_INCREMENT, + `software_key` VARCHAR(400) NOT NULL, + `software_key_software_id` INT(11) NOT NULL, + PRIMARY KEY (`software_key_id`), + FOREIGN KEY (`software_key_software_id`) REFERENCES `software`(`software_id`) ON DELETE CASCADE + )"); + + // Software Key Assignments to Contacts + mysqli_query($mysqli, "CREATE TABLE `software_key_contact_assignments` ( + `software_key_id` INT(11) NOT NULL, + `contact_id` INT(11) NOT NULL, + `software_key_assigned_at` DATETIME DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`software_key_id`, `contact_id`), + FOREIGN KEY (`software_key_id`) REFERENCES `software_keys`(`software_key_id`) ON DELETE CASCADE, + FOREIGN KEY (`contact_id`) REFERENCES `contacts`(`contact_id`) ON DELETE CASCADE + )"); + + // Software Key Assignments to Assets + mysqli_query($mysqli, "CREATE TABLE `software_key_asset_assignments` ( + `software_key_id` INT(11) NOT NULL, + `asset_id` INT(11) NOT NULL, + `software_key_assigned_at` DATETIME DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`software_key_id`, `asset_id`), + FOREIGN KEY (`software_key_id`) REFERENCES `software_keys`(`software_key_id`) ON DELETE CASCADE, + FOREIGN KEY (`asset_id`) REFERENCES `assets`(`asset_id`) ON DELETE CASCADE + )"); + + mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '2.3.5'"); + } // if (CURRENT_DATABASE_VERSION == '2.3.4') { // // Insert queries here required to update to DB version 2.3.4 diff --git a/admin/includes/inc_all_admin.php b/admin/includes/inc_all_admin.php index ceeec4e2..fb600215 100644 --- a/admin/includes/inc_all_admin.php +++ b/admin/includes/inc_all_admin.php @@ -2,7 +2,6 @@ require_once "../config.php"; require_once "../functions.php"; -require_once "../includes/router.php"; require_once "../includes/check_login.php"; require_once "../includes/page_title.php"; if (!isset($session_is_admin) || !$session_is_admin) { diff --git a/admin/includes/side_nav.php b/admin/includes/side_nav.php index ea0fc168..ee85e322 100644 --- a/admin/includes/side_nav.php +++ b/admin/includes/side_nav.php @@ -1,6 +1,6 @@