From 67ea16e4fce2d9641c2d8253c833e221ba19efef Mon Sep 17 00:00:00 2001 From: Marcus Hill Date: Sat, 25 Feb 2023 19:00:31 +0000 Subject: [PATCH 1/4] Allow searching the main clients list by client tags. - DB Change: Prefixed columns in client_tags table with client_tags_ - Updated existing SQL references to client_tags.client_id and client_tags.tag_id to new names - clients.php: Added SQL joins/where/groupby logic to allow searching via tags --- clients.php | 10 ++++++++-- database_updates.php | 15 ++++++++++++--- database_version.php | 2 +- db.sql | 6 +++--- inc_all_client.php | 2 +- post.php | 12 ++++++------ ticket.php | 12 ++++++------ 7 files changed, 37 insertions(+), 22 deletions(-) diff --git a/clients.php b/clients.php index a0789df3..60cfaab3 100644 --- a/clients.php +++ b/clients.php @@ -14,14 +14,20 @@ $sql = mysqli_query( "SELECT SQL_CALC_FOUND_ROWS * FROM clients LEFT JOIN contacts ON clients.primary_contact = contacts.contact_id AND contact_archived_at IS NULL LEFT JOIN locations ON clients.primary_location = locations.location_id AND location_archived_at IS NULL + LEFT JOIN client_tags on client_tags.client_tags_client_id = clients.client_id + LEFT JOIN tags on tags.tag_id = client_tags.client_tags_tag_id WHERE (client_name LIKE '%$q%' OR client_type LIKE '%$q%' OR client_referral LIKE '%$q%' OR contact_email LIKE '%$q%' OR contact_name LIKE '%$q%' OR contact_phone LIKE '%$phone_query%' OR contact_mobile LIKE '%$phone_query%' OR location_address LIKE '%$q%' OR location_city LIKE '%$q%' OR location_state LIKE '%$q%' OR location_zip LIKE '%$q%') + OR tag_name LIKE '%$q%' AND client_archived_at IS NULL AND DATE(client_created_at) BETWEEN '$dtf' AND '$dtt' AND clients.company_id = $session_company_id + GROUP BY client_id ORDER BY $sb $o LIMIT $record_from, $record_to "); +var_dump(mysqli_error($mysqli)); + $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); ?> @@ -128,11 +134,11 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); $client_updated_at = htmlentities($row['client_updated_at']); $client_archive_at = htmlentities($row['client_archived_at']); - //Client Tags + // Client Tags $client_tag_name_display_array = array(); $client_tag_id_array = array(); - $sql_client_tags = mysqli_query($mysqli, "SELECT * FROM client_tags LEFT JOIN tags ON client_tags.tag_id = tags.tag_id WHERE client_tags.client_id = $client_id"); + $sql_client_tags = mysqli_query($mysqli, "SELECT * FROM client_tags LEFT JOIN tags ON client_tags.client_tags_tag_id = tags.tag_id WHERE client_tags.client_tags_client_id = $client_id"); while ($row = mysqli_fetch_array($sql_client_tags)) { $client_tag_id = intval($row['tag_id']); diff --git a/database_updates.php b/database_updates.php index cc7571de..6c071eca 100644 --- a/database_updates.php +++ b/database_updates.php @@ -860,11 +860,20 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) { mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.4.3'"); } - //if (CURRENT_DATABASE_VERSION == '0.4.3') { - // Insert queries here required to update to DB version 0.4.4 + if (CURRENT_DATABASE_VERSION == '0.4.3') { + // Insert queries here required to update to DB version 0.4.4 + mysqli_query($mysqli, "ALTER TABLE `client_tags` CHANGE `client_id` `client_tags_client_id` INT NOT NULL"); + mysqli_query($mysqli, "ALTER TABLE `client_tags` CHANGE `tag_id` `client_tags_tag_id` INT NOT NULL"); // Then, update the database to the next sequential version - // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.4.4'"); + mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.4.4'"); + } + + //if (CURRENT_DATABASE_VERSION == '0.4.4') { + // Insert queries here required to update to DB version 0.4.5 + + // Then, update the database to the next sequential version + // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.4.5'"); //} } else { diff --git a/database_version.php b/database_version.php index f9840f9c..4878f60e 100644 --- a/database_version.php +++ b/database_version.php @@ -5,4 +5,4 @@ * It is used in conjunction with database_updates.php */ -DEFINE("LATEST_DATABASE_VERSION", "0.4.3"); +DEFINE("LATEST_DATABASE_VERSION", "0.4.4"); diff --git a/db.sql b/db.sql index 114683ad..5b885ae9 100644 --- a/db.sql +++ b/db.sql @@ -207,9 +207,9 @@ DROP TABLE IF EXISTS `client_tags`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `client_tags` ( - `client_id` int(11) NOT NULL, - `tag_id` int(11) NOT NULL, - PRIMARY KEY (`client_id`,`tag_id`) + `client_tags_client_id` int(11) NOT NULL, + `client_tags_tag_id` int(11) NOT NULL, + PRIMARY KEY (`client_tags_client_id`,`client_tags_tag_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/inc_all_client.php b/inc_all_client.php index 7813212e..df6a107a 100644 --- a/inc_all_client.php +++ b/inc_all_client.php @@ -59,7 +59,7 @@ if (isset($_GET['client_id'])) { $client_tag_name_display_array = array(); $client_tag_id_array = array(); - $sql_client_tags = mysqli_query($mysqli, "SELECT * FROM client_tags LEFT JOIN tags ON client_tags.tag_id = tags.tag_id WHERE client_tags.client_id = $client_id"); + $sql_client_tags = mysqli_query($mysqli, "SELECT * FROM client_tags LEFT JOIN tags ON client_tags.client_tags_tag_id = tags.tag_id WHERE client_tags.client_tags_client_id = $client_id"); while ($row = mysqli_fetch_array($sql_client_tags)) { $client_tag_id = intval($row['tag_id']); diff --git a/post.php b/post.php index 9a67ed03..2ce1cf54 100644 --- a/post.php +++ b/post.php @@ -674,7 +674,7 @@ if(isset($_GET['delete_company'])){ $sql = mysqli_query($mysqli,"SELECT client_id FROM clients WHERE company_id = $company_id"); while($row = mysqli_fetch_array($sql)){ $client_id = $row['client_id']; - mysqli_query($mysqli,"DELETE FROM client_tags WHERE client_id = $client_id"); + mysqli_query($mysqli,"DELETE FROM client_tags WHERE client_tags_client_id = $client_id"); mysqli_query($mysqli,"DELETE FROM shared_items WHERE item_client_id = $client_id"); } mysqli_query($mysqli,"DELETE FROM clients WHERE company_id = $company_id"); @@ -1835,7 +1835,7 @@ if(isset($_POST['add_client'])){ if(isset($_POST['tags'])){ foreach($_POST['tags'] as $tag){ $tag = intval($tag); - mysqli_query($mysqli,"INSERT INTO client_tags SET client_id = $client_id, tag_id = $tag"); + mysqli_query($mysqli,"INSERT INTO client_tags SET client_tags_client_id = $client_id, tag_id = $tag"); } } @@ -1897,12 +1897,12 @@ if(isset($_POST['edit_client'])){ //Tags //Delete existing tags - mysqli_query($mysqli,"DELETE FROM client_tags WHERE client_id = $client_id"); + mysqli_query($mysqli,"DELETE FROM client_tags WHERE client_tags_client_id = $client_id"); //Add new tags foreach($_POST['tags'] as $tag){ $tag = intval($tag); - mysqli_query($mysqli,"INSERT INTO client_tags SET client_id = $client_id, tag_id = $tag"); + mysqli_query($mysqli,"INSERT INTO client_tags SET client_tags_client_id = $client_id, client_tags_tag_id = $tag"); } //Logging @@ -1972,7 +1972,7 @@ if(isset($_GET['delete_client'])){ mysqli_query($mysqli,"DELETE FROM api_keys WHERE api_key_client_id = $client_id"); mysqli_query($mysqli,"DELETE FROM assets WHERE asset_client_id = $client_id"); mysqli_query($mysqli,"DELETE FROM certificates WHERE certificate_client_id = $client_id"); - mysqli_query($mysqli,"DELETE FROM client_tags WHERE client_id = $client_id"); + mysqli_query($mysqli,"DELETE FROM client_tags WHERE client_tags_client_id = $client_id"); mysqli_query($mysqli,"DELETE FROM contacts WHERE contact_client_id = $client_id"); mysqli_query($mysqli,"DELETE FROM documents WHERE document_client_id = $client_id"); @@ -7744,7 +7744,7 @@ if(isset($_GET['deactivate_shared_item'])){ mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Sharing', log_action = 'Delete', log_description = '$session_name deactivated shared $item_type link. Item ID: $item_related_id. Share ID $item_id', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_client_id = $item_client_id, log_user_id = $session_user_id, log_entity_id = $item_id, company_id = $session_company_id"); $_SESSION['alert_message'] = "Link deactivated"; - + header("Location: " . $_SERVER["HTTP_REFERER"]); } diff --git a/ticket.php b/ticket.php index 3d8bdcfc..004c45d6 100644 --- a/ticket.php +++ b/ticket.php @@ -28,7 +28,7 @@ if (isset($_GET['ticket_id'])) { $client_name = htmlentities($row['client_name']); $client_type = htmlentities($row['client_type']); $client_website = htmlentities($row['client_website']); - + $client_net_terms = intval($row['client_net_terms']); if ($client_net_terms == 0) { $client_net_terms = $config_default_net_terms; @@ -51,7 +51,7 @@ if (isset($_GET['ticket_id'])) { $ticket_priority_display = "-"; } $ticket_feedback = htmlentities($row['ticket_feedback']); - + $ticket_status = htmlentities($row['ticket_status']); if ($ticket_status == "Open") { $ticket_status_display = "$ticket_status"; @@ -60,12 +60,12 @@ if (isset($_GET['ticket_id'])) { } else { $ticket_status_display = "$ticket_status"; } - + $ticket_created_at = htmlentities($row['ticket_created_at']); $ticket_date = date('Y-m-d', strtotime($ticket_created_at)); $ticket_updated_at = htmlentities($row['ticket_updated_at']); $ticket_closed_at = htmlentities($row['ticket_closed_at']); - + $ticket_assigned_to = intval($row['ticket_assigned_to']); if (empty($ticket_assigned_to)) { $ticket_assigned_to_display = "Not Assigned"; @@ -141,7 +141,7 @@ if (isset($_GET['ticket_id'])) { //Client Tags $client_tag_name_display_array = array(); $client_tag_id_array = array(); - $sql_client_tags = mysqli_query($mysqli, "SELECT * FROM client_tags LEFT JOIN tags ON client_tags.tag_id = tags.tag_id WHERE client_tags.client_id = $client_id"); + $sql_client_tags = mysqli_query($mysqli, "SELECT * FROM client_tags LEFT JOIN tags ON client_tags.client_tags_tag_id = tags.tag_id WHERE client_tags.client_tags_client_id = $client_id"); while ($row = mysqli_fetch_array($sql_client_tags)) { $client_tag_id = intval($row['tag_id']); @@ -188,7 +188,7 @@ if (isset($_GET['ticket_id'])) { // Get technicians to assign the ticket to $sql_assign_to_select = mysqli_query( - $mysqli, + $mysqli, "SELECT users.user_id, user_name FROM users LEFT JOIN user_companies ON users.user_id = user_companies.user_id LEFT JOIN user_settings on users.user_id = user_settings.user_id From a3267f213b2411779359d127436590b7b5d8e38d Mon Sep 17 00:00:00 2001 From: Marcus Hill Date: Sat, 25 Feb 2023 19:04:10 +0000 Subject: [PATCH 2/4] Rm testing string --- clients.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/clients.php b/clients.php index 60cfaab3..806feb46 100644 --- a/clients.php +++ b/clients.php @@ -26,8 +26,6 @@ $sql = mysqli_query( ORDER BY $sb $o LIMIT $record_from, $record_to "); -var_dump(mysqli_error($mysqli)); - $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); ?> From c62a52b0200a1766600cd67cf3f4192a9e244077 Mon Sep 17 00:00:00 2001 From: Marcus Hill Date: Sat, 25 Feb 2023 19:20:22 +0000 Subject: [PATCH 3/4] Merge tag fix --- settings_tags.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/settings_tags.php b/settings_tags.php index 1fe5280a..550e4307 100644 --- a/settings_tags.php +++ b/settings_tags.php @@ -19,6 +19,8 @@ $sql = mysqli_query( $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); +$colors_used_array = []; + if ($num_rows > 0) { //Colors Used $sql_colors_used = mysqli_query( From 3924e67dd17b3b18b5bade3b7f2d9e6076f3ee0e Mon Sep 17 00:00:00 2001 From: Marcus Hill Date: Sat, 25 Feb 2023 19:24:48 +0000 Subject: [PATCH 4/4] Rename field as part of adding tag search --- post.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/post.php b/post.php index 2ce1cf54..49b2bdc8 100644 --- a/post.php +++ b/post.php @@ -1835,7 +1835,7 @@ if(isset($_POST['add_client'])){ if(isset($_POST['tags'])){ foreach($_POST['tags'] as $tag){ $tag = intval($tag); - mysqli_query($mysqli,"INSERT INTO client_tags SET client_tags_client_id = $client_id, tag_id = $tag"); + mysqli_query($mysqli,"INSERT INTO client_tags SET client_tags_client_id = $client_id, client_tags_tag_id = $tag"); } }