From 3218ea85b206e5c9137542f88e3b8c5974a16c62 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sat, 22 Feb 2025 17:15:41 -0500 Subject: [PATCH 01/33] Bug Fix Contact Detail Modal not showing Credentials or Tickets --- ajax/ajax_contact_details.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ajax/ajax_contact_details.php b/ajax/ajax_contact_details.php index e081abb3..07d9df15 100644 --- a/ajax/ajax_contact_details.php +++ b/ajax/ajax_contact_details.php @@ -402,7 +402,7 @@ ob_start(); -
+
@@ -499,7 +499,7 @@ ob_start(); -
+
From 95855fc22ee01570bede0b76fcd1c40a293b77d2 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sat, 22 Feb 2025 17:27:16 -0500 Subject: [PATCH 02/33] Update links in client overview --- client_overview.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client_overview.php b/client_overview.php index e90f8c6c..b4b1eb6e 100644 --- a/client_overview.php +++ b/client_overview.php @@ -378,7 +378,7 @@ $sql_asset_retired = mysqli_query( ?>

- + --

- + --

- + --

@@ -496,7 +496,7 @@ $sql_asset_retired = mysqli_query( ?>

- + --

- + --

- + --

From 9b109c7abd3f9872a9d13c17e72ce3f173d42c51 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sat, 22 Feb 2025 17:29:19 -0500 Subject: [PATCH 03/33] Update links in project list --- projects.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects.php b/projects.php index 3f5965e9..d97f53d7 100644 --- a/projects.php +++ b/projects.php @@ -170,7 +170,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); $client_id = intval($row['client_id']); $client_name = nullable_htmlentities($row['client_name']); if ($client_name) { - $client_name_display = "$client_name"; + $client_name_display = "$client_name"; } else { $client_name_display = "-"; } From a994bb7e8cbdd357c8b1832a55a2980c99ac9813 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sat, 22 Feb 2025 17:37:35 -0500 Subject: [PATCH 04/33] Update Links on Project and and client listing --- clients.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/clients.php b/clients.php index bbd5293a..3940b11b 100644 --- a/clients.php +++ b/clients.php @@ -398,7 +398,14 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); if (!empty($contact_name)) { ?>
- + + + +
Date: Sun, 23 Feb 2025 12:23:13 -0500 Subject: [PATCH 05/33] Fix missing public key var in certificate edit --- ajax/ajax_certificate_edit.php | 1 + 1 file changed, 1 insertion(+) diff --git a/ajax/ajax_certificate_edit.php b/ajax/ajax_certificate_edit.php index 2c7ec75d..157675ec 100644 --- a/ajax/ajax_certificate_edit.php +++ b/ajax/ajax_certificate_edit.php @@ -12,6 +12,7 @@ $certificate_description = nullable_htmlentities($row['certificate_description'] $certificate_domain = nullable_htmlentities($row['certificate_domain']); $certificate_domain_id = intval($row['certificate_domain_id']); $certificate_issued_by = nullable_htmlentities($row['certificate_issued_by']); +$certificate_public_key = nullable_htmlentities($row['certificate_public_key']); $certificate_expire = nullable_htmlentities($row['certificate_expire']); $certificate_created_at = nullable_htmlentities($row['certificate_created_at']); $client_id = intval($row['certificate_client_id']); From 66d43d8a95041273bed9aa1dbc799f3ba6673913 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sun, 23 Feb 2025 12:30:47 -0500 Subject: [PATCH 06/33] Dashboard When clicking domains or certificates sort by expire date asc --- dashboard.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dashboard.php b/dashboard.php index 9bd8747e..cae20984 100644 --- a/dashboard.php +++ b/dashboard.php @@ -586,7 +586,7 @@ if ($user_config_dashboard_technical_enable == 1) {
- +

New Contacts

@@ -625,7 +625,7 @@ if ($user_config_dashboard_technical_enable == 1) {
- +

Expiring Domains

@@ -638,7 +638,7 @@ if ($user_config_dashboard_technical_enable == 1) {
- +

Expiring Certificates

From 8e66434ec4aa911dfa08fac3ccbce5374c9de1ab Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sun, 23 Feb 2025 15:48:47 -0500 Subject: [PATCH 07/33] Updated asset details Link in rack, fixed opening asset details modal when clicking on a connected asset in asset details page --- asset_details.php | 1 + client_racks.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/asset_details.php b/asset_details.php index ad7f816b..f0ddb509 100644 --- a/asset_details.php +++ b/asset_details.php @@ -460,6 +460,7 @@ if (isset($_GET['asset_id'])) { // Show either "-" or "AssetName - Port" if ($connected_asset_name) { $connected_to_display = "
diff --git a/client_racks.php b/client_racks.php index 7e36c79a..acd1a575 100644 --- a/client_racks.php +++ b/client_racks.php @@ -261,7 +261,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); $icon = $d['icon']; // already from getAssetIcon ?> - From 02c1446cb82e40b8303e625dd28990d0a22d3fe6 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 12:42:31 -0500 Subject: [PATCH 08/33] Fix Transfer Asset(s) to Client --- post/user/asset.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/post/user/asset.php b/post/user/asset.php index 727d1040..46db87ad 100644 --- a/post/user/asset.php +++ b/post/user/asset.php @@ -295,10 +295,9 @@ if (isset($_POST['bulk_transfer_client_asset'])) { while ($row = mysqli_fetch_array($sql_interfaces)) { $interface_name = sanitizeInput($row['interface_name']); $interface_mac = sanitizeInput($row['interface_mac']); - $interface_port = sanitizeInput($row['interface_port']); $interface_primary = intval($row['interface_primary']); - mysqli_query($mysqli,"INSERT INTO asset_interfaces SET interface_name = '$interface_name', interface_mac = '$interface_mac', interface_port = '$interface_port', interface_primary = $interface_primary, interface_asset_id = $new_asset_id"); + mysqli_query($mysqli,"INSERT INTO asset_interfaces SET interface_name = '$interface_name', interface_mac = '$interface_mac', interface_primary = $interface_primary, interface_asset_id = $new_asset_id"); } @@ -331,7 +330,7 @@ if (isset($_POST['bulk_transfer_client_asset'])) { $_SESSION['alert_message'] = "Transferred $asset_count assets to $new_client_name."; } - header("Location: client_assets.php?client_id=$new_client_id&asset_id=$new_asset_id"); + header("Location: " . $_SERVER["HTTP_REFERER"]); } if (isset($_POST['bulk_assign_asset_contact'])) { From a08393b4d41f5a349f7a7e529f13ed651a33a146 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 12:52:35 -0500 Subject: [PATCH 09/33] Fix Redirect Link when scheduling tickets that conflict with other scheduled tickets --- post/user/ticket.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/post/user/ticket.php b/post/user/ticket.php index 720d6c97..e9319a40 100644 --- a/post/user/ticket.php +++ b/post/user/ticket.php @@ -2430,7 +2430,7 @@ if (isset($_POST['edit_ticket_schedule'])) { } else { $_SESSION['alert_type'] = "error"; $_SESSION['alert_message'] = "Ticket scheduled for $email_datetime. Yet there are conflicting tickets scheduled for the same time:
" . implode(",
", $conflicting_tickets); - header("Location: calendar_events.php"); + header("Location: calendar.php"); } } From 9aeda2ce538faa04e73a88c3333bde2c6188dfae Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 13:18:32 -0500 Subject: [PATCH 10/33] Set Array instead of selecting Days to Expire in client overview --- client_overview.php | 135 +++++++++++++++++++++----------------------- 1 file changed, 63 insertions(+), 72 deletions(-) diff --git a/client_overview.php b/client_overview.php index b4b1eb6e..aad38117 100644 --- a/client_overview.php +++ b/client_overview.php @@ -2,8 +2,7 @@ require_once "includes/inc_all_client.php"; -// Get expiration days from select box -$expiration_days = isset($_GET['expiration_days']) ? intval($_GET['expiration_days']) : 90; +$expiration_days = [7, 30, 90]; // Array of expiration days $sql_recent_activities = mysqli_query( $mysqli, @@ -68,70 +67,72 @@ $sql_stale_tickets = mysqli_query( LIMIT 5" ); -// Get Domains Expiring -$sql_domains_expiring = mysqli_query( - $mysqli, - "SELECT * FROM domains - WHERE domain_client_id = $client_id - AND domain_expire IS NOT NULL - AND domain_archived_at IS NULL - AND domain_expire > CURRENT_DATE - AND domain_expire < CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY domain_expire ASC - LIMIT 5" -); +foreach ($expiration_days as $days) { + // Get Domains Expiring + $sql_domains_expiring = mysqli_query( + $mysqli, + "SELECT * FROM domains + WHERE domain_client_id = $client_id + AND domain_expire IS NOT NULL + AND domain_archived_at IS NULL + AND domain_expire > CURRENT_DATE + AND domain_expire < CURRENT_DATE + INTERVAL $days DAY + ORDER BY domain_expire ASC + LIMIT 5" + ); -// Get Certificates Expiring -$sql_certificates_expiring = mysqli_query( - $mysqli, - "SELECT * FROM certificates - WHERE certificate_client_id = $client_id - AND certificate_expire IS NOT NULL - AND certificate_archived_at IS NULL - AND certificate_expire > CURRENT_DATE - AND certificate_expire < CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY certificate_expire ASC - LIMIT 5" -); + // Get Certificates Expiring + $sql_certificates_expiring = mysqli_query( + $mysqli, + "SELECT * FROM certificates + WHERE certificate_client_id = $client_id + AND certificate_expire IS NOT NULL + AND certificate_archived_at IS NULL + AND certificate_expire > CURRENT_DATE + AND certificate_expire < CURRENT_DATE + INTERVAL $days DAY + ORDER BY certificate_expire ASC + LIMIT 5" + ); -// Get Licenses Expiring -$sql_licenses_expiring = mysqli_query( - $mysqli, - "SELECT * FROM software - WHERE software_client_id = $client_id - AND software_expire IS NOT NULL - AND software_archived_at IS NULL - AND software_expire > CURRENT_DATE - AND software_expire < CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY software_expire ASC - LIMIT 5" -); + // Get Licenses Expiring + $sql_licenses_expiring = mysqli_query( + $mysqli, + "SELECT * FROM software + WHERE software_client_id = $client_id + AND software_expire IS NOT NULL + AND software_archived_at IS NULL + AND software_expire > CURRENT_DATE + AND software_expire < CURRENT_DATE + INTERVAL $days DAY + ORDER BY software_expire ASC + LIMIT 5" + ); -// Get Asset Warranties Expiring -$sql_asset_warranties_expiring = mysqli_query( - $mysqli, - "SELECT * FROM assets - WHERE asset_client_id = $client_id - AND asset_warranty_expire IS NOT NULL - AND asset_archived_at IS NULL - AND asset_warranty_expire > CURRENT_DATE - AND asset_warranty_expire < CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY asset_warranty_expire ASC - LIMIT 5" -); + // Get Asset Warranties Expiring + $sql_asset_warranties_expiring = mysqli_query( + $mysqli, + "SELECT * FROM assets + WHERE asset_client_id = $client_id + AND asset_warranty_expire IS NOT NULL + AND asset_archived_at IS NULL + AND asset_warranty_expire > CURRENT_DATE + AND asset_warranty_expire < CURRENT_DATE + INTERVAL $days DAY + ORDER BY asset_warranty_expire ASC + LIMIT 5" + ); -// Get Assets Retiring 7 Year -$sql_asset_retire = mysqli_query( - $mysqli, - "SELECT * FROM assets - WHERE asset_client_id = $client_id - AND asset_install_date IS NOT NULL - AND asset_archived_at IS NULL - AND asset_install_date + INTERVAL 7 YEAR > CURRENT_DATE -- Not yet expired - AND asset_install_date + INTERVAL 7 YEAR <= CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY asset_install_date ASC - LIMIT 5" -); + // Get Assets Retiring 7 Year + $sql_asset_retire = mysqli_query( + $mysqli, + "SELECT * FROM assets + WHERE asset_client_id = $client_id + AND asset_install_date IS NOT NULL + AND asset_archived_at IS NULL + AND asset_install_date + INTERVAL 7 YEAR > CURRENT_DATE + AND asset_install_date + INTERVAL 7 YEAR <= CURRENT_DATE + INTERVAL $days DAY + ORDER BY asset_install_date ASC + LIMIT 5" + ); +} /* * EXPIRED ITEMS @@ -354,16 +355,6 @@ $sql_asset_retired = mysqli_query(
Upcoming Expirations
-
-
- - - -
From 6cc6e80f922edb24d074a64849b24b03c27e8463 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 16:19:22 -0500 Subject: [PATCH 11/33] Fixed ticket link for agent email notifications on scheduling tickets --- client_overview.php | 127 ++++++++++++++++++------------------ includes/inc_all_client.php | 24 +++---- post/user/ticket.php | 4 +- 3 files changed, 76 insertions(+), 79 deletions(-) diff --git a/client_overview.php b/client_overview.php index aad38117..17feeda9 100644 --- a/client_overview.php +++ b/client_overview.php @@ -2,7 +2,6 @@ require_once "includes/inc_all_client.php"; -$expiration_days = [7, 30, 90]; // Array of expiration days $sql_recent_activities = mysqli_query( $mysqli, @@ -60,79 +59,77 @@ $sql_stale_tickets = mysqli_query( $mysqli, "SELECT * FROM tickets WHERE ticket_client_id = $client_id - AND ticket_updated_at < CURRENT_DATE - INTERVAL 3 DAY + AND ticket_updated_at < CURRENT_DATE - INTERVAL 7 DAY AND ticket_resolved_At IS NULL AND ticket_closed_at IS NULL ORDER BY ticket_updated_at ASC LIMIT 5" ); -foreach ($expiration_days as $days) { - // Get Domains Expiring - $sql_domains_expiring = mysqli_query( - $mysqli, - "SELECT * FROM domains - WHERE domain_client_id = $client_id - AND domain_expire IS NOT NULL - AND domain_archived_at IS NULL - AND domain_expire > CURRENT_DATE - AND domain_expire < CURRENT_DATE + INTERVAL $days DAY - ORDER BY domain_expire ASC - LIMIT 5" - ); +// Get Domains Expiring +$sql_domains_expiring = mysqli_query( + $mysqli, + "SELECT * FROM domains + WHERE domain_client_id = $client_id + AND domain_expire IS NOT NULL + AND domain_archived_at IS NULL + AND domain_expire > CURRENT_DATE + AND domain_expire < CURRENT_DATE + INTERVAL 45 DAY + ORDER BY domain_expire ASC + LIMIT 5" +); - // Get Certificates Expiring - $sql_certificates_expiring = mysqli_query( - $mysqli, - "SELECT * FROM certificates - WHERE certificate_client_id = $client_id - AND certificate_expire IS NOT NULL - AND certificate_archived_at IS NULL - AND certificate_expire > CURRENT_DATE - AND certificate_expire < CURRENT_DATE + INTERVAL $days DAY - ORDER BY certificate_expire ASC - LIMIT 5" - ); +// Get Certificates Expiring +$sql_certificates_expiring = mysqli_query( + $mysqli, + "SELECT * FROM certificates + WHERE certificate_client_id = $client_id + AND certificate_expire IS NOT NULL + AND certificate_archived_at IS NULL + AND certificate_expire > CURRENT_DATE + AND certificate_expire < CURRENT_DATE + INTERVAL 45 DAY + ORDER BY certificate_expire ASC + LIMIT 5" +); - // Get Licenses Expiring - $sql_licenses_expiring = mysqli_query( - $mysqli, - "SELECT * FROM software - WHERE software_client_id = $client_id - AND software_expire IS NOT NULL - AND software_archived_at IS NULL - AND software_expire > CURRENT_DATE - AND software_expire < CURRENT_DATE + INTERVAL $days DAY - ORDER BY software_expire ASC - LIMIT 5" - ); +// Get Licenses Expiring +$sql_licenses_expiring = mysqli_query( + $mysqli, + "SELECT * FROM software + WHERE software_client_id = $client_id + AND software_expire IS NOT NULL + AND software_archived_at IS NULL + AND software_expire > CURRENT_DATE + AND software_expire < CURRENT_DATE + INTERVAL 45 DAY + ORDER BY software_expire ASC + LIMIT 5" +); - // Get Asset Warranties Expiring - $sql_asset_warranties_expiring = mysqli_query( - $mysqli, - "SELECT * FROM assets - WHERE asset_client_id = $client_id - AND asset_warranty_expire IS NOT NULL - AND asset_archived_at IS NULL - AND asset_warranty_expire > CURRENT_DATE - AND asset_warranty_expire < CURRENT_DATE + INTERVAL $days DAY - ORDER BY asset_warranty_expire ASC - LIMIT 5" - ); +// Get Asset Warranties Expiring +$sql_asset_warranties_expiring = mysqli_query( + $mysqli, + "SELECT * FROM assets + WHERE asset_client_id = $client_id + AND asset_warranty_expire IS NOT NULL + AND asset_archived_at IS NULL + AND asset_warranty_expire > CURRENT_DATE + AND asset_warranty_expire < CURRENT_DATE + INTERVAL 45 DAY + ORDER BY asset_warranty_expire ASC + LIMIT 5" +); - // Get Assets Retiring 7 Year - $sql_asset_retire = mysqli_query( - $mysqli, - "SELECT * FROM assets - WHERE asset_client_id = $client_id - AND asset_install_date IS NOT NULL - AND asset_archived_at IS NULL - AND asset_install_date + INTERVAL 7 YEAR > CURRENT_DATE - AND asset_install_date + INTERVAL 7 YEAR <= CURRENT_DATE + INTERVAL $days DAY - ORDER BY asset_install_date ASC - LIMIT 5" - ); -} +// Get Assets Retiring 7 Year +$sql_asset_retire = mysqli_query( + $mysqli, + "SELECT * FROM assets + WHERE asset_client_id = $client_id + AND asset_install_date IS NOT NULL + AND asset_archived_at IS NULL + AND asset_install_date + INTERVAL 7 YEAR > CURRENT_DATE + AND asset_install_date + INTERVAL 7 YEAR <= CURRENT_DATE + INTERVAL 45 DAY + ORDER BY asset_install_date ASC + LIMIT 5" +); /* * EXPIRED ITEMS @@ -354,7 +351,7 @@ $sql_asset_retired = mysqli_query(
-
Upcoming Expirations
+
Expiring in the Next 45 Days
diff --git a/includes/inc_all_client.php b/includes/inc_all_client.php index 2588e9fa..aa25a4d6 100644 --- a/includes/inc_all_client.php +++ b/includes/inc_all_client.php @@ -216,18 +216,18 @@ if (isset($_GET['client_id'])) { // Expiring Items - // Count Domains Expiring within 90 Days + // Count Domains Expiring within 45 Days $row = mysqli_fetch_assoc(mysqli_query( $mysqli, "SELECT COUNT('domain_id') AS num FROM domains WHERE domain_client_id = $client_id AND domain_expire IS NOT NULL - AND domain_expire < CURRENT_DATE + INTERVAL 90 DAY + AND domain_expire < CURRENT_DATE + INTERVAL 45 DAY AND domain_archived_at IS NULL" )); - $num_domains_expiring = intval($row['num']); + $num_domains_expiring_warning= intval($row['num']); - // Count Domains Expired or within 14 days + // Count Domains Expired or within 7 days $row = mysqli_fetch_assoc(mysqli_query( $mysqli, "SELECT COUNT('domain_id') AS num FROM domains @@ -235,24 +235,24 @@ if (isset($_GET['client_id'])) { AND domain_expire IS NOT NULL AND ( domain_expire < CURRENT_DATE - OR domain_expire < CURRENT_DATE + INTERVAL 14 DAY + OR domain_expire < CURRENT_DATE + INTERVAL 7 DAY ) AND domain_archived_at IS NULL" )); - $num_domains_expired = intval($row['num']); + $num_domains_urgent = intval($row['num']); - // Count Certificates Expiring within 90 Days + // Count Certificates Expiring within 45 Days $row = mysqli_fetch_assoc(mysqli_query( $mysqli, "SELECT COUNT('certificate_id') AS num FROM certificates WHERE certificate_client_id = $client_id AND certificate_expire IS NOT NULL - AND certificate_expire < CURRENT_DATE + INTERVAL 90 DAY + AND certificate_expire < CURRENT_DATE + INTERVAL 45 DAY AND certificate_archived_at IS NULL" )); $num_certificates_expiring = intval($row['num']); - // Count Certificates Expired or within 14 days + // Count Certificates Expired or within 7 days $row = mysqli_fetch_assoc(mysqli_query( $mysqli, "SELECT COUNT('certificate_id') AS num FROM certificates @@ -260,7 +260,7 @@ if (isset($_GET['client_id'])) { AND certificate_expire IS NOT NULL AND ( certificate_expire < CURRENT_DATE - OR certificate_expire < CURRENT_DATE + INTERVAL 14 DAY + OR certificate_expire < CURRENT_DATE + INTERVAL 7 DAY ) AND certificate_archived_at IS NULL" )); @@ -272,7 +272,7 @@ if (isset($_GET['client_id'])) { "SELECT COUNT('software_id') AS num FROM software WHERE software_client_id = $client_id AND software_expire IS NOT NULL - AND software_expire < CURRENT_DATE + INTERVAL 90 DAY + AND software_expire < CURRENT_DATE + INTERVAL 45 DAY AND software_archived_at IS NULL" )); $num_software_expiring = intval($row['num']); @@ -285,7 +285,7 @@ if (isset($_GET['client_id'])) { AND software_expire IS NOT NULL AND ( software_expire < CURRENT_DATE - OR software_expire < CURRENT_DATE + INTERVAL 14 DAY + OR software_expire < CURRENT_DATE + INTERVAL 7 DAY ) AND software_archived_at IS NULL" )); diff --git a/post/user/ticket.php b/post/user/ticket.php index e9319a40..f66db5f0 100644 --- a/post/user/ticket.php +++ b/post/user/ticket.php @@ -2338,7 +2338,7 @@ if (isset($_POST['edit_ticket_schedule'])) { 'recipient' => $user_email, 'recipient_name' => $user_name, 'subject' => "Ticket Scheduled - [$ticket_prefix$ticket_number] - $ticket_subject", - 'body' => "Hello, " . $user_name . "

The ticket regarding $ticket_subject has been scheduled for $email_datetime.

--------------------------------
$ticket_link
--------------------------------

Please do not reply to this email.

Ticket: $ticket_prefix$ticket_number
Subject: $ticket_subject
Portal: https://$config_base_url/ticket.php?id=$ticket_id

~
$session_company_name
Support Department
$config_ticket_from_email", + 'body' => "Hello, " . $user_name . "

The ticket regarding $ticket_subject has been scheduled for $email_datetime.

--------------------------------
$ticket_link
--------------------------------

Please do not reply to this email.

Ticket: $ticket_prefix$ticket_number
Subject: $ticket_subject
Portal: https://$config_base_url/ticket.php?ticket_id=$ticket_id

~
$session_company_name
Support Department
$config_ticket_from_email", 'cal_str' => $cal_str ]; @@ -2491,7 +2491,7 @@ if (isset($_GET['cancel_ticket_schedule'])) { 'recipient' => $user_email, 'recipient_name' => $user_name, 'subject' => "Ticket Schedule Cancelled - [$ticket_prefix$ticket_number] - $ticket_subject", - 'body' => "Hello, " . $user_name . "

Scheduled work for the ticket regarding $ticket_subject has been cancelled.

--------------------------------
$ticket_link
--------------------------------

Please do not reply to this email.

Ticket: $ticket_prefix$ticket_number
Subject: $ticket_subject
Portal: https://$config_base_url/ticket.php?id=$ticket_id

~
$session_company_name
Support Department
$config_ticket_from_email", + 'body' => "Hello, " . $user_name . "

Scheduled work for the ticket regarding $ticket_subject has been cancelled.

--------------------------------
$ticket_link
--------------------------------

Please do not reply to this email.

Ticket: $ticket_prefix$ticket_number
Subject: $ticket_subject
Portal: https://$config_base_url/ticket.php?id=$ticket_id

~
$session_company_name
Support Department
$config_ticket_from_email", 'cal_str' => $cal_str ]; From f28c1ce3988056804d07ac071158c6959755ca1d Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 17:03:29 -0500 Subject: [PATCH 12/33] In-App alerts are spawned 1,7 and 45 days instead of 1,7,14,30 and 90 --- admin_settings_notification.php | 6 +++--- scripts/cron.php | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/admin_settings_notification.php b/admin_settings_notification.php index 1abc0982..05f326f8 100644 --- a/admin_settings_notification.php +++ b/admin_settings_notification.php @@ -37,7 +37,7 @@ require_once "includes/inc_all_admin.php";
+ @@ -702,6 +713,8 @@ if (isset($_GET['asset_id'])) { } $contact_licenses = implode(',', $contact_licenses_array); + $linked_software[] = $software_id; + ?> + - + @@ -862,10 +878,16 @@ if (isset($_GET['asset_id'])) { $file_icon = "file"; } $file_created_at = nullable_htmlentities($row['file_created_at']); + + $linked_files[] = $file_id; + ?> + +
"> +
+

Linked Services

+
+ +
+
+
+
+
Domain Expiration Notice
- (This setting triggers a notification when a domain is approaching its expiration date, specifically at 1, 7, 14, 30 and 90 days prior to expiry.) + (This setting triggers a notification when a domain is approaching its expiration date, specifically at 1, 7 and 45 days prior to expiry.)
@@ -54,7 +54,7 @@ require_once "includes/inc_all_admin.php";
Certificate Expiration Notice
- (This setting triggers a notification when a certificate is approaching its expiration date, specifically at 1, 7, 14, 30 and 90 days prior to expiry.) + (This setting triggers a notification when a certificate is approaching its expiration date, specifically at 1, 7 and 45 days prior to expiry.)
@@ -67,7 +67,7 @@ require_once "includes/inc_all_admin.php";
Asset Warranty Expiration Notice
- (This setting triggers a notification when an asset is approaching its expiration date, specifically at 1, 7, 14, 30 and 90 days prior to expiry.) + (This setting triggers a notification when an asset is approaching its expiration date, specifically at 1, 7 and 45 days prior to expiry.)
diff --git a/scripts/cron.php b/scripts/cron.php index 540496b1..160dc895 100644 --- a/scripts/cron.php +++ b/scripts/cron.php @@ -179,7 +179,7 @@ if ($config_whitelabel_enabled && !validateWhitelabelKey($config_whitelabel_key) if ($config_enable_alert_domain_expire == 1) { - $domainAlertArray = [1,7,14,30,90]; + $domainAlertArray = [1,7,45]; foreach ($domainAlertArray as $day) { @@ -209,7 +209,7 @@ if ($config_enable_alert_domain_expire == 1) { // CERTIFICATES EXPIRING -$certificateAlertArray = [1,7,14,30,90]; +$certificateAlertArray = [1,7,45]; foreach ($certificateAlertArray as $day) { @@ -239,7 +239,7 @@ foreach ($certificateAlertArray as $day) { // Asset Warranties Expiring -$warranty_alert_array = [1,7,14,30,90]; +$warranty_alert_array = [1,7,45]; foreach ($warranty_alert_array as $day) { From 2367ca225591157caf5b0d8b17deca644f37f1f8 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 17:24:43 -0500 Subject: [PATCH 13/33] Remove expire record limits and only include items expiring within 45 days instead of 90 in client overview --- client_overview.php | 49 ++++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/client_overview.php b/client_overview.php index 17feeda9..3417a6e0 100644 --- a/client_overview.php +++ b/client_overview.php @@ -62,10 +62,11 @@ $sql_stale_tickets = mysqli_query( AND ticket_updated_at < CURRENT_DATE - INTERVAL 7 DAY AND ticket_resolved_At IS NULL AND ticket_closed_at IS NULL - ORDER BY ticket_updated_at ASC - LIMIT 5" + ORDER BY ticket_updated_at ASC" ); +// 8 - 45 Day Warning + // Get Domains Expiring $sql_domains_expiring = mysqli_query( $mysqli, @@ -75,8 +76,7 @@ $sql_domains_expiring = mysqli_query( AND domain_archived_at IS NULL AND domain_expire > CURRENT_DATE AND domain_expire < CURRENT_DATE + INTERVAL 45 DAY - ORDER BY domain_expire ASC - LIMIT 5" + ORDER BY domain_expire ASC" ); // Get Certificates Expiring @@ -88,8 +88,7 @@ $sql_certificates_expiring = mysqli_query( AND certificate_archived_at IS NULL AND certificate_expire > CURRENT_DATE AND certificate_expire < CURRENT_DATE + INTERVAL 45 DAY - ORDER BY certificate_expire ASC - LIMIT 5" + ORDER BY certificate_expire ASC" ); // Get Licenses Expiring @@ -101,8 +100,7 @@ $sql_licenses_expiring = mysqli_query( AND software_archived_at IS NULL AND software_expire > CURRENT_DATE AND software_expire < CURRENT_DATE + INTERVAL 45 DAY - ORDER BY software_expire ASC - LIMIT 5" + ORDER BY software_expire ASC" ); // Get Asset Warranties Expiring @@ -114,8 +112,7 @@ $sql_asset_warranties_expiring = mysqli_query( AND asset_archived_at IS NULL AND asset_warranty_expire > CURRENT_DATE AND asset_warranty_expire < CURRENT_DATE + INTERVAL 45 DAY - ORDER BY asset_warranty_expire ASC - LIMIT 5" + ORDER BY asset_warranty_expire ASC" ); // Get Assets Retiring 7 Year @@ -127,8 +124,7 @@ $sql_asset_retire = mysqli_query( AND asset_archived_at IS NULL AND asset_install_date + INTERVAL 7 YEAR > CURRENT_DATE AND asset_install_date + INTERVAL 7 YEAR <= CURRENT_DATE + INTERVAL 45 DAY - ORDER BY asset_install_date ASC - LIMIT 5" + ORDER BY asset_install_date ASC" ); /* @@ -143,8 +139,7 @@ $sql_domains_expired = mysqli_query( AND domain_expire IS NOT NULL AND domain_archived_at IS NULL AND domain_expire < CURRENT_DATE - ORDER BY domain_expire ASC - LIMIT 5" + ORDER BY domain_expire ASC" ); // Get Certificates Expired @@ -155,8 +150,7 @@ $sql_certificates_expired = mysqli_query( AND certificate_expire IS NOT NULL AND certificate_archived_at IS NULL AND certificate_expire < CURRENT_DATE - ORDER BY certificate_expire ASC - LIMIT 5" + ORDER BY certificate_expire ASC" ); // Get Licenses Expired @@ -167,8 +161,7 @@ $sql_licenses_expired = mysqli_query( AND software_expire IS NOT NULL AND software_archived_at IS NULL AND software_expire < CURRENT_DATE - ORDER BY software_expire ASC - LIMIT 5" + ORDER BY software_expire ASC" ); // Get Asset Warranties Expired @@ -179,8 +172,7 @@ $sql_asset_warranties_expired = mysqli_query( AND asset_warranty_expire IS NOT NULL AND asset_archived_at IS NULL AND asset_warranty_expire < CURRENT_DATE - ORDER BY asset_warranty_expire ASC - LIMIT 5" + ORDER BY asset_warranty_expire ASC" ); // Get Retired Assets @@ -191,8 +183,7 @@ $sql_asset_retired = mysqli_query( AND asset_install_date IS NOT NULL AND asset_archived_at IS NULL AND asset_install_date + INTERVAL 7 YEAR < CURRENT_DATE -- Assets retired (installed more than 7 years ago) - ORDER BY asset_install_date ASC - LIMIT 5" + ORDER BY asset_install_date ASC" ); @@ -366,8 +357,8 @@ $sql_asset_retired = mysqli_query( ?>

- - -- + Domain: + -- ()

- - -- + Certificate: + -- ()

- -- + -- ()

@@ -423,7 +414,7 @@ $sql_asset_retired = mysqli_query(

- -- + -- ()

- -- + -- ()

Date: Mon, 24 Feb 2025 19:08:00 -0500 Subject: [PATCH 14/33] Added Link to and unlink Items in Asset Details --- asset_details.php | 107 ++++++++++- client_overview.php | 30 +-- modals/asset_link_credential_modal.php | 51 ++++++ modals/asset_link_document_modal.php | 57 ++++++ modals/asset_link_file_modal.php | 59 ++++++ modals/asset_link_service_modal.php | 56 ++++++ modals/asset_link_software_modal.php | 58 ++++++ post/user/asset.php | 242 +++++++++++++++++++++++++ 8 files changed, 635 insertions(+), 25 deletions(-) create mode 100644 modals/asset_link_credential_modal.php create mode 100644 modals/asset_link_document_modal.php create mode 100644 modals/asset_link_file_modal.php create mode 100644 modals/asset_link_service_modal.php create mode 100644 modals/asset_link_software_modal.php diff --git a/asset_details.php b/asset_details.php index f0ddb509..ababfcdb 100644 --- a/asset_details.php +++ b/asset_details.php @@ -217,6 +217,16 @@ if (isset($_GET['asset_id'])) { $software_count = mysqli_num_rows($sql_related_software); + // Linked Services + $sql_linked_services = mysqli_query($mysqli, "SELECT * FROM service_assets, services + WHERE service_assets.asset_id = $asset_id + AND service_assets.service_id = services.service_id + ORDER BY service_name ASC" + ); + $service_count = mysqli_num_rows($sql_linked_services); + + $linked_services = array(); + ?>
Type License Type SeatsAction
@@ -716,6 +729,9 @@ if (isset($_GET['asset_id'])) { + +
Name UploadedAction
" target="_blank" >$file_description"; ?> + +
+ + + + + + + + + + + + + + + + + + + + + +
ServiceCategoryImportanceAction
+
+
+
+ +
+
+
+
+ @@ -1102,4 +1182,11 @@ require_once "modals/asset_interface_import_modal.php"; require_once "modals/asset_interface_export_modal.php"; require_once "modals/ticket_add_modal.php"; require_once "modals/recurring_ticket_add_modal.php"; + +require_once "modals/asset_link_software_modal.php"; +require_once "modals/asset_link_credential_modal.php"; +require_once "modals/asset_link_service_modal.php"; +require_once "modals/asset_link_document_modal.php"; +require_once "modals/asset_link_file_modal.php"; + require_once "includes/footer.php"; diff --git a/client_overview.php b/client_overview.php index 3417a6e0..ead88b74 100644 --- a/client_overview.php +++ b/client_overview.php @@ -358,7 +358,7 @@ $sql_asset_retired = mysqli_query(

Domain: - -- () + -- ()

Certificate: - -- () + -- ()

- + Asset Warranty: -- ()

@@ -413,7 +413,7 @@ $sql_asset_retired = mysqli_query( ?>

- + Asset Retire: -- ()

@@ -432,7 +432,7 @@ $sql_asset_retired = mysqli_query( ?>

- + License: -- ()

@@ -475,8 +475,8 @@ $sql_asset_retired = mysqli_query( ?>

- - -- + Domain: + -- ()

- - -- + Certificate: + -- ()

- + Asset Warranty: - -- + -- ()

@@ -531,8 +531,8 @@ $sql_asset_retired = mysqli_query( ?>

- - -- + Asset Retire: + -- ()

- - -- + Software: + -- ()

+ + diff --git a/modals/asset_link_document_modal.php b/modals/asset_link_document_modal.php new file mode 100644 index 00000000..63ffa0a4 --- /dev/null +++ b/modals/asset_link_document_modal.php @@ -0,0 +1,57 @@ + diff --git a/modals/asset_link_file_modal.php b/modals/asset_link_file_modal.php new file mode 100644 index 00000000..09b4a1e1 --- /dev/null +++ b/modals/asset_link_file_modal.php @@ -0,0 +1,59 @@ + diff --git a/modals/asset_link_service_modal.php b/modals/asset_link_service_modal.php new file mode 100644 index 00000000..7b86bb19 --- /dev/null +++ b/modals/asset_link_service_modal.php @@ -0,0 +1,56 @@ + diff --git a/modals/asset_link_software_modal.php b/modals/asset_link_software_modal.php new file mode 100644 index 00000000..1af3fbf8 --- /dev/null +++ b/modals/asset_link_software_modal.php @@ -0,0 +1,58 @@ + diff --git a/post/user/asset.php b/post/user/asset.php index 46db87ad..7208108f 100644 --- a/post/user/asset.php +++ b/post/user/asset.php @@ -495,6 +495,248 @@ if (isset($_POST['bulk_unarchive_assets'])) { header("Location: " . $_SERVER["HTTP_REFERER"]); } +// BEGIN LINKING + +if (isset($_POST['link_software_to_asset'])) { + + enforceUserPermission('module_support', 2); + + $software_id = intval($_POST['software_id']); + $asset_id = intval($_POST['asset_id']); + + // Get software Name and Client ID for logging + $sql_software = mysqli_query($mysqli,"SELECT software_name, software_client_id FROM software WHERE software_id = $software_id"); + $row = mysqli_fetch_array($sql_software); + $software_name = sanitizeInput($row['software_name']); + $client_id = intval($row['software_client_id']); + + // Get Asset Name for logging + $sql_asset = mysqli_query($mysqli,"SELECT asset_name FROM assets WHERE asset_id = $asset_id"); + $row = mysqli_fetch_array($sql_asset); + $asset_name = sanitizeInput($row['asset_name']); + + mysqli_query($mysqli,"INSERT INTO software_assets SET asset_id = $asset_id, software_id = $software_id"); + + // Logging + logAction("Software", "Link", "$session_name added software license $software_name to asset $asset_name", $client_id, $software_id); + + $_SESSION['alert_message'] = "Software $software_name licensed for asset $asset_name"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_GET['unlink_software_from_asset'])) { + + enforceUserPermission('module_support', 2); + + $asset_id = intval($_GET['asset_id']); + $software_id = intval($_GET['software_id']); + + // Get software Name and Client ID for logging + $sql_software = mysqli_query($mysqli,"SELECT software_name, software_client_id FROM software WHERE software_id = $software_id"); + $row = mysqli_fetch_array($sql_software); + $software_name = sanitizeInput($row['software_name']); + $client_id = intval($row['software_client_id']); + + // Get Asset Name for logging + $sql_asset = mysqli_query($mysqli,"SELECT asset_name FROM assets WHERE asset_id = $asset_id"); + $row = mysqli_fetch_array($sql_asset); + $asset_name = sanitizeInput($row['asset_name']); + + mysqli_query($mysqli,"DELETE FROM software_assets WHERE asset_id = $asset_id AND software_id = $software_id"); + + //Logging + logAction("software", "Unlink", "$session_name removed software license $software_name from asset $asset_name", $client_id, $software_id); + + $_SESSION['alert_type'] = "error"; + $_SESSION['alert_message'] = "Removed Software License $software_name for Asset $asset_name"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} +// Right now 1 login and have many assets but not many to many +if (isset($_POST['link_asset_to_credential'])) { + + enforceUserPermission('module_support', 2); + + $login_id = intval($_POST['login_id']); + $asset_id = intval($_POST['asset_id']); + + // Get login Name and Client ID for logging + $sql_login = mysqli_query($mysqli,"SELECT login_name, login_client_id FROM logins WHERE login_id = $login_id"); + $row = mysqli_fetch_array($sql_login); + $login_name = sanitizeInput($row['login_name']); + $client_id = intval($row['login_client_id']); + + // Get Asset Name for logging + $sql_asset = mysqli_query($mysqli,"SELECT asset_name FROM assets WHERE asset_id = $asset_id"); + $row = mysqli_fetch_array($sql_asset); + $asset_name = sanitizeInput($row['asset_name']); + + mysqli_query($mysqli,"UPDATE logins SET login_asset_id = $asset_id WHERE login_id = $login_id"); + + // Logging + logAction("Credential", "Link", "$session_name linked credential $login_name to asset $asset_name", $client_id, $login_id); + + $_SESSION['alert_message'] = "Asset $asset_name linked with credential $login_name"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_GET['unlink_credential_from_asset'])) { + + enforceUserPermission('module_support', 2); + + $asset_id = intval($_GET['asset_id']); + $login_id = intval($_GET['login_id']); + + // Get login Name and Client ID for logging + $sql_login = mysqli_query($mysqli,"SELECT login_name, login_client_id FROM logins WHERE login_id = $login_id"); + $row = mysqli_fetch_array($sql_login); + $login_name = sanitizeInput($row['login_name']); + $client_id = intval($row['login_client_id']); + + // Get Asset Name for logging + $sql_asset = mysqli_query($mysqli,"SELECT asset_name FROM assets WHERE asset_id = $asset_id"); + $row = mysqli_fetch_array($sql_asset); + $asset_name = sanitizeInput($row['asset_name']); + + mysqli_query($mysqli,"UPDATE logins SET login_asset_id = 0 WHERE login_id = $login_id"); + + //Logging + logAction("Credential", "Unlink", "$session_name unlinked asset $asset_name from credential $login_name", $client_id, $login_id); + + $_SESSION['alert_type'] = "error"; + $_SESSION['alert_message'] = "Credential $login_name unlinked from Asset $asset_name"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_POST['link_service_to_asset'])) { + + enforceUserPermission('module_support', 2); + + $service_id = intval($_POST['service_id']); + $asset_id = intval($_POST['asset_id']); + + // Get service Name and Client ID for logging + $sql_service = mysqli_query($mysqli,"SELECT service_name, service_client_id FROM services WHERE service_id = $service_id"); + $row = mysqli_fetch_array($sql_service); + $service_name = sanitizeInput($row['service_name']); + $client_id = intval($row['service_client_id']); + + // Get Asset Name for logging + $sql_asset = mysqli_query($mysqli,"SELECT asset_name FROM assets WHERE asset_id = $asset_id"); + $row = mysqli_fetch_array($sql_asset); + $asset_name = sanitizeInput($row['asset_name']); + + mysqli_query($mysqli,"INSERT INTO service_assets SET asset_id = $asset_id, service_id = $service_id"); + + // Logging + logAction("Service", "Link", "$session_name linked asset $asset_name to service $service_name", $client_id, $service_id); + + $_SESSION['alert_message'] = "Service $service_name linked with asset $asset_name"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_GET['unlink_service_from_asset'])) { + + enforceUserPermission('module_support', 2); + + $asset_id = intval($_GET['asset_id']); + $service_id = intval($_GET['service_id']); + + // Get service Name and Client ID for logging + $sql_service = mysqli_query($mysqli,"SELECT service_name, service_client_id FROM services WHERE service_id = $service_id"); + $row = mysqli_fetch_array($sql_service); + $service_name = sanitizeInput($row['service_name']); + $client_id = intval($row['service_client_id']); + + // Get Asset Name for logging + $sql_asset = mysqli_query($mysqli,"SELECT asset_name FROM assets WHERE asset_id = $asset_id"); + $row = mysqli_fetch_array($sql_asset); + $asset_name = sanitizeInput($row['asset_name']); + + mysqli_query($mysqli,"DELETE FROM service_assets WHERE asset_id = $asset_id AND service_id = $service_id"); + + //Logging + logAction("Service", "Unlink", "$session_name unlinked asset $asset_name from service $service_name", $client_id, $service_id); + + $_SESSION['alert_type'] = "error"; + $_SESSION['alert_message'] = "Asset $asset_name unlinked from service $service_name"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_POST['link_asset_to_file'])) { + + enforceUserPermission('module_support', 2); + + $file_id = intval($_POST['file_id']); + $asset_id = intval($_POST['asset_id']); + + // Get file Name and Client ID for logging + $sql_file = mysqli_query($mysqli,"SELECT file_name, file_client_id FROM files WHERE file_id = $file_id"); + $row = mysqli_fetch_array($sql_file); + $file_name = sanitizeInput($row['file_name']); + $client_id = intval($row['file_client_id']); + + // Get Asset Name for logging + $sql_asset = mysqli_query($mysqli,"SELECT asset_name FROM assets WHERE asset_id = $asset_id"); + $row = mysqli_fetch_array($sql_asset); + $asset_name = sanitizeInput($row['asset_name']); + + // asset add query + mysqli_query($mysqli,"INSERT INTO asset_files SET asset_id = $asset_id, file_id = $file_id"); + + // Logging + logAction("File", "Link", "$session_name linked asset $asset_name to file $file_name", $client_id, $file_id); + + $_SESSION['alert_message'] = "Asset $asset_name linked with File $file_name"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_GET['unlink_asset_from_file'])) { + + enforceUserPermission('module_support', 2); + + $asset_id = intval($_GET['asset_id']); + $file_id = intval($_GET['file_id']); + + // Get file Name and Client ID for logging + $sql_file = mysqli_query($mysqli,"SELECT file_name, file_client_id FROM files WHERE file_id = $file_id"); + $row = mysqli_fetch_array($sql_file); + $file_name = sanitizeInput($row['file_name']); + $client_id = intval($row['file_client_id']); + + // Get Asset Name for logging + $sql_asset = mysqli_query($mysqli,"SELECT asset_name FROM assets WHERE asset_id = $asset_id"); + $row = mysqli_fetch_array($sql_asset); + $asset_name = sanitizeInput($row['asset_name']); + + mysqli_query($mysqli,"DELETE FROM asset_files WHERE asset_id = $asset_id AND file_id = $file_id"); + + //Logging + logAction("File", "Unlink", "$session_name unlinked asset $asset_name from file $file_name", $client_id, $file_id); + + $_SESSION['alert_type'] = "error"; + $_SESSION['alert_message'] = "Asset $asset_name unlinked from file $file_name"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +// END LINKING + + if (isset($_POST["import_assets_csv"])) { enforceUserPermission('module_support', 2); From 56cbcf29210e513f7a875cd565dd739506e5e1b4 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 21:24:57 -0500 Subject: [PATCH 15/33] Removed Single Link Vendor Login and single link software login. These are unused will be moved to multi to multi relationship, also added vendor_id to software to reference a vendor --- ajax/ajax_credential_edit.php | 46 ------------------------------- credentials.php | 2 -- database_updates.php | 18 ++++++++++-- db.sql | 6 ++-- includes/database_version.php | 2 +- modals/credential_add_modal.php | 49 --------------------------------- post/user/credential_model.php | 2 -- 7 files changed, 18 insertions(+), 107 deletions(-) diff --git a/ajax/ajax_credential_edit.php b/ajax/ajax_credential_edit.php index 1bbd9b29..8cdf0782 100644 --- a/ajax/ajax_credential_edit.php +++ b/ajax/ajax_credential_edit.php @@ -21,9 +21,7 @@ $login_created_at = nullable_htmlentities($row['login_created_at']); $login_archived_at = nullable_htmlentities($row['login_archived_at']); $login_important = intval($row['login_important']); $login_contact_id = intval($row['login_contact_id']); -$login_vendor_id = intval($row['login_vendor_id']); $login_asset_id = intval($row['login_asset_id']); -$login_software_id = intval($row['login_software_id']); // Tags $login_tag_id_array = array(); @@ -189,28 +187,6 @@ ob_start(); -
- -
-
- -
- -
-
-
@@ -240,28 +216,6 @@ ob_start();
-
- -
-
- -
- -
-
-
diff --git a/credentials.php b/credentials.php index 04a8692f..ee365fca 100644 --- a/credentials.php +++ b/credentials.php @@ -293,9 +293,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); $login_archived_at = nullable_htmlentities($row['login_archived_at']); $login_important = intval($row['login_important']); $login_contact_id = intval($row['login_contact_id']); - $login_vendor_id = intval($row['login_vendor_id']); $login_asset_id = intval($row['login_asset_id']); - $login_software_id = intval($row['login_software_id']); // Tags $login_tag_name_display_array = array(); diff --git a/database_updates.php b/database_updates.php index de2b81ad..192800e7 100644 --- a/database_updates.php +++ b/database_updates.php @@ -2505,10 +2505,22 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) { mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.8.4'"); } - // if (CURRENT_DATABASE_VERSION == '1.8.4') { - // // Insert queries here required to update to DB version 1.8.5 + if (CURRENT_DATABASE_VERSION == '1.8.4') { + mysqli_query($mysqli, "ALTER TABLE `logins` DROP `login_software_id`"); + mysqli_query($mysqli, "ALTER TABLE `logins` DROP `login_vendor_id`"); + mysqli_query($mysqli, "ALTER TABLE `software` DROP `software_login_id`"); + mysqli_query($mysqli, "ALTER TABLE `software` ADD `software_vendor_id` INT(11) DEFAULT 0 AFTER `software_accessed_at`"); + + + mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.8.5'"); + + + } + + // if (CURRENT_DATABASE_VERSION == '1.8.5') { + // // Insert queries here required to update to DB version 1.8.6 // // Then, update the database to the next sequential version - // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.8.5'"); + // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.8.6'"); // } } else { diff --git a/db.sql b/db.sql index 15f49327..0849fbd2 100644 --- a/db.sql +++ b/db.sql @@ -1033,9 +1033,7 @@ CREATE TABLE `logins` ( `login_password_changed_at` datetime DEFAULT current_timestamp(), `login_folder_id` int(11) NOT NULL DEFAULT 0, `login_contact_id` int(11) NOT NULL DEFAULT 0, - `login_vendor_id` int(11) NOT NULL DEFAULT 0, `login_asset_id` int(11) NOT NULL DEFAULT 0, - `login_software_id` int(11) NOT NULL DEFAULT 0, `login_client_id` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`login_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; @@ -1813,7 +1811,7 @@ CREATE TABLE `software` ( `software_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(), `software_archived_at` datetime DEFAULT NULL, `software_accessed_at` datetime DEFAULT NULL, - `software_login_id` int(11) NOT NULL DEFAULT 0, + `software_vendor_id` int(11) DEFAULT 0, `software_client_id` int(11) NOT NULL, `software_template_id` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`software_id`) @@ -2363,4 +2361,4 @@ CREATE TABLE `vendors` ( /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2025-02-18 17:21:45 +-- Dump completed on 2025-02-24 21:23:33 diff --git a/includes/database_version.php b/includes/database_version.php index 40929937..7889e3ff 100644 --- a/includes/database_version.php +++ b/includes/database_version.php @@ -5,4 +5,4 @@ * It is used in conjunction with database_updates.php */ -DEFINE("LATEST_DATABASE_VERSION", "1.8.4"); +DEFINE("LATEST_DATABASE_VERSION", "1.8.5"); diff --git a/modals/credential_add_modal.php b/modals/credential_add_modal.php index e9a64b93..1d33905b 100644 --- a/modals/credential_add_modal.php +++ b/modals/credential_add_modal.php @@ -171,30 +171,6 @@
-
- -
-
- -
- -
-
-
@@ -225,31 +201,6 @@
- -
- -
-
- -
- -
-
- diff --git a/post/user/credential_model.php b/post/user/credential_model.php index 48c7adf0..6ab57b48 100644 --- a/post/user/credential_model.php +++ b/post/user/credential_model.php @@ -13,6 +13,4 @@ $otp_secret = sanitizeInput($_POST['otp_secret']); $note = sanitizeInput($_POST['note']); $important = intval($_POST['important'] ?? 0); $contact_id = intval($_POST['contact'] ?? 0); -$vendor_id = intval($_POST['vendor'] ?? 0); $asset_id = intval($_POST['asset'] ?? 0); -$software_id = intval($_POST['software'] ?? 0); From bac76871c1ba0e7c4f602a4168a0bde913edfd71 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 21:36:30 -0500 Subject: [PATCH 16/33] Added vendor UI select elements for software --- ajax/ajax_software_edit.php | 23 +++++++++++++++++++++++ modals/software_add_modal.php | 25 ++++++++++++++++++++++++- post/user/software.php | 9 ++++++--- 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/ajax/ajax_software_edit.php b/ajax/ajax_software_edit.php index d9a06b1d..6ff86d04 100644 --- a/ajax/ajax_software_edit.php +++ b/ajax/ajax_software_edit.php @@ -18,6 +18,7 @@ $software_purchase = nullable_htmlentities($row['software_purchase']); $software_expire = nullable_htmlentities($row['software_expire']); $software_notes = nullable_htmlentities($row['software_notes']); $software_created_at = nullable_htmlentities($row['software_created_at']); +$software_vendor_id = intval($row['software_vendor_id']); $client_id = intval($row['software_client_id']); $seat_count = 0; @@ -107,6 +108,28 @@ ob_start(); +
+ +
+
+ +
+ +
+
+
diff --git a/modals/software_add_modal.php b/modals/software_add_modal.php index 8dc810c2..fe44580f 100644 --- a/modals/software_add_modal.php +++ b/modals/software_add_modal.php @@ -93,6 +93,29 @@
+ +
+ +
+
+ +
+ +
+
+ +
@@ -100,7 +123,7 @@
+ + + + + + +
+ +
@@ -157,6 +165,15 @@ ob_start(); +
+ +
diff --git a/ajax/ajax_contact_details.php b/ajax/ajax_contact_details.php index 07d9df15..85aed0d6 100644 --- a/ajax/ajax_contact_details.php +++ b/ajax/ajax_contact_details.php @@ -446,9 +446,7 @@ ob_start(); $login_note = nullable_htmlentities($row['login_note']); $login_important = intval($row['login_important']); $login_contact_id = intval($row['login_contact_id']); - $login_vendor_id = intval($row['login_vendor_id']); $login_asset_id = intval($row['login_asset_id']); - $login_software_id = intval($row['login_software_id']); // Tags $login_tag_name_display_array = array(); diff --git a/ajax/ajax_contact_edit.php b/ajax/ajax_contact_edit.php index 99ea1823..768a6081 100644 --- a/ajax/ajax_contact_edit.php +++ b/ajax/ajax_contact_edit.php @@ -311,6 +311,15 @@ ob_start(); +
+ +
diff --git a/ajax/ajax_credential_edit.php b/ajax/ajax_credential_edit.php index 8cdf0782..c6b50da8 100644 --- a/ajax/ajax_credential_edit.php +++ b/ajax/ajax_credential_edit.php @@ -242,6 +242,15 @@ ob_start(); +
+ +
diff --git a/ajax/ajax_expense_edit.php b/ajax/ajax_expense_edit.php index 5793ff39..00665cb4 100644 --- a/ajax/ajax_expense_edit.php +++ b/ajax/ajax_expense_edit.php @@ -131,7 +131,12 @@ ob_start(); ?>
- +
@@ -176,7 +181,12 @@ ob_start(); ?>
- +
diff --git a/ajax/ajax_invoice_edit.php b/ajax/ajax_invoice_edit.php index 87530848..d6a804f3 100644 --- a/ajax/ajax_invoice_edit.php +++ b/ajax/ajax_invoice_edit.php @@ -77,7 +77,12 @@ ob_start(); ?>
- +
diff --git a/ajax/ajax_location_edit.php b/ajax/ajax_location_edit.php index da39bb38..e97ba887 100644 --- a/ajax/ajax_location_edit.php +++ b/ajax/ajax_location_edit.php @@ -254,6 +254,15 @@ ob_start(); +
+ +
diff --git a/ajax/ajax_product_edit.php b/ajax/ajax_product_edit.php index f7093fae..61a74af2 100644 --- a/ajax/ajax_product_edit.php +++ b/ajax/ajax_product_edit.php @@ -59,7 +59,12 @@ ob_start(); ?>
- +
diff --git a/ajax/ajax_quote_edit.php b/ajax/ajax_quote_edit.php index a94f392f..51c7c8bd 100644 --- a/ajax/ajax_quote_edit.php +++ b/ajax/ajax_quote_edit.php @@ -73,7 +73,12 @@ ob_start();
- +
diff --git a/ajax/ajax_recurring_expense_edit.php b/ajax/ajax_recurring_expense_edit.php index 7d461ce6..3b857d01 100644 --- a/ajax/ajax_recurring_expense_edit.php +++ b/ajax/ajax_recurring_expense_edit.php @@ -214,7 +214,12 @@ ob_start(); ?>
- +
diff --git a/ajax/ajax_recurring_invoice_edit.php b/ajax/ajax_recurring_invoice_edit.php index 7d454b20..e0ab9d56 100644 --- a/ajax/ajax_recurring_invoice_edit.php +++ b/ajax/ajax_recurring_invoice_edit.php @@ -88,7 +88,12 @@ ob_start(); ?>
- +
diff --git a/ajax/ajax_revenue_edit.php b/ajax/ajax_revenue_edit.php index 11998bdd..593bb6ff 100644 --- a/ajax/ajax_revenue_edit.php +++ b/ajax/ajax_revenue_edit.php @@ -125,7 +125,12 @@ ob_start(); ?>
- +
diff --git a/ajax/ajax_tag_add.php b/ajax/ajax_tag_add.php new file mode 100644 index 00000000..30694dfb --- /dev/null +++ b/ajax/ajax_tag_add.php @@ -0,0 +1,61 @@ + + + + + + + + +
+ + + +
+ + +
+ +
diff --git a/ajax/ajax_vendor_details.php b/ajax/ajax_vendor_details.php new file mode 100644 index 00000000..fe2e6025 --- /dev/null +++ b/ajax/ajax_vendor_details.php @@ -0,0 +1,43 @@ + + + + + + + + +
-
- + +
+ +
+ +
diff --git a/contact_details.php b/contact_details.php index 02a5409e..0c1ca035 100644 --- a/contact_details.php +++ b/contact_details.php @@ -495,9 +495,7 @@ if (isset($_GET['contact_id'])) { $login_note = nullable_htmlentities($row['login_note']); $login_important = intval($row['login_important']); $login_contact_id = intval($row['login_contact_id']); - $login_vendor_id = intval($row['login_vendor_id']); $login_asset_id = intval($row['login_asset_id']); - $login_software_id = intval($row['login_software_id']); // Tags $login_tag_name_display_array = array(); diff --git a/contacts.php b/contacts.php index 0ace4940..5c3eb349 100644 --- a/contacts.php +++ b/contacts.php @@ -117,7 +117,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
-
+
+
+ +
diff --git a/credentials.php b/credentials.php index ee365fca..ae88576a 100644 --- a/credentials.php +++ b/credentials.php @@ -168,7 +168,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
-
+
+
+ +
diff --git a/locations.php b/locations.php index 192f190a..858c8a5a 100644 --- a/locations.php +++ b/locations.php @@ -94,7 +94,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
-
+
+
+ +
diff --git a/modals/admin_tag_add_modal.php b/modals/admin_tag_add_modal.php index 91e6dd78..6d4085be 100644 --- a/modals/admin_tag_add_modal.php +++ b/modals/admin_tag_add_modal.php @@ -1,68 +1,66 @@ @@ -120,6 +128,15 @@ +
+ +
diff --git a/modals/contact_add_modal.php b/modals/contact_add_modal.php index 4e55037a..d13be9f7 100644 --- a/modals/contact_add_modal.php +++ b/modals/contact_add_modal.php @@ -271,6 +271,15 @@ +
+ +
diff --git a/modals/credential_add_modal.php b/modals/credential_add_modal.php index 1d33905b..dc0907aa 100644 --- a/modals/credential_add_modal.php +++ b/modals/credential_add_modal.php @@ -228,6 +228,15 @@ +
+ +
diff --git a/modals/credential_bulk_assign_tags_modal.php b/modals/credential_bulk_assign_tags_modal.php index 3819db74..a9f0f516 100644 --- a/modals/credential_bulk_assign_tags_modal.php +++ b/modals/credential_bulk_assign_tags_modal.php @@ -34,6 +34,15 @@ +
+ +
diff --git a/modals/expense_add_modal.php b/modals/expense_add_modal.php index 8b5e3dbe..8b6f71a8 100644 --- a/modals/expense_add_modal.php +++ b/modals/expense_add_modal.php @@ -140,7 +140,12 @@ ?>
- +
diff --git a/modals/invoice_add_modal.php b/modals/invoice_add_modal.php index 392a8b71..9dab27fe 100644 --- a/modals/invoice_add_modal.php +++ b/modals/invoice_add_modal.php @@ -73,7 +73,12 @@ ?>
- +
diff --git a/modals/location_add_modal.php b/modals/location_add_modal.php index b9fce811..025f605d 100644 --- a/modals/location_add_modal.php +++ b/modals/location_add_modal.php @@ -232,6 +232,15 @@ +
+ +
diff --git a/modals/product_add_modal.php b/modals/product_add_modal.php index 8df44e19..5da9fed2 100644 --- a/modals/product_add_modal.php +++ b/modals/product_add_modal.php @@ -42,7 +42,12 @@ ?>
- +
diff --git a/modals/quote_add_modal.php b/modals/quote_add_modal.php index cbacc62a..df80d3a4 100644 --- a/modals/quote_add_modal.php +++ b/modals/quote_add_modal.php @@ -71,7 +71,12 @@
- +
diff --git a/modals/recurring_expense_create_modal.php b/modals/recurring_expense_create_modal.php index a6e27710..60ab6ff7 100644 --- a/modals/recurring_expense_create_modal.php +++ b/modals/recurring_expense_create_modal.php @@ -182,7 +182,12 @@ ?>
- +
diff --git a/modals/recurring_invoice_add_modal.php b/modals/recurring_invoice_add_modal.php index 54cad7ff..e194178f 100644 --- a/modals/recurring_invoice_add_modal.php +++ b/modals/recurring_invoice_add_modal.php @@ -97,7 +97,12 @@ ?>
- +
diff --git a/modals/revenue_add_modal.php b/modals/revenue_add_modal.php index 29a96a0a..9ed411a6 100644 --- a/modals/revenue_add_modal.php +++ b/modals/revenue_add_modal.php @@ -99,7 +99,12 @@ ?>
- +
diff --git a/modals/ticket_add_modal.php b/modals/ticket_add_modal.php index 7de8a529..de6e3f29 100644 --- a/modals/ticket_add_modal.php +++ b/modals/ticket_add_modal.php @@ -152,6 +152,14 @@ +
+ +
diff --git a/post/user/category.php b/post/user/category.php new file mode 100644 index 00000000..aeafd94d --- /dev/null +++ b/post/user/category.php @@ -0,0 +1,24 @@ +$name created"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} diff --git a/post/user/category_model.php b/post/user/category_model.php new file mode 100644 index 00000000..81b54a39 --- /dev/null +++ b/post/user/category_model.php @@ -0,0 +1,6 @@ +$name created"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} diff --git a/post/user/tag_model.php b/post/user/tag_model.php new file mode 100644 index 00000000..0380df8b --- /dev/null +++ b/post/user/tag_model.php @@ -0,0 +1,7 @@ + -
-
+
+
+
+ +
-
+
"> From 55ebe70808945f82eac5e6f11cca93d57550d1b8 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Tue, 25 Feb 2025 18:16:03 -0500 Subject: [PATCH 18/33] Add Vendor Details Popup, works with Domain Vendors right now, Added fallBack function when no text is present use a placeholder --- ajax/ajax_category_add.php | 2 +- ajax/ajax_tag_add.php | 12 ------- ajax/ajax_vendor_details.php | 62 +++++++++++++++++++++++++++++++----- domains.php | 37 +++++++++++++++------ functions.php | 5 +++ 5 files changed, 88 insertions(+), 30 deletions(-) diff --git a/ajax/ajax_category_add.php b/ajax/ajax_category_add.php index 0141b610..a5b7481d 100644 --- a/ajax/ajax_category_add.php +++ b/ajax/ajax_category_add.php @@ -7,7 +7,7 @@ $category = nullable_htmlentities($_GET['category']); ?>