diff --git a/CHANGELOG.md b/CHANGELOG.md index d8af4496..f4e7725b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,31 @@ This file documents all notable changes made to ITFlow. +## [25.12] Stable Release + +### Major Changes +- Consolidated "Files" and "Documents" into a single section called **Files**. + +### Bug Fixes +- Resolved issue with updating asset notes in asset details. +- Fixed problem with bulk ticket merging. +- Corrected issue where decimal inputs (e.g., price, cost) weren’t displaying on iPhones in certain forms. +- Added CSV escaping to the sample export data in areas where a sample CSV template is provided. + +### New Features & Updates +- Introduced automatic subject-based ticket merging/reply detection. Now, if an email comes from a known contact or domain and the subject matches 95% of a ticket opened in the last 7 days, it will be merged automatically. +- Added `cleanInput` function to sanitize data before inserting it into the database when using MySQLi prepared statements. +- Migrated client post functionality to use MySQLi prepared statements. +- Updated payment method post functionality to use MySQLi prepared statements. +- Implemented `saveBase64Images()` to convert base64-encoded `` tags into actual image files stored under `/uploads///` with secure filenames. Added wrapper functions, and updated document creation to use processed image paths. +- For new documents and document templates, images are now stored in `/uploads/documents/$document_id` instead of being stored as base64 in the database, using the `saveBase64Images()` function. +- UI/UX improvements made to the document details page. +- Removed sidebar quick-add options. +- Created new folders in the uploads directory: `documents`, `document_templates`, and `recurring_tickets`. +- Reworked the bulk action function to pass the name arrays, instead of a generic `selected_ids` array. This allows multiple bulk name arrays to be passed at once, currently used for the new file-document merge. +- Big task: Converted the remaining modals to use the new `ajax-modal` system, enabling more flexible flow expansion going forward. +- Mail queue: Added a `--no-mx-validation` flag to bypass recipient domain MX validation. + ## [25.11.1] Maint Release ### Fixes diff --git a/agent/documents.php b/agent/documents.php deleted file mode 100644 index e93e05f6..00000000 --- a/agent/documents.php +++ /dev/null @@ -1,479 +0,0 @@ - 0) { - $sql_folder = mysqli_query($mysqli, "SELECT folder_name, parent_folder FROM folders WHERE folder_id = $folder_id"); - if ($row_folder = mysqli_fetch_assoc($sql_folder)) { - $folder_name = nullable_htmlentities($row_folder['folder_name']); - $parent_folder = intval($row_folder['parent_folder']); - - // Prepend the folder to the beginning of the array - array_unshift($folder_path, array('folder_id' => $folder_id, 'folder_name' => $folder_name)); - - // Move up to the parent folder - $folder_id = $parent_folder; - } else { - // If the folder is not found, break the loop - break; - } -} - -?> - -
-
-

- Documents -

-
- -
- - - -
- -
- -
- -
-
- - -
-
-
- "> -
- -
- -
-
-
-
- -
-
-
-
- -
- - -
-
-

Folders

-
- -
- -
- - - -
- - -
- - "> - - - - - - - - - - - NOW() - AND item_type = 'Document' - AND item_related_id = $document_id - LIMIT 1" - ); - $row = mysqli_fetch_array($sql_shared); - if($row) { - $item_id = intval($row['item_id']); - $item_active = nullable_htmlentities($row['item_active']); - $item_key = nullable_htmlentities($row['item_key']); - $item_type = nullable_htmlentities($row['item_type']); - $item_related_id = intval($row['item_related_id']); - $item_note = nullable_htmlentities($row['item_note']); - $item_recipient = nullable_htmlentities($row['item_recipient']); - $item_views = nullable_htmlentities($row['item_views']); - $item_view_limit = nullable_htmlentities($row['item_view_limit']); - $item_created_at = nullable_htmlentities($row['item_created_at']); - $item_expire_at = nullable_htmlentities($row['item_expire_at']); - $item_expire_at_human = timeAgo($row['item_expire_at']); - } - - ?> - - - - - - - - - - - - - -
-
- -
-
- - Name - - - - Created - - - - Last Update - - Action
-
- -
-
- -
-
- -
-
- 0) { ?> -
- -
Shared -
- -
-
- -
- -
-
-
-
- -
-
-
-
- - - -