johnnyq
ac598f6379
Fix system-generated ticket replies booking fake time worked
2026-08-06 19:25:39 -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
c30c12674a
Sync DB Seed data between setup and setup cli
2026-08-03 22:41:31 -04:00
wrongecho
5ee1c9580f
Enhance .htaccess rules
2026-08-03 17:51:04 +01: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
ae468d6cee
Encrypted backups with types, scheduling and CLI restore
...
Backups are now AES-256 encrypted zips in three types (full, database
only, master key), catalogued in a new backups table, built by cron rather
than the web request, and kept under uploads/backups with retention in the
nightly job. The encryption key is one value per install held in config.php,
never in the database and never in the file name.
Restore is shared by the setup wizard and the new scripts/restore_cli.php,
which is the only path without an upload size limit. It verifies the key and
unpacks the archive before dropping anything, and dumps the current database
first so a failed import is rolled back.
A backup dumps, zips and encrypts for minutes without issuing a query, so on
a server with a short wait_timeout the connection is closed underneath it and
the UPDATE marking the backup complete is what fails - long after the archive
was written correctly. The connection is now held open for the job and
re-established before any write that follows long file work, including the
database phase of a restore. Retention recovers rows a dropped connection
left behind: still Running after six hours becomes Complete if the archive is
on disk, Failed if it is not.
cron.php's own failure path is hardened to match. It recorded job failures
through the same connection the failing job had just killed, so an uncaught
exception ended the dispatch and no trace of the original error survived.
Failures now also echo to stdout, so cron mails something useful when the
database is unreachable.
Security: the setup wizard's restore step is now closed on any install that
has users, whatever config.php says. $config_enable_setup defaulted to
enabled when the flag was absent, and the flag is only written at the end of
a successful install, so an install abandoned partway left an unauthenticated
endpoint that would drop every table, import an attacker-supplied archive,
and overwrite uploads/ including the .htaccess that stops PHP running there.
Affects 26.07 and earlier. Restoring over a live install is now CLI only.
2026-07-31 16:18:20 -04:00
johnnyq
fc5cdeea82
Add UI Elements for Asset Notes similar to contact notes
2026-07-29 14:13:55 -04:00
johnnyq
78e7e1c49e
Remove Normalize Scripts
2026-07-28 17:46:39 -04:00
johnnyq
c5ff3e2a3f
Normalize line endings to LF; add .gitattributes and .editorconfig
2026-07-28 17:45:52 -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
63ad3256ee
CLI Setup: Add repo_branch option defaults to master
2026-06-24 13:18:01 -04:00
johnnyq
78971d1ccb
Setup cli: add categories to mimic setup web ui
2026-04-04 18:09:29 -04:00
johnnyq
0a30300bde
replace all instances of mysqli_fetch_array with mysqli_fetch_assoc for better performance and memory usage
2026-01-14 17:30:23 -05:00
johnnyq
61dedb7e7b
Removed old Cron Files from /scripts/ removed old sendmail function along with PHPMailer requirments in functions.php, removed debug php ext check for php-mime-mail-parser and php-imap
2025-11-08 12:56:16 -05:00
johnnyq
6d15640ae4
[Feature] Recurring Ticket - Add Three Day and Biweekly to the Frequency options
2025-10-29 18:15:21 -04:00
johnnyq
35a7506c26
Copy crons from /scripts to /cron, added custom directories for api/v1/, /setup, /cron and /scripts
2025-10-07 13:55:54 -04:00
johnnyq
00f5198bed
Update appNotidfy links to use Absolute paths, updated gitignore
2025-09-25 13:31:16 -04:00
johnnyq
edabc5c33f
rename /user/ to /agent/ and update links to use agent/ instead
2025-09-23 18:04:23 -04:00
wrongecho
058f79d0a1
Fix file paths in cron notifs to new structure
2025-09-23 08:38:29 +01:00
johnnyq
04b29d43df
Update Agent ticket access path in emails to new /user/ path
2025-09-15 17:28:58 -04:00
johnnyq
aa516529e7
Another attempt at fix automatic recurring payments expense
2025-09-04 17:56:00 -04:00
johnnyq
2283ad0eb2
Fix Adding Expense on recurring stripe payments in cron
2025-09-04 17:44:34 -04:00
johnnyq
fd73f132bc
Fixed a few table names in Stripe Migration, Removed legacy stripe and AI settings
2025-08-28 11:44:29 -04:00
Marcus Hill
5c93753b7e
Rm extra unnecessary line in overdue invoice email
2025-08-16 15:17:48 +01:00
johnnyq
7172c92f02
Update Database updates patch in update_cli
2025-08-08 15:09:03 -04:00
johnnyq
9caa42975d
rename get_settings.php to load_global_settings.php and update all requires
2025-08-06 17:48:23 -04:00
johnnyq
31a89c0641
Update Recurring Payment Auto pay in cron
2025-07-09 17:05:56 -04:00
johnnyq
a6f83493f8
Fix Payment Method Additons in setup
2025-07-07 23:22:35 -04:00
johnnyq
c76da10747
Add Payment Method to UI and switch Add Payment modals to use the new table
2025-07-07 16:37:51 -04:00
johnnyq
8f704dade8
Recurring Payments now make the payment on the invoice Due Date instead of when the recurring invoice is generated
2025-06-18 15:32:22 -04:00
johnnyq
e7e7272002
Migrated Vendor Templates to its own table, lots of code modifications here
2025-06-17 22:44:54 -04:00
johnnyq
7c3332570a
Add Ticket Category UI for Recurring Tickets
2025-06-11 18:11:08 -04:00
Marcus Hill
c486682a0e
Cron mail queue - fix app_log_type not being one of available enums
2025-05-27 14:05:09 +01:00
wrongecho
e1f212d30d
Start recording ticket source (API, Email, Portal, Agent)
2025-04-28 14:51:38 +01:00
wrongecho
393c0b8c11
Recurring invoices
...
- Fix the delete link
- Cron should only flag recurring invoices that with a next-run in the past if the recurring invoice is active
2025-03-31 08:28:22 +01:00
johnnyq
2fb75e6d67
Uncommented out temp comment check cli runtime
2025-03-27 12:40:43 -04:00
Johnny
810af638a3
Merge pull request #1193 from itflow-org/cron-recurring-notify
...
Recurring items with next-run dates in the past
2025-03-27 12:39:27 -04:00
johnnyq
9223b8cfb1
Fixed some renamed vars
2025-03-27 12:29:55 -04:00
wrongecho
b7df21a663
Notify if a recurring ticket, invoice or expense has a next run date in the past - it needs to be manually adjusted for cron to pick it up again. Also, bugfix bulk recurring ticket delete.
2025-03-27 16:29:39 +00:00
johnnyq
5b89e3dbee
Add Phone Country code in even more places
2025-03-26 14:04:47 -04:00
johnnyq
6a26b611fa
Remove Phone Masking option in favor of Country Codes
2025-03-26 11:10:51 -04:00
wrongecho
e69d69760d
Cron - Only notify on certificates expiring in 45 days if they are valid for longer than 90 (i.e. not LE)
2025-03-20 13:53:53 +00:00
johnnyq
508af6a80f
Fix some Database update logic
2025-03-14 17:15:10 -04:00
johnnyq
7150b1545a
Moved files check_login.php, get_settings.php, settings_localization_array.php, inc_set_timezone.php into the includes folder, we also moved /client/check_login.php into client/includes/
2025-03-13 17:55:31 -04:00
johnnyq
e93704bbdb
Completely renamed everything login to credential including tables added cascading deletion to the multi to multi tables
2025-03-12 21:28:50 -04:00
johnnyq
c0db914213
Added Recurring Ticket Reference to Tickets
2025-03-12 13:56:36 -04:00
johnnyq
c7f4e48a27
A Few more places to update recurring invoice vars
2025-03-11 22:38:13 -04:00
johnnyq
87c1a95b06
Few more places for recurring invoice vars
2025-03-11 22:26:52 -04:00
johnnyq
619b93a545
Renamed Recurring to recurring_invoices updated a large portion of code, and updated many other fields to reflect recurring_invoice and not just recurring
2025-03-11 22:08:37 -04:00