diff --git a/ajax/ajax_asset_details.php b/ajax/ajax_asset_details.php index be047a5d..585336aa 100644 --- a/ajax/ajax_asset_details.php +++ b/ajax/ajax_asset_details.php @@ -146,9 +146,11 @@ $sql_related_tickets = mysqli_query($mysqli, " $ticket_count = mysqli_num_rows($sql_related_tickets); // Related Recurring Tickets Query -$sql_related_recurring_tickets = mysqli_query($mysqli, "SELECT * FROM scheduled_tickets - WHERE scheduled_ticket_asset_id = $asset_id - ORDER BY scheduled_ticket_next_run DESC" +$sql_related_recurring_tickets = mysqli_query($mysqli, "SELECT * FROM recurring_tickets + LEFT JOIN recurring_ticket_assets ON recurring_tickets.recurring_ticket_id = recurring_ticket_assets.recurring_ticket_id + WHERE recurring_ticket_asset_id = $asset_id OR recurring_ticket_assets.asset_id = $asset_id + GROUP BY recurring_tickets.recurring_ticket_id + ORDER BY recurring_ticket_next_run DESC" ); $recurring_ticket_count = mysqli_num_rows($sql_related_recurring_tickets); @@ -632,18 +634,18 @@ ob_start(); - - - - + + + + diff --git a/ajax/ajax_contact_details.php b/ajax/ajax_contact_details.php index 660af8a3..05f8a68a 100644 --- a/ajax/ajax_contact_details.php +++ b/ajax/ajax_contact_details.php @@ -75,9 +75,9 @@ $sql_related_tickets = mysqli_query($mysqli, "SELECT * FROM tickets $ticket_count = mysqli_num_rows($sql_related_tickets); // Related Recurring Tickets Query -$sql_related_recurring_tickets = mysqli_query($mysqli, "SELECT * FROM scheduled_tickets - WHERE scheduled_ticket_contact_id = $contact_id - ORDER BY scheduled_ticket_next_run DESC" +$sql_related_recurring_tickets = mysqli_query($mysqli, "SELECT * FROM recurring_tickets + WHERE recurring_ticket_contact_id = $contact_id + ORDER BY recurring_ticket_next_run DESC" ); $recurring_ticket_count = mysqli_num_rows($sql_related_recurring_tickets); @@ -597,18 +597,18 @@ ob_start(); - - - - + + + + diff --git a/ajax/ajax_recurring_ticket_edit.php b/ajax/ajax_recurring_ticket_edit.php index 12a3ab1f..2ef5d31a 100644 --- a/ajax/ajax_recurring_ticket_edit.php +++ b/ajax/ajax_recurring_ticket_edit.php @@ -18,6 +18,14 @@ $recurring_ticket_contact_id = intval($row['recurring_ticket_contact_id']); $recurring_ticket_asset_id = intval($row['recurring_ticket_asset_id']); $recurring_ticket_billable = intval($row['recurring_ticket_billable']); +// Additional Assets Selected +$additional_assets_array = array(); +$sql_additional_assets = mysqli_query($mysqli, "SELECT asset_id FROM recurring_ticket_assets WHERE recurring_ticket_id = $recurring_ticket_id"); +while ($row = mysqli_fetch_array($sql_additional_assets)) { + $additional_asset_id = intval($row['asset_id']); + $additional_assets_array[] = $additional_asset_id; +} + // Generate the HTML form content using output buffering. ob_start(); ?> @@ -217,6 +225,31 @@ ob_start(); +
+ +
+
+ +
+ +
+
+ diff --git a/asset_details.php b/asset_details.php index 816600b5..9cf8fa97 100644 --- a/asset_details.php +++ b/asset_details.php @@ -94,9 +94,11 @@ if (isset($_GET['asset_id'])) { $ticket_count = mysqli_num_rows($sql_related_tickets); // Related Recurring Tickets Query - $sql_related_recurring_tickets = mysqli_query($mysqli, "SELECT * FROM scheduled_tickets - WHERE scheduled_ticket_asset_id = $asset_id - ORDER BY scheduled_ticket_next_run DESC" + $sql_related_recurring_tickets = mysqli_query($mysqli, "SELECT * FROM recurring_tickets + LEFT JOIN recurring_ticket_assets ON recurring_tickets.recurring_ticket_id = recurring_ticket_assets.recurring_ticket_id + WHERE recurring_ticket_asset_id = $asset_id OR recurring_ticket_assets.asset_id = $asset_id + GROUP BY recurring_tickets.recurring_ticket_id + ORDER BY recurring_ticket_next_run DESC" ); $recurring_ticket_count = mysqli_num_rows($sql_related_recurring_tickets); @@ -920,29 +922,30 @@ if (isset($_GET['asset_id'])) { - + - + - + - + +
+ +
+
+ +
+ +
+
+ diff --git a/post/user/ticket.php b/post/user/ticket.php index d676ab24..cd4e4656 100644 --- a/post/user/ticket.php +++ b/post/user/ticket.php @@ -81,6 +81,7 @@ if (isset($_POST['add_ticket'])) { } } + // Add Additional Assets if (isset($_POST['additional_assets'])) { foreach ($_POST['additional_assets'] as $additional_asset) { $additional_asset_id = intval($additional_asset); @@ -195,6 +196,7 @@ if (isset($_POST['edit_ticket'])) { mysqli_query($mysqli, "UPDATE tickets SET ticket_category = $category_id, ticket_subject = '$ticket_subject', ticket_priority = '$ticket_priority', ticket_billable = $billable, ticket_details = '$details', ticket_vendor_ticket_number = '$vendor_ticket_number', ticket_contact_id = $contact_id, ticket_vendor_id = $vendor_id, ticket_location_id = $location_id, ticket_asset_id = $asset_id, ticket_project_id = $project_id WHERE ticket_id = $ticket_id"); + // Add Additional Assets if (isset($_POST['additional_assets'])) { mysqli_query($mysqli, "DELETE FROM ticket_assets WHERE ticket_id = $ticket_id"); foreach ($_POST['additional_assets'] as $additional_asset) { @@ -2045,6 +2047,14 @@ if (isset($_POST['add_recurring_ticket'])) { $recurring_ticket_id = mysqli_insert_id($mysqli); + // Add Additional Assets + if (isset($_POST['additional_assets'])) { + foreach ($_POST['additional_assets'] as $additional_asset) { + $additional_asset_id = intval($additional_asset); + mysqli_query($mysqli, "INSERT INTO recurring_ticket_assets SET recurring_ticket_id = $recurring_ticket_id, asset_id = $additional_asset_id"); + } + } + // Logging logAction("Recurring Ticket", "Create", "$session_name created recurring ticket for $subject - $frequency", $client_id, $recurring_ticket_id); @@ -2064,6 +2074,15 @@ if (isset($_POST['edit_recurring_ticket'])) { mysqli_query($mysqli, "UPDATE recurring_tickets SET recurring_ticket_subject = '$subject', recurring_ticket_details = '$details', recurring_ticket_priority = '$priority', recurring_ticket_frequency = '$frequency', recurring_ticket_billable = $billable, recurring_ticket_next_run = '$next_run_date', recurring_ticket_assigned_to = $assigned_to, recurring_ticket_asset_id = $asset_id, recurring_ticket_contact_id = $contact_id WHERE recurring_ticket_id = $recurring_ticket_id"); + // Add Additional Assets + if (isset($_POST['additional_assets'])) { + mysqli_query($mysqli, "DELETE FROM recurring_ticket_assets WHERE recurring_ticket_id = $recurring_ticket_id"); + foreach ($_POST['additional_assets'] as $additional_asset) { + $additional_asset_id = intval($additional_asset); + mysqli_query($mysqli, "INSERT INTO recurring_ticket_assets SET recurring_ticket_id = $recurring_ticket_id, asset_id = $additional_asset_id"); + } + } + // Logging logAction("Recurring Ticket", "Edit", "$session_name edited recurring ticket $subject", $client_id, $recurring_ticket_id); @@ -2083,7 +2102,6 @@ if (isset($_GET['force_recurring_ticket'])) { if (mysqli_num_rows($sql) > 0) { $row = mysqli_fetch_array($sql); - $schedule_id = intval($row['recurring_ticket_id']); $subject = sanitizeInput($row['recurring_ticket_subject']); $details = mysqli_real_escape_string($mysqli, $row['recurring_ticket_details']); $priority = sanitizeInput($row['recurring_ticket_priority']); @@ -2117,6 +2135,12 @@ if (isset($_GET['force_recurring_ticket'])) { mysqli_query($mysqli, "INSERT INTO tickets SET ticket_prefix = '$config_ticket_prefix', ticket_number = $ticket_number, ticket_subject = '$subject', ticket_details = '$details', ticket_priority = '$priority', ticket_status = '$ticket_status', ticket_billable = $billable, ticket_url_key = '$url_key', ticket_created_by = $created_id, ticket_assigned_to = $assigned_id, ticket_contact_id = $contact_id, ticket_client_id = $client_id, ticket_asset_id = $asset_id"); $id = mysqli_insert_id($mysqli); + // Copy Additional Assets from Recurring ticket to new ticket + mysqli_query($mysqli, "INSERT INTO ticket_assets (ticket_id, asset_id) + SELECT $id, asset_id + FROM recurring_ticket_assets + WHERE recurring_ticket_id = $recurring_ticket_id"); + // Notifications customAction('ticket_create', $id); @@ -2182,7 +2206,7 @@ if (isset($_GET['force_recurring_ticket'])) { // Update the run date $next_run = $next_run->format('Y-m-d'); - mysqli_query($mysqli, "UPDATE recurring_tickets SET recurring_ticket_next_run = '$next_run' WHERE recurring_ticket_id = $schedule_id"); + mysqli_query($mysqli, "UPDATE recurring_tickets SET recurring_ticket_next_run = '$next_run' WHERE recurring_ticket_id = $recurring_ticket_id"); // Logging logAction("Ticket", "Create", "$session_name force created recurring scheduled $frequency ticket - $config_ticket_prefix$ticket_number - $subject", $client_id, $id); @@ -2226,7 +2250,7 @@ if (isset($_GET['delete_recurring_ticket'])) { header("Location: " . $_SERVER["HTTP_REFERER"]); } -if (isset($_POST['bulk_delete_recurring_tickets']) || isset($_POST['bulk_delete_recurring_tickets'])) { +if (isset($_POST['bulk_delete_recurring_tickets'])) { enforceUserPermission('module_support', 3); validateCSRFToken($_POST['csrf_token']); diff --git a/scripts/cron.php b/scripts/cron.php index d147a0d4..34b62ea2 100644 --- a/scripts/cron.php +++ b/scripts/cron.php @@ -288,7 +288,7 @@ $sql_recurring_tickets = mysqli_query($mysqli, "SELECT * FROM recurring_tickets if (mysqli_num_rows($sql_recurring_tickets) > 0) { while ($row = mysqli_fetch_array($sql_recurring_tickets)) { - $schedule_id = intval($row['recurring_ticket_id']); + $recurring_ticket_id = intval($row['recurring_ticket_id']); $subject = sanitizeInput($row['recurring_ticket_subject']); $details = mysqli_real_escape_string($mysqli, $row['recurring_ticket_details']); $priority = sanitizeInput($row['recurring_ticket_priority']); @@ -317,6 +317,12 @@ if (mysqli_num_rows($sql_recurring_tickets) > 0) { mysqli_query($mysqli, "INSERT INTO tickets SET ticket_prefix = '$config_ticket_prefix', ticket_number = $ticket_number, ticket_subject = '$subject', ticket_details = '$details', ticket_priority = '$priority', ticket_status = '$ticket_status', ticket_billable = $billable, ticket_created_by = $created_id, ticket_assigned_to = $assigned_id, ticket_contact_id = $contact_id, ticket_client_id = $client_id, ticket_asset_id = $asset_id"); $id = mysqli_insert_id($mysqli); + // Copy Additional Assets from Recurring ticket to new ticket + mysqli_query($mysqli, "INSERT INTO ticket_assets (ticket_id, asset_id) + SELECT $id, asset_id + FROM recurring_ticket_assets + WHERE recurring_ticket_id = $recurring_ticket_id"); + // Logging logAction("Ticket", "Create", "Cron created recurring scheduled $frequency ticket - $subject", $client_id, $id); @@ -408,7 +414,7 @@ if (mysqli_num_rows($sql_recurring_tickets) > 0) { // Update the run date $next_run = $next_run->format('Y-m-d'); - $a = mysqli_query($mysqli, "UPDATE recurring_tickets SET recurring_ticket_next_run = '$next_run' WHERE recurring_ticket_id = $schedule_id"); + $a = mysqli_query($mysqli, "UPDATE recurring_tickets SET recurring_ticket_next_run = '$next_run' WHERE recurring_ticket_id = $recurring_ticket_id"); } }