diff --git a/.gitignore b/.gitignore index 1dc7ee4b..751f2adf 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,22 @@ xcustom/* !xcustom/readme.php post/xcustom !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 +cron/custom/* +!cron/custom/readme.php +scripts/custom/* +!scripts/custom/readme.php +setup/custom/* +!setup/custom/readme.php +api/v1/custom/* +!api/v1/custom/readme.php .zed + + diff --git a/CHANGELOG.md b/CHANGELOG.md index f09eb2bb..d35ccc2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,197 @@ This file documents all notable changes made to ITFlow. +## [25.10.1] +- Deprecation Notice: `/scripts/cron_mail_queue.php` , `/scripts/cron_ticket_email_parser.php` , `/scripts/cron.php` `/scripts/cron_domain_refresher.php`, `/scripts/cron_certificate_refresher.php` are being phased out. Please transition to `/cron/mail_queue.php` , `/cron/ticket_email_parser.php`, `/cron/cron.php`, `/cron/domain_refresher.php`, `/cron/certificate_refresher.php` These older scripts will be removed in the November 25.11 release—update accordingly. 25.10.1 installs have the script already configured. + +### Fixes +- Fix regression missing custom Favicon. +- Update SMTP and IMAP provider to allow for empty strings, empty means disabled. +- Fix Client portal Microsoft SSO Logins. +- Fix regression in Vendor Templates. +- Fix refression in some broken links from user to agent. +- Fix Project edit. +- Prevent open redirects upon agent login. +- Fix regression on switching to Webklex IMAP to allow for no SSL/TLS in IMAP. +- Fix Setup Redirect not behaving properly when setup hasnt been performed. +- Added Server Document Root Var to several includes, headers, footers files to allow includes from deeper directory strutures such as the new custom directories. +- Fix edit contact in contact details. +- Add .htaccess to /cron/. + +### Added / Changed +- Support for HTML Signatures. +- Add Edit Project Functionality in a ticket. +- Added more custom locations: /cron/custom/, /scripts/custom/, /api/v1/custom/, /setup/custom/. +- Copied `/scripts/cron.php` `/scripts/cron_domain_refresher.php`, `/scripts/cron_certificate_refresher.php` to `/cron/cron.php`, `/cron/domain_refresher.php`, `/cron/certificate_refresher.php`. See Above! +- Signatures is now handled in post ticket reply on Public Comments only. + +## [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 +- Fix Payment Method Select box in Revenue. +- Remove Extra Feeback Wording When Invoice Sends. +- Updated all CSV exports to use escape parameters. +- Fix Missing First row on Asset interface export. +- Fix Edit User not working due to incorrect modal footer path. +- Fix Add Certificate breaking due spelling on function. +- Update all CSV Exports to include company name or client name depending on when its being exported from. +- Introduced new function sanitize_filename and implmented it in all exports. +- Spruced up UI/UX Saved Paymented section in Client Portal. +- Fix add Payment Link in client portal recurring invoice section. +- Better Logic handling for default page redirect. + +### Features +- Introduced new Beta mail parser cron using webklex imap library instead of php-imap as this is deprecated --Not Enabled on existing installs, only new installs. +- Introduced Beta support for OAUTH2 Authentication for Microsoft 365 and Google Workspaces for both incoming ticket parsing and outgoing email but must use new mail parser and mail queue for this to work, and requires changing the cron jobs: scripts/cron_mail_queue.php to cron/mail_queue.php and scripts/cron_ticket_email_parser.php to cron/ticket_email_parser.php. + +--- + +## [25.09.1] + +### Fixes +- **Web Installer**: Resolved issue with broken installer caused by incorrect database schema file name. +- Hide the "Add Credit" button as the feature is not fully implemented yet. +- Corrected long invoice/quote notes that were overlapping with the footer in PDF exports. +- Fixed AI settings not appearing in the Admin Menu when the Billing module was disabled. +- Enabled wrapping of client tags when they are too long. +- Fixed an issue where AI was not functioning correctly. +- Removed extra spacing between the contact name and icon in the Ticket Details contact card. + +### Features +- Redesigned **AI Ticket Summary**, now divided into 3 sections: Main Issue, Actions Taken, and Resolution/Next Steps. +- Updated the **AI Ticket Summary** prompt to include ticket status, reply author, source, category, and priority. + +--- + +## [25.09] + +***BACK UP*** before updating. + +--- + +### Breaking Changes and Notes +- We strongly recommend updating from the command line, however if performed via the webui and after performed it will return a 404. thats normal as the directory structure has changed, just close your browser then log back in then go back to update to perform the many database updates. +- This is a major release with significant changes. While the community has done a great job identifying bugs, some may still remain — continued testing is encouraged. +- All AI settings will be **reset** and must be reconfigured using the new AI provider backend. +- The `xcustom` directory has been renamed to `custom`. All custom libraries and post-processing scripts should now be placed here. + +--- + +### Added / Changed +- Numerous UI improvements and refinements across the application. +- Enhanced visual clarity by thickening the left border on ticket comments to help identify comment types. +- Ticket details UI redesigned to use less space at the top of the screen. +- Introduced tracking for the **first response date/time** on tickets. +- New reporting feature: **Average time to first response** on tickets. +- Stripe integration rebuilt using the new **payment provider backend**. +- Clients can now save and manage **multiple payment methods**. +- Support for selecting saved cards for **recurring invoices** in both the client and agent portals. +- Initial database structure and logic added for **credit management** (feature not yet enabled). +- Major **backend directory restructuring**. +- Introduced **stock/inventory management**, including a stock ledger backend. +- Stock quantities now update automatically when invoice items are added or removed. +- Invoice autocomplete now includes: **name, description, price, tax, stock levels**, and links `product_id` to `item_id`. +- Added a **category filter** to invoices. +- Linked stock to related expenses. +- New product fields: **location, code, and type**. +- Products now separated into two types: **Service** and **Product**. +- **Dark mode** introduced. +- Projects: Now support linking **closed tickets**. +- Clients: Added bulk actions for tags, referral source, industry, hourly rate, email, archive, and restore. +- Invoices: Bulk action added to **assign categories**. +- Assets: New `client_uri` field, visible in both the agent and client portals. +- Client Portal: Clients can now **select an asset** during ticket creation. +- Client Portal: Company logo now **displays in the header**. +- Client Portal: Dashboard cards are now **clickable** for more detail. +- Assets: Option added to include **MAC Address** in additional columns. +- Asset Interface: Bulk actions added — set DHCP, network type, and delete. +- API: + - Added `/location` endpoint. + - Ticket content now supports **HTML formatting**. +- New option to filter and display **500 records per page** in the footer. +- Payment methods are now treated as a **separate entity** instead of being grouped under categories. +- Updated libraries: + - **TinyMCE** + - **Chart.js** (major upgrade) + - **DataTables** + - **Bootstrap** + - **FullCalendar** + - **php-stripe** + +--- + +### Fixed +- Several security vulnerabilities patched. +- Ticket status is no longer updated when scheduling. +- Client Portal: Tech contacts can no longer edit their own details. +- Fixed overlapping logo issue in Invoice/Quote PDF exports. +- Refactored `check_login.php` into multiple files for modular login functionality. +- Removed redundant logging comments for redirects. +- Renamed `get_settings.php` to `load_global_settings.php`. +- Simplified syntax for `ajax-modal` and updated usage throughout the app. +- Fixed issue where primary contact text wasn’t displaying. +- Corrected client **Net Terms** display. +- Fixed logic for recurring expense **next run date**. +- Resolved broken **IMAP test button**. +- Archived clients can no longer log into the portal. +- Searching closed tickets no longer reverts to open tickets. +- Fixed project search filter not showing completed projects. +- Fixed issue where company logo was not being removed correctly. +- Resolved API bugs: + - Default rate and net terms. + - Contact location. + - Document endpoint. + +--- + +### Developer Updates +- Replaced legacy code with newer functions like `redirect()`, `getFieldById()`, and `flash_alert()`. +- Significantly improved performance of queries used for filter selection boxes. + + +## [25.06.1] + +### Fixed +- Fixed a regression in setup causing it to crash and never complete, due to missing default for currency. + ## [25.06] ### Breaking CHANGES diff --git a/admin/ai_model.php b/admin/ai_model.php new file mode 100644 index 00000000..cca1f863 --- /dev/null +++ b/admin/ai_model.php @@ -0,0 +1,108 @@ + + +
| + + Model + + | ++ + Provider + + | ++ + Use Case + + | ++ Prompt + | +Action | +
|---|---|---|---|---|
| + + + + | ++ | + | + |
+
+
+
+
+ |
+
| + + Provider + + | ++ + URL + + | ++ + Key + + | ++ Models + | +Action | +
|---|---|---|---|---|
| + + + + | ++ | + | + |
+
+
+
+
+ |
+
| + + Client + + | ++ + Provider + + | ++ + Description + + | ++ + Provider Client ID + + | + ++ + Provider Payment Method ID + + | ++ + Created + + | +Action | +
|---|---|---|---|---|---|---|
| () | +() | ++ | + | + | + | + + Delete + + | +
Each of the "From Email" Addresses need to be able to send email on behalf of the SMTP user configured above +
(used for system tasks such as sending share links)
+(used for when invoice emails are sent)
+ +(used for when quote emails are sent)
+ +(used for when tickets are created and emailed to a client)
+ +Each of the "From Email" Addresses need to be able to send email on behalf of the SMTP user configured above -
(used for system tasks such as sending share links)
-(used for when invoice emails are sent)
- -(used for when quote emails are sent)
- -(used for when tickets are created and emailed to a client)
- -| Client | -Stripe Customer ID | -Stripe Payment ID | -Payment Details | -Created | -Action | -
|---|---|---|---|---|---|
| - | - | - | - | - |
-
-
-
-
- |
-
-
| Name / Port | -Type | -MAC | -IP | -Network | -Connected To | -Action | -|||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - - - (Primary)"; } ?> - - | -- | - | - | - | - |
-
- |
+ Name / Port | +Type | +MAC | +IP | +Network | +Connected To | +Action | +
|
+
+
+
+ |
+ + + + = $interface_name ?> (Primary)"; } ?> + + | += $interface_type_display; ?> | += $interface_mac_display; ?> | += $interface_ip_display; ?> | += $network_name_display; ?> | += $connected_to_display; ?> | +
+
+
+ |
+
This is a great starting point for new custom pages.
+ + + +$start_date"; + +echo "|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ $contact_phone $contact_extension"; ?>
+
+
+ + |
+
| + + | +
+ Views:
+
+ |
+ Expires | ++ + + + | +
+ + Domain: + -- () +
+ + + ++ + Certificate: + -- () +
+ + + ++ + Asset Warranty: + -- () +
+ + + + + ++ + Asset Retire: + -- () +
+ + + + ++ + License: + -- () +
+ + + ++ + Domain: + -- () +
+ + + ++ + Certificate: + -- () +
+ + + + + + + + + ++ + Asset Retire: + -- () +
+ + + + ++ + Software: + -- () +
+ + + +| + | + |
|
+
+
+
+ |
+ + + Client Name + + | ++ + Primary Location + + | ++ + Primary Contact + + + | ++ = 1) && $config_module_enable_accounting == 1) { ?> + | Billing | + + = 2) { ?> +Action | + +
|---|---|---|---|---|---|---|
|
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Abbreviation:
+
+ + Created: + |
+ + |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ + + | + + + = 1) && $config_module_enable_accounting == 1) { ?> +
+
+ Balance
+
+
+
+ Paid
+
+
+ 0) { ?>
+
+ Credit
+
+
+
+
+ Monthly
+
+
+
+ Hourly Rate
+
+
+ |
+
+
+
+ = 2) { ?>
+
+
+
+ |
+
+