johnnyq
bc64c9e3d1
Feature: Abiliry to assign Ticket Templates to Recurring Tickets
2026-07-29 15:55:14 -04:00
johnnyq
fc5cdeea82
Add UI Elements for Asset Notes similar to contact notes
2026-07-29 14:13:55 -04:00
johnnyq
566d74c15d
Fix SLA resolve-time reporting, stale settings cache on save, and report N+1
2026-07-29 13:34:34 -04:00
johnnyq
9533da4053
Repair SLA verdicts missed by kanban/portal resolve; record first response on kanban resolve
2026-07-29 13:21:37 -04:00
johnnyq
162a597da9
Add SLA pausing, SLA reports, SLA filtering and kanban SLA state (phase 3)
...
Statuses can be flagged to pause the resolution clock; sla_history records the intervals a ticket's clock actually ran and the deadline is re-based on remaining budget when it resumes. Adds SLA Summary and SLA by Client reports, an SLA state filter on the ticket list, SLA colouring on kanban cards, and an Urgent column on the Tickets by Client report. DB update 2.5.1. Also fixes resolution SLA verdicts being skipped when resolving via kanban or the client portal.
2026-07-29 13:02:27 -04:00
johnnyq
07c73a6a04
Add Urgent Priority, move Per Client SLA Settings to notes tab in client add / edit modal remove unnessesary sla admin setting for client overide
2026-07-29 00:49:31 -04:00
johnnyq
d08ef6184a
Add optional ticket SLAs
...
Response/resolution targets stamped at creation from per-client/priority assignments, business-hours due date math, warn/breach alert stages via cron/ticket_sla.php, ticket list coloring, per-ticket SLA override, admin page for plans/assignments/business hours. DB update 2.5.0. No behavior change unless SLAs are assigned. Bulk reply now only counts Public replies as first response.
2026-07-29 00:00:42 -04:00
johnnyq
78ee38b39f
Revert DB Update
2026-07-28 22:08:01 -04:00
johnnyq
31921ee99b
Add Refunding capability along with Stripe Refunding
2026-07-28 21:34:06 -04:00
johnnyq
b3f959ac55
Use Short echo tags across the code
2026-07-28 18:47:52 -04:00
johnnyq
c5ff3e2a3f
Normalize line endings to LF; add .gitattributes and .editorconfig
2026-07-28 17:45:52 -04:00
johnnyq
4c65b8c561
Clear mail bodies after successful delivery
2026-07-28 00:18:07 -04:00
johnnyq
a4fdced10f
Rate limit 2FA code attempts and narrow the TOTP acceptance window
2026-07-27 18:36:43 -04:00
johnnyq
815802fb7c
Gate Admin UI Modals to Admin
2026-07-27 14:50:32 -04:00
johnnyq
53842a50d2
Add URI Tabs to mail settings keeps the tab active upon saving
2026-07-26 01:52:25 -04:00
johnnyq
04bf3c234f
Read API credential decrypt password from body instead of query string
...
Keeps the credential decryption secret out of the URL, so it no longer lands in web-server access logs, proxy logs, or browser history. credentials/read.php now reads api_key_decrypt_password from the request body, matching create/update. Consumers reading decrypted credentials must send it in the body, not the query string.
2026-07-25 17:08:22 -04:00
johnnyq
c509b7f693
Add user-based RBAC for API keys
...
API keys now run as a user and inherit that user's module, operation, and client permissions. Drops per-key client scoping and removes existing keys (must be recreated). Adds an edit modal to change a key's user.
2026-07-25 16:50:58 -04:00
johnnyq
3756561458
Feature: Add Deny Client Access to Client Access Permssions - BREAKS UI, MUST UPDATE DB USING php scripts/cli_update.php --db_update
2026-07-25 13:22:52 -04:00
johnnyq
8813b2c066
Use imapEngine lib for testing imap connection
2026-07-24 18:56:16 -04:00
johnnyq
5c4805b822
Neutralize CSV formula injection in generated exports using the new created escapeCsvFormula Function
2026-07-24 18:12:45 -04:00
johnnyq
28f1a965b8
Remove dead code
2026-07-24 17:33:09 -04:00
johnnyq
8afc5aea89
Typo fix
2026-07-24 13:45:52 -04:00
johnnyq
af51c4316f
Updated validateCSRFToken to automatically grab and compare get or post csrf token no longer need to pass an argument to the function which fixed the issue if no hash was present
2026-07-24 13:40:37 -04:00
johnnyq
dd358da65d
Update missing CSRF endpoint checks missed update_db
2026-07-24 13:22:17 -04:00
johnnyq
91a1676e89
Update missing CSRF endpoint checks
2026-07-24 13:16:51 -04:00
johnnyq
9c65644adc
Update the rest of the PHP functions to use camelCase
2026-07-23 17:39:06 -04:00
johnnyq
8f43b92496
Use stripe_init include to init stripe and updated code everywhere
2026-07-23 13:00:01 -04:00
johnnyq
2b756f6ea4
Split DB Updates into seperate files, with the cutoff being 2.0.0
2026-07-22 18:43:11 -04:00
johnnyq
17e4c61067
Spelling Fix
2026-07-22 17:40:30 -04:00
johnnyq
5402578ce6
Remove Static payment processing fees from database and update field hints with useful info when adding / editing payment provider
2026-07-22 17:32:01 -04:00
johnnyq
54e2005224
Icon change for Mail Queue
2026-07-21 14:18:33 -04:00
johnnyq
d5a1305192
Reorg Admin Side nav menu
2026-07-21 14:17:16 -04:00
johnnyq
60bae12024
Clean up admin post handler to match agent
...
- Anchor includes and glob to __DIR__ so loading doesn't depend on CWD
- Replace _model.php regex check with str_ends_with()
2026-07-15 18:48:40 -04:00
johnnyq
6dbe84dee4
Update admin/ breadcrumbs to match plural file names
2026-07-15 00:48:16 -04:00
johnnyq
6e20800a98
Update Tax to Tax Rate in headr title for tax rates
2026-07-15 00:44:32 -04:00
johnnyq
dfedc31c04
Update Tax to Tax Rates in admin side nav
2026-07-15 00:43:09 -04:00
johnnyq
dae7f09650
Remove _details, fix plural and singular file naming in admin, update admin post to match agent post
2026-07-15 00:38:34 -04:00
johnnyq
38a042d435
Remove _details and use singular filename for certain objects
2026-07-15 00:12:27 -04:00
johnnyq
bcb244c245
Update skipped function renames in anything named vendor
2026-07-14 19:09:32 -04:00
johnnyq
2181e92e44
Removed valueOrDash Function was able to replace with ?: '-'
2026-07-14 18:13:34 -04:00
johnnyq
746e919aff
Replace Function getFallBack with valueOrDash()
2026-07-14 18:00:12 -04:00
johnnyq
b8873039a4
Rename Functions: flash_alert, sanitizeFilename and display_folder_options using camelCase instead to match other custom php functions
2026-07-14 17:41:41 -04:00
johnnyq
f1836c70cd
Replace Function logAction() with logAudit()
2026-07-14 17:35:23 -04:00
johnnyq
29a0b3ead8
Replace Function fetchUpdates() with checkForUpdates()
2026-07-14 17:31:54 -04:00
johnnyq
b57ddc0e5c
Replace Function sanitizeInput() with just escapeSql() and update all instances throughout
2026-07-14 17:17:50 -04:00
johnnyq
7bc47a58fe
Replace Function nullable_htmlentities() with just escapeHtml() and update all instances throughout
2026-07-14 17:10:45 -04:00
johnnyq
bf0d799caf
Remove old function comment
2026-07-14 16:51:34 -04:00
johnnyq
29bea9517d
Removed the last of legacy validate functions and replaced with the new enforce fumctions.
2026-07-14 16:49:14 -04:00
johnnyq
8da3a107fb
Rename plugins to libs and update all file references
2026-07-10 13:24:20 -04:00
johnnyq
78c3dd0eed
Remove Dig and Whois binary requirements, revert fetchUpdates function
2026-07-05 16:05:19 -04:00