Commit Graph

264 Commits

Author SHA1 Message Date
johnnyq
d98b8bc427 Add ps-3 to table columns that don't have a checkbox and made sure all table listings conform 2026-08-29 19:45:28 -04:00
johnnyq
950d02d6ab Fix: Six ajax modals had dead JS - DOMContentLoaded had already fired before their scripts were injected. New itflowReady() helper restores jQuery .ready() semantics. Fixes notification pagination, asset OS autocomplete, contact auth toggle, AI ticket summary, AI document template generation 2026-08-28 19:41:00 -04:00
johnnyq
3277567b87 Demo Data Take 6 2026-08-28 19:23:36 -04:00
johnnyq
8d25337774 Added More Client to Demo Seed, even better relations, filled out more missing data spots etc 2026-08-28 19:09:42 -04:00
johnnyq
bfa53dfd66 Rewrite of the demo data seed includes more alternative products including FOSS more accurate historical relations, break fix mix with managed clients and services 2026-08-28 18:17:36 -04:00
johnnyq
156c51224d Fix client portal review findings: PIN wipe, log indexing, statement currency (db 2.7.8)
Setting a PIN containing < or > silently cleared it: the length check ran before escapeSql(), whose strip_tags() then emptied the value, and the UPDATE stored the blank while flashing success. Length is now checked after sanitising.

Password and PIN changes require the current password. SSO contacts are exempt - no local password to check, and the IdP already did it.

New index on logs(log_user_id, log_client_id) for the portal profile and activity pages, which were scanning the whole table twice per profile view. admin/audit_logs.php's date filter rewritten as a half-open range so KEY log_created_at is usable - DATE(log_created_at) BETWEEN made it non-sargable.

Portal statement page and PDF now render in the client's currency, matching the guest view and the emailed statement.

Quick Send asks for confirmation; confirm-link extended to submit buttons.

Portal audit entries logged an empty name - client/post.php used , which only exists agent-side.
2026-08-28 16:38:42 -04:00
johnnyq
72e6f23e19 Send Email and Mark Sent modals for invoices and quotes (db 2.7.7)
Send Email opens a contact picker instead of hardcoding the primary contact; Mark Sent asks how it went out and takes a note. Both log recipients / method / note to the document history. Handlers moved GET -> POST.

Fixes two pre-existing bugs in the email path: archived contacts were still receiving billing copies, and every copy was addressed to the primary contact by name.
2026-08-28 13:31:22 -04:00
johnnyq
27c5502de2 Index the per-parent child fetches and the mail queue loop (db 2.7.6) 2026-08-28 00:11:22 -04:00
johnnyq
8f884f789a Cleanup - fix two broken script paths and drop 29 dead/duplicate files (348KB of unused FullCalendar themes) 2026-08-28 00:01:44 -04:00
johnnyq
0838ed07ec Add indexes on the client-scoped columns (db 2.7.5)
None of the *_client_id columns carried an index, so agent/includes/inc_all_client.php was doing a full table scan per badge count before the page rendered a byte - 27 of them. The main agent context runs 8 counts and the admin context none, which is why the client side nav was the only one that felt slow.

24 indexes, shaped (<entity>_client_id, <entity>_archived_at) where the query pairs the two and the client column alone otherwise. The archived column is always trailing and never an index of its own - on a healthy instance nearly every row has it NULL, so it cannot lead. recurring_tickets, services, invoices, recurring_invoices and calendar_events get a single column because their queries carry no archived filter; invoices is in that group because the money total there spans archived rows on purpose. payments.payment_invoice_id and transfers.transfer_revenue_id are join keys rather than client scoping but sit on the same page's critical path.

Migration checks information_schema.STATISTICS before each ALTER, since MySQL has no ADD INDEX IF NOT EXISTS and re-adding is an error - safe to re-run and safe where an index was added by hand. db.sql carries the same keys so fresh installs skip the update step.

Wider than the side nav: these are the columns clientScopeSql() filters on, so every client-scoped list page was paying for their absence. Expect the ALTERs to be the slow part of the upgrade on a mature instance.
2026-08-27 22:59:14 -04:00
johnnyq
12ed62326a Add Holiday / Closure Days to SLA to pause SLA timer on defined days, also has a US Holiday Importer 2026-08-27 17:58:02 -04:00
johnnyq
069f587c1d Implemented Check for updates which removs the last shell exec from web ui, and reimplemented db_update switch to update_cli.php 2026-08-26 23:38:23 -04:00
johnnyq
14c38b9814 Remove DB Update from WebUI as this is handled by the update_cli backend 2026-08-26 22:59:17 -04:00
johnnyq
51c925522c Remove thr web updater this is now either queued from the web or ran from the shell to update 2026-08-26 22:53:29 -04:00
johnnyq
e637da615e Added More Meaningful nothing matches filters or no records exist 2026-08-26 15:12:16 -04:00
johnnyq
806732c8f5 Display Phone number Country Codes 2026-08-26 14:19:32 -04:00
johnnyq
96f2c697c6 use intl js lib across all phone number fields 2026-08-26 13:53:27 -04:00
johnnyq
c6d642fbe7 Use new lte skin preview class for themes instead of colored circles 2026-08-25 18:31:33 -04:00
johnnyq
fdc2a8c2c3 Switch some bg-primary to bg-blue so they are consistent across themes, use new bs5 to reduce width on certain form inputs 2026-08-25 17:44:18 -04:00
johnnyq
1381add82b Feature: Added network IPs section to document network IP and their hostnames 2026-08-25 12:19:02 -04:00
johnnyq
ffda605195 Add Fake Demo Data Seed stretching over 2 year span 2026-08-24 16:44:09 -04:00
johnnyq
6df101c217 Css fixes 2026-08-16 22:25:05 -04:00
johnnyq
35ddd1a64d Feature: Designate a client record as your organization currently only provdes a direct link when you click company name in top of the side nav 2026-08-15 20:36:56 -04:00
johnnyq
6af0634f47 Ticket SLA: Fix on hold to pause only after first reply, show resolved closed and onhold as fixed on paused sla in the list 2026-08-15 19:55:40 -04:00
johnnyq
6ef84c4547 Feature: Add Ticket Canned Responses 2026-08-15 17:29:17 -04:00
johnnyq
4c4c172f59 Feature: queued Updates which now eliminates the need for shell_exec from the webui, but if enabled you can still update from the webui the old way too 2026-08-15 16:41:42 -04:00
johnnyq
bdab434707 Fix Margins in various areas 2026-08-15 13:34:38 -04:00
johnnyq
56d9e04eac Update Theme select to use new bootstrap 5 radio button 2026-08-15 13:17:32 -04:00
johnnyq
2375e69f2d Update badge classes to bg 2026-08-15 13:00:41 -04:00
johnnyq
c44fa30792 Fix Mail settings tabs regression and user menu coloring 2026-08-15 12:29:39 -04:00
johnnyq
e2512b0f86 Fixed Side nav titles, Fixed ajax on bootstrap modals, fixed pagination all regressions 2026-08-14 18:32:33 -04:00
johnnyq
bbbfff7413 All Jquery removed replaced with stand JS and non jqery dependent libs 2026-08-14 17:28:06 -04:00
johnnyq
dc6b191eed Update Font, Migrated away from JQUERY dependent libs: toastr to bootstrap5 toasts, daterangepicker to flatpickr, select2 to Tom Select, InputMask to IMask 2026-08-14 17:08:40 -04:00
johnnyq
a084e37c39 Initial migration from AdminLTE 3 to 4, bootstrap 4 to 5 2026-08-14 13:22:11 -04:00
wrongecho
691059aab2 Debug - bump php memory flag to 512M 2026-08-13 09:45:01 +01:00
johnnyq
076f45abb0 Remove Stale SMTP IMAP host if switching Standard SMTP.IMAP to OAUTH 2026-08-09 23:59:54 -04:00
johnnyq
f7548af234 Fix Export Missing coluns due to the select star sweep 2026-08-09 14:33:06 -04:00
johnnyq
a96324628a Fix broken cron page due to the select * sweep, note thi sdid not break cron itself 2026-08-09 13:27:51 -04:00
johnnyq
605c7811e4 Fix AI 2026-08-06 19:18:34 -04:00
johnnyq
64423cbefa Fix Client PDF Export 2026-08-06 18:51:09 -04:00
johnnyq
f8899e592f More Select * Queries convert 2026-08-06 13:57:46 -04:00
johnnyq
108781db5b Move more select * to column select for further optimization 2026-08-06 13:44:02 -04:00
johnnyq
b3744e9ed5 More sweeps to replace select * with actual returned column names dramatically reduces php memory usage and speeds up processing dramatically especially in the crons since they run all the time 2026-08-06 13:10:23 -04:00
johnnyq
b8c9d5b4cf Query Optimization: Select only needed columns instead of SELECT * on looped queries 2026-08-06 12:59:43 -04:00
johnnyq
c30c12674a Sync DB Seed data between setup and setup cli 2026-08-03 22:41:31 -04:00
johnnyq
0311a3d056 Fix remaing undefine vars for audits and flash messages 2026-08-03 15:40:44 -04:00
johnnyq
ffe32adbd3 Move categories and tag types to a left side nav instead of top nav 2026-08-03 12:54:33 -04:00
johnnyq
6b5be0f881 Rework Update UI and fix banch 2026-08-02 18:07:24 -04:00
johnnyq
a27019511e Remove unused overdue invoice setting move master cron switch out of notificaiton and into cron 2026-08-02 17:22:28 -04:00
johnnyq
e793804203 Migrate credential password from varbinary to varchar and set max length for passwords 2026-08-02 16:18:36 -04:00