johnnyq
3838d052f0
Add secure file handler for client ticket attachment and file view along with client and contact permission isolation, add the handler links in asset and contact
2026-07-15 18:35:32 -04:00
johnnyq
c8f616ebee
Ticket UI: Migrated ticket Attachments to a small table class
2026-07-15 13:52:52 -04:00
johnnyq
33a2929ab6
Feature: Secure File Download Handler for ticket attachments Implemented
2026-07-15 13:42:19 -04:00
johnnyq
df3a24eab7
Feature: Secure File Download Handler Implemented
2026-07-15 13:11:02 -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
c3a438ee59
Replace the rest of the getFallBack Functions with simple ?: '-'
2026-07-14 19:17:26 -04:00
johnnyq
bcb244c245
Update skipped function renames in anything named vendor
2026-07-14 19:09:32 -04:00
johnnyq
cddcedbf1c
Cleanup format Functions
2026-07-14 18:28:53 -04:00
johnnyq
eac913eb07
Remove function removeEmoji() as this is no longer needed as the DB Charset is set to the standard utf8mb4 across the board
2026-07-14 18:27:02 -04:00
johnnyq
ee7ef71855
Correct plugins to libs path for zapCal library in functions
2026-07-14 18:15: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
71f7299337
Replace Function roundToNearest15() with roundToNearest15Min()
2026-07-14 17:55:59 -04:00
johnnyq
21a23e79b0
Replace Function getSSL() with getSslCertificate()
2026-07-14 17:54:31 -04:00
johnnyq
52b5063066
Replace Function getDomainRecords() with getDnsRecords()
2026-07-14 17:53:16 -04:00
johnnyq
8f824a1868
Replace Function shortenClient() with shortenClientName()
2026-07-14 17:46:25 -04:00
johnnyq
9d540f4bfe
Replace Function customAction() with triggerCustomAction()
2026-07-14 17:43:55 -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
31cc3f3ac3
Replace Function strtoAZaz09() with toAlphanumeric()
2026-07-14 17:30:13 -04:00
johnnyq
8de3cd300d
Replace Function key32gen() with generateTotpSecret()
2026-07-14 17:27:02 -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
d62b6e2ae7
Update comment
2026-07-14 16:58:16 -04:00
johnnyq
5eb9f6b6d5
Fix weak RNG in key32gen (TOTP secret generation)
...
Replace srand()/rand() with random_int() for cryptographically secure,
unbiased key generation. The previous implementation seeded rand() from
microtime(), making TOTP secrets predictable if the generation time
could be approximated. Also removes modulo bias and dead while(1)
wrapper.
Output format is unchanged: 32 chars from the base32 alphabet (A-Z,
2-7), so existing TOTP enrollments are unaffected.
2026-07-14 16:57:16 -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
a2a96f9752
Removed unused legacy functions and split the functions into their own file and use function.php to call them
2026-07-14 16:32:45 -04:00
johnnyq
c1447f5bad
Bump TinyMCE from 8.6.0 to 8.7.0
2026-07-14 16:08:05 -04:00
johnnyq
79032de032
Certificates: Allow to search by description
2026-07-14 11:23:54 -04:00
johnnyq
b81e57db28
Show Invoice Stats in Invoice only for user permissable clients
2026-07-13 17:19:32 -04:00
johnnyq
95441dc3bb
Show 7 Characters of client name in client side nav instead of Abbreviation
2026-07-13 13:29:24 -04:00
johnnyq
fe7e9b2398
Main Side Nav: Only shows counts to the user who has permission to see
2026-07-13 13:08:03 -04:00
johnnyq
91e9f6097b
Client Overview Side Nav: Only shows counts to the user who has permission to see
2026-07-13 12:45:59 -04:00
johnnyq
0f0aa89f75
Bump ImapEngine from 1.25.0 to 1.25.1
2026-07-10 18:37:16 -04:00
johnnyq
8da3a107fb
Rename plugins to libs and update all file references
2026-07-10 13:24:20 -04:00
johnnyq
7ba1571400
Revert Billable placement in tickets, create CONTRIBUTING.md file
2026-07-10 12:32:46 -04:00
johnnyq
d2026a417f
Add Client to top of the modals trips, ticket, recurring ticket, invoice, recurring invoice, quote and rework the UI for Ticket/Recurring ticket create Put Billable beside subject so it doesnt take up a whole row
2026-07-09 18:50:31 -04:00
johnnyq
fc59481476
Enforce Client Access in client selectbox
2026-07-09 16:17:00 -04:00
johnnyq
21328c2dee
clientEnforcement on Recurring Invoices and payments listings
2026-07-09 16:13:39 -04:00
johnnyq
317fe91359
Add Missing clientEnforcement in various modals, already handled on POST also add client selection in edit trip and enforce client permissions on trips
2026-07-09 16:07:54 -04:00
johnnyq
68f705b135
Set EnforceClientAccess Perms throughout expenses, modals and post along with listing
2026-07-09 14:51:51 -04:00
johnnyq
c01645c4e2
Expense: On create enforce client Access only if Client is selected
2026-07-08 18:13:14 -04:00
johnnyq
ae5c9fe8ec
Mail Parser: Add logic when creating ITFlow folder to determine if the namespace is INBOX. or can be created in root directory. Fixes issue with CPanel Dovecot Maildir++ configuration where their namespace is just INBOX
2026-07-08 15:58:00 -04:00
johnnyq
de6d2b1595
OAUTH Send Quote Fix: was reading smtp host var needed to read smtp provider as smtp host is not filled in when OAUTH2 is selected
2026-07-07 16:20:21 -04:00