Feature: Clients and Locations can now be searchable with multiple tags selected
This commit is contained in:
+31
-1
@@ -6,6 +6,19 @@ $order = "ASC";
|
|||||||
|
|
||||||
require_once "inc_all_client.php";
|
require_once "inc_all_client.php";
|
||||||
|
|
||||||
|
// Tags Filter
|
||||||
|
if (isset($_GET['tags']) && is_array($_GET['tags']) && !empty($_GET['tags'])) {
|
||||||
|
// Sanitize each element of the status array
|
||||||
|
$sanitizedTags = array();
|
||||||
|
foreach ($_GET['tags'] as $tag) {
|
||||||
|
// Escape each status to prevent SQL injection
|
||||||
|
$sanitizedTags[] = "'" . intval($tag) . "'";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the sanitized tags into a comma-separated string
|
||||||
|
$sanitizedTagsString = implode(",", $sanitizedTags);
|
||||||
|
$tag_query = "AND tags.tag_id IN ($sanitizedTagsString)";
|
||||||
|
}
|
||||||
|
|
||||||
//Rebuild URL
|
//Rebuild URL
|
||||||
$url_query_strings_sort = http_build_query($get_copy);
|
$url_query_strings_sort = http_build_query($get_copy);
|
||||||
@@ -16,6 +29,7 @@ $sql = mysqli_query(
|
|||||||
LEFT JOIN location_tags ON location_tags.location_id = locations.location_id
|
LEFT JOIN location_tags ON location_tags.location_id = locations.location_id
|
||||||
LEFT JOIN tags ON tags.tag_id = location_tags.tag_id
|
LEFT JOIN tags ON tags.tag_id = location_tags.tag_id
|
||||||
WHERE location_client_id = $client_id
|
WHERE location_client_id = $client_id
|
||||||
|
$tag_query
|
||||||
AND location_$archive_query
|
AND location_$archive_query
|
||||||
AND (location_name LIKE '%$q%' OR location_description LIKE '%$q%' OR location_address LIKE '%$q%' OR location_phone LIKE '%$phone_query%' OR tag_name LIKE '%$q%')
|
AND (location_name LIKE '%$q%' OR location_description LIKE '%$q%' OR location_address LIKE '%$q%' OR location_phone LIKE '%$phone_query%' OR tag_name LIKE '%$q%')
|
||||||
GROUP BY location_id
|
GROUP BY location_id
|
||||||
@@ -62,7 +76,23 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-8">
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<select onchange="this.form.submit()" class="form-control select2" name="tags[]" data-placeholder="- Select Tags -" multiple>
|
||||||
|
|
||||||
|
<?php $sql_tags = mysqli_query($mysqli, "SELECT * FROM tags WHERE tag_type = 2");
|
||||||
|
while ($row = mysqli_fetch_array($sql_tags)) {
|
||||||
|
$tag_id = intval($row['tag_id']);
|
||||||
|
$tag_name = nullable_htmlentities($row['tag_name']); ?>
|
||||||
|
|
||||||
|
<option value="<?php echo $tag_id ?>" <?php if (isset($_GET['tags']) && is_array($_GET['tags']) && in_array($tag_id, $_GET['tags'])) { echo 'selected'; } ?>> <?php echo $tag_name ?> </option>
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
<div class="float-right">
|
<div class="float-right">
|
||||||
<?php if($archived == 1){ ?>
|
<?php if($archived == 1){ ?>
|
||||||
<a href="?client_id=<?php echo $client_id; ?>&archived=0" class="btn btn-primary"><i class="fa fa-fw fa-archive mr-2"></i>Archived</a>
|
<a href="?client_id=<?php echo $client_id; ?>&archived=0" class="btn btn-primary"><i class="fa fa-fw fa-archive mr-2"></i>Archived</a>
|
||||||
|
|||||||
+47
-1
@@ -20,6 +20,20 @@ if($leads == 1){
|
|||||||
$leads_query = 0;
|
$leads_query = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tags Filter
|
||||||
|
if (isset($_GET['tags']) && is_array($_GET['tags']) && !empty($_GET['tags'])) {
|
||||||
|
// Sanitize each element of the status array
|
||||||
|
$sanitizedTags = array();
|
||||||
|
foreach ($_GET['tags'] as $tag) {
|
||||||
|
// Escape each status to prevent SQL injection
|
||||||
|
$sanitizedTags[] = "'" . intval($tag) . "'";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the sanitized tags into a comma-separated string
|
||||||
|
$sanitizedTagsString = implode(",", $sanitizedTags);
|
||||||
|
$tag_query = "AND tags.tag_id IN ($sanitizedTagsString)";
|
||||||
|
}
|
||||||
|
|
||||||
// Industry Filter
|
// Industry Filter
|
||||||
if (isset($_GET['industry']) & !empty($_GET['industry'])) {
|
if (isset($_GET['industry']) & !empty($_GET['industry'])) {
|
||||||
$industry_query = "AND (clients.client_type = '" . sanitizeInput($_GET['industry']) . "')";
|
$industry_query = "AND (clients.client_type = '" . sanitizeInput($_GET['industry']) . "')";
|
||||||
@@ -59,6 +73,7 @@ $sql = mysqli_query(
|
|||||||
AND DATE(client_created_at) BETWEEN '$dtf' AND '$dtt'
|
AND DATE(client_created_at) BETWEEN '$dtf' AND '$dtt'
|
||||||
AND client_lead = $leads
|
AND client_lead = $leads
|
||||||
$access_permission_query
|
$access_permission_query
|
||||||
|
$tag_query
|
||||||
$industry_query
|
$industry_query
|
||||||
$referral_query
|
$referral_query
|
||||||
GROUP BY client_id
|
GROUP BY client_id
|
||||||
@@ -122,7 +137,22 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="collapse mt-3 <?php if ($_GET['dtf'] || $_GET['industry'] || $_GET['referral'] || $_GET['canned_date'] !== "custom" ) { echo "show"; } ?>" id="advancedFilter">
|
<div
|
||||||
|
class="collapse mt-3
|
||||||
|
<?php
|
||||||
|
if (
|
||||||
|
$_GET['dtf']
|
||||||
|
|| $_GET['industry']
|
||||||
|
|| $_GET['referral']
|
||||||
|
|| (isset($_GET['tags']) && is_array($_GET['tags']))
|
||||||
|
|| $_GET['canned_date'] !== "custom" )
|
||||||
|
{
|
||||||
|
echo "show";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
"
|
||||||
|
id="advancedFilter"
|
||||||
|
>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@@ -152,6 +182,22 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
|
|||||||
<input onchange="this.form.submit()" type="date" class="form-control" name="dtt" max="2999-12-31" value="<?php echo nullable_htmlentities($dtt); ?>">
|
<input onchange="this.form.submit()" type="date" class="form-control" name="dtt" max="2999-12-31" value="<?php echo nullable_htmlentities($dtt); ?>">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Tag</label>
|
||||||
|
<select onchange="this.form.submit()" class="form-control select2" name="tags[]" data-placeholder="- Select Tags -" multiple>
|
||||||
|
<?php
|
||||||
|
$sql_tags = mysqli_query($mysqli, "SELECT * FROM tags WHERE tag_type = 1");
|
||||||
|
while ($row = mysqli_fetch_array($sql_tags)) {
|
||||||
|
$tag_id = intval($row['tag_id']);
|
||||||
|
$tag_name = nullable_htmlentities($row['tag_name']); ?>
|
||||||
|
|
||||||
|
<option value="<?php echo $tag_id ?>" <?php if (isset($_GET['tags']) && is_array($_GET['tags']) && in_array($tag_id, $_GET['tags'])) { echo 'selected'; } ?>> <?php echo $tag_name ?> </option>
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Industry</label>
|
<label>Industry</label>
|
||||||
|
|||||||
+4
-2
@@ -176,10 +176,12 @@ $user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
|||||||
<div
|
<div
|
||||||
class="collapse
|
class="collapse
|
||||||
<?php
|
<?php
|
||||||
if (!empty($_GET['dtf'])
|
if (
|
||||||
|
!empty($_GET['dtf'])
|
||||||
|| (isset($_GET['canned_date']) && $_GET['canned_date'] !== "custom")
|
|| (isset($_GET['canned_date']) && $_GET['canned_date'] !== "custom")
|
||||||
|| (isset($_GET['status']) && is_array($_GET['status'])
|
|| (isset($_GET['status']) && is_array($_GET['status'])
|
||||||
|| (isset($_GET['assigned']) && $_GET['assigned'])))
|
|| (isset($_GET['assigned']) && $_GET['assigned']
|
||||||
|
)))
|
||||||
{ echo "show"; }
|
{ echo "show"; }
|
||||||
?>"
|
?>"
|
||||||
id="advancedFilter"
|
id="advancedFilter"
|
||||||
|
|||||||
Reference in New Issue
Block a user