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();
|
-
+
|
- |
+ |
- |
+ |
- |
+ |
@@ -952,19 +955,20 @@ if (isset($_GET['asset_id'])) {
diff --git a/calendar.php b/calendar.php
index 54c84859..7608a50f 100644
--- a/calendar.php
+++ b/calendar.php
@@ -245,15 +245,15 @@ while ($row = mysqli_fetch_array($sql)) {
// Recurring Tickets
$sql = mysqli_query($mysqli, "SELECT * FROM clients
- LEFT JOIN scheduled_tickets ON client_id = scheduled_ticket_client_id
- LEFT JOIN users ON scheduled_ticket_assigned_to = user_id
+ LEFT JOIN recurring_tickets ON client_id = recurring_ticket_client_id
+ LEFT JOIN users ON recurring_ticket_assigned_to = user_id
$client_query"
);
while ($row = mysqli_fetch_array($sql)) {
- $event_id = intval($row['scheduled_ticket_id']);
+ $event_id = intval($row['recurring_ticket_id']);
$client_id = intval($row['client_id']);
$username = $row['user_name'];
- $frequency = $row['scheduled_ticket_frequency'];
+ $frequency = $row['recurring_ticket_frequency'];
if (empty($username)) {
$username = "";
} else {
@@ -261,8 +261,8 @@ while ($row = mysqli_fetch_array($sql)) {
$username = "[". substr($row['user_name'], 0, 9) . "...]";
}
- $event_title = json_encode("R Ticket ($frequency) - " . $row['scheduled_ticket_subject'] . " " . $username);
- $event_start = json_encode($row['scheduled_ticket_next_run']);
+ $event_title = json_encode("R Ticket ($frequency) - " . $row['recurring_ticket_subject'] . " " . $username);
+ $event_start = json_encode($row['recurring_ticket_next_run']);
echo "{ id: $event_id, title: $event_title, start: $event_start, color: '$event_color', url: 'recurring_tickets.php?client_id=$client_id$client_url' },";
}
diff --git a/contact_details.php b/contact_details.php
index 0c1ca035..58c4acda 100644
--- a/contact_details.php
+++ b/contact_details.php
@@ -93,9 +93,9 @@ if (isset($_GET['contact_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_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);
@@ -683,11 +683,11 @@ if (isset($_GET['contact_id'])) {
@@ -695,14 +695,14 @@ if (isset($_GET['contact_id'])) {
-
+
- |
- |
- |
+ |
+ |
+ |
diff --git a/database_updates.php b/database_updates.php
index f7617d2a..2fda14d4 100644
--- a/database_updates.php
+++ b/database_updates.php
@@ -2517,10 +2517,22 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) {
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.9.5'");
}
- // if (CURRENT_DATABASE_VERSION == '1.9.5') {
- // // Insert queries here required to update to DB version 1.9.6
+ if (CURRENT_DATABASE_VERSION == '1.9.5') {
+ mysqli_query($mysqli,
+ "CREATE TABLE `recurring_ticket_assets` (
+ `recurring_ticket_id` INT(11) NOT NULL,
+ `asset_id` INT(11) NOT NULL,
+ PRIMARY KEY (`recurring_ticket_id`,`asset_id`),
+ FOREIGN KEY (`asset_id`) REFERENCES `assets`(`asset_id`) ON DELETE CASCADE,
+ FOREIGN KEY (`recurring_ticket_id`) REFERENCES `recurring_tickets`(`recurring_ticket_id`) ON DELETE CASCADE
+ )");
+ mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.9.6'");
+ }
+
+ // if (CURRENT_DATABASE_VERSION == '1.9.6') {
+ // // Insert queries here required to update to DB version 1.9.7
// // Then, update the database to the next sequential version
- // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.9.6'");
+ // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.9.7'");
// }
} else {
diff --git a/db.sql b/db.sql
index 0694d741..de4917c5 100644
--- a/db.sql
+++ b/db.sql
@@ -1494,6 +1494,23 @@ CREATE TABLE `recurring_payments` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `recurring_ticket_assets`
+--
+
+DROP TABLE IF EXISTS `recurring_ticket_assets`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recurring_ticket_assets` (
+ `recurring_ticket_id` int(11) NOT NULL,
+ `asset_id` int(11) NOT NULL,
+ PRIMARY KEY (`recurring_ticket_id`,`asset_id`),
+ KEY `asset_id` (`asset_id`),
+ CONSTRAINT `recurring_ticket_assets_ibfk_1` FOREIGN KEY (`asset_id`) REFERENCES `assets` (`asset_id`) ON DELETE CASCADE,
+ CONSTRAINT `recurring_ticket_assets_ibfk_2` FOREIGN KEY (`recurring_ticket_id`) REFERENCES `recurring_tickets` (`recurring_ticket_id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `recurring_tickets`
--
@@ -2400,4 +2417,4 @@ CREATE TABLE `vendors` (
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2025-03-11 18:31:54
+-- Dump completed on 2025-03-11 19:35:52
diff --git a/global_search.php b/global_search.php
index 9e1d01e4..b1455cda 100644
--- a/global_search.php
+++ b/global_search.php
@@ -91,12 +91,12 @@ if (isset($_GET['query'])) {
ORDER BY ticket_id DESC LIMIT 5"
);
- $sql_recurring_tickets = mysqli_query($mysqli, "SELECT * FROM scheduled_tickets
- LEFT JOIN clients ON scheduled_ticket_client_id = client_id
- WHERE (scheduled_ticket_subject LIKE '%$query%'
- OR scheduled_ticket_details LIKE '%$query%')
+ $sql_recurring_tickets = mysqli_query($mysqli, "SELECT * FROM recurring_tickets
+ LEFT JOIN clients ON recurring_ticket_client_id = client_id
+ WHERE (recurring_ticket_subject LIKE '%$query%'
+ OR recurring_ticket_details LIKE '%$query%')
$access_permission_query
- ORDER BY scheduled_ticket_id DESC LIMIT 5"
+ ORDER BY recurring_ticket_id DESC LIMIT 5"
);
$sql_logins = mysqli_query($mysqli, "SELECT * FROM logins
@@ -544,18 +544,18 @@ if (isset($_GET['query'])) {
|
- |
- |
- |
+ |
+ |
+ |
|
diff --git a/includes/database_version.php b/includes/database_version.php
index 34ef3cc8..a24d286b 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.9.5");
+DEFINE("LATEST_DATABASE_VERSION", "1.9.6");
diff --git a/modals/recurring_ticket_add_modal.php b/modals/recurring_ticket_add_modal.php
index cdc63a44..e37b2f44 100644
--- a/modals/recurring_ticket_add_modal.php
+++ b/modals/recurring_ticket_add_modal.php
@@ -201,6 +201,31 @@
+
+
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");
}
}
|