Depreciate MySQL and GD image graphs
[contractdashboard.git] / search_autosuggest.php
blob:a/search_autosuggest.php -> blob:b/search_autosuggest.php
--- a/search_autosuggest.php
+++ b/search_autosuggest.php
@@ -1,74 +1,88 @@
 <?php
+
 include_once ("./lib/common.inc.php");
 $input = strtolower($_REQUEST['input']);
 $len = strlen($input);
-$limit = isset($_GET['limit']) ? (int)$_GET['limit'] : 0;
+$limit = isset($_GET['limit']) ? (int) $_GET['limit'] : 0;
 $aResults = array();
 $count = 0;
-if ($len) {
-  $query = 'SELECT MAX("supplierName"), MAX("supplierABN"), count(*) as count
+if ($len > 2) {
+    $query = 'SELECT text_mode("supplierName"), MAX("supplierABN"), count(*) as count
 FROM contractnotice
-WHERE "supplierName" ILIKE :supplierName
+WHERE "supplierName" ILIKE :supplierName or "supplierABN"::text = :supplierABN
 GROUP BY "supplierName"
 ORDER BY count(*) DESC
 LIMIT 4;
 ';
-$query = $conn->prepare($query);
-$supplierName = $input.'%';
-$query->bindParam(":supplierName", $supplierName);
-  $query->execute();
-  if (!$query) {
+    $query = $conn->prepare($query);
+    $supplierName = $input . '%';
+    $query->bindParam(":supplierName", $supplierName);
+    $supplierABN = $input ;
+    $query->bindParam(":supplierABN", $supplierABN);
+    $query->execute();
     databaseError($conn->errorInfo());
-  }
-  foreach ($query->fetchAll() as $row) {
-    $count++;
-    $aResults[] = array(
-      "id" => "supplier-".$row[1].'-'.$row[0],
-      "value" => htmlspecialchars($row[0]) ,
-      "info" => htmlspecialchars("Supplier - ". $row['count']." records")
-    );
-  }
-  $query = 'SELECT MAX("agencyName"), count(*) as count
+    foreach ($query->fetchAll() as $row) {
+        $count++;
+        $aResults[] = array(
+            "id" => "supplier-" . $row[1] . '-' . htmlspecialchars($row[0]),
+            "value" => htmlspecialchars($row[0]),
+            "info" => htmlspecialchars("Supplier - " . $row['count'] . " records")
+        );
+    }
+    $query = 'SELECT MAX("agencyName"), count(*) as count
 FROM contractnotice
 WHERE "agencyName" ILIKE :agencyName
 GROUP BY "agencyName"
 ORDER BY count DESC
 LIMIT 4;';
-$query = $conn->prepare($query);
-$agencyName = $input.'%';
-$query->bindParam(":agencyName", $agencyName);
-  $query->execute();
-  if (!$query) {
+    $query = $conn->prepare($query);
+    $agencyName = $input . '%';
+    $query->bindParam(":agencyName", $agencyName);
+    $query->execute();
     databaseError($conn->errorInfo());
-  }
-  foreach ($query->fetchAll() as $row) {
-    $count++;
-    $aResults[] = array(
-      "id" => "agency-".$row[0],
-      "value" => htmlspecialchars($row[0]) ,
-      "info" => htmlspecialchars("Government Agency - ". $row['count']." records")
-    );
-  }
+    foreach ($query->fetchAll() as $row) {
+        $count++;
+        $aResults[] = array(
+            "id" => "agency-" . $row[0],
+            "value" => htmlspecialchars($row[0]),
+            "info" => htmlspecialchars("Government Agency - " . $row['count'] . " records")
+        );
+    }
+        $query = "SELECT \"CNID\", description, value FROM contractnotice
+WHERE to_tsvector('english', description) @@ plainto_tsquery('english', :input)";
+    $query = $conn->prepare($query);
+    $query->bindParam(":input", $input);
+    $query->execute();
+    databaseError($conn->errorInfo());
+    foreach ($query->fetchAll() as $row) {
+        $count++;
+        $aResults[] = array(
+            "id" => "cnid-" . $row[0],
+            "value" => htmlspecialchars($row['description']),
+            "info" => htmlspecialchars("Contract Notice - Value ".$row['value'])
+        );
+    }
 }
 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
 header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
 header("Pragma: no-cache"); // HTTP/1.0
 if (isset($_REQUEST['json'])) {
-  header("Content-Type: application/json");
-  echo "{\"results\": [";
-  $arr = array();
-  for ($i = 0;$i < count($aResults);$i++) {
-    $arr[] = "{\"id\": \"" . $aResults[$i]['id'] . "\", \"value\": \"" . $aResults[$i]['value'] . "\", \"info\": \"\"}";
-  }
-  echo implode(", ", $arr);
-  echo "]}";
+    header("Content-Type: application/json");
+    echo "{\"results\": [";
+    $arr = array();
+    for ($i = 0; $i < count($aResults); $i++) {
+        $arr[] = "{\"id\": \"" . $aResults[$i]['id'] . "\", \"value\": \"" . $aResults[$i]['value'] . "\", \"info\": \"\"}";
+    }
+    echo implode(", ", $arr);
+    echo "]}";
 } else {
-  header("Content-Type: text/xml");
-  echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?><results>";
-  for ($i = 0;$i < count($aResults);$i++) {
-    echo "<rs id=\"" . $aResults[$i]['id'] . "\" info=\"" . $aResults[$i]['info'] . "\">" . $aResults[$i]['value'] . "</rs>";
-  }
-  echo "</results>";
+    header("Content-Type: text/xml");
+    echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?><results>";
+    for ($i = 0; $i < count($aResults); $i++) {
+        echo "<rs id=\"" . $aResults[$i]['id'] . "\" info=\"" . $aResults[$i]['info'] . "\">" . $aResults[$i]['value'] . "</rs>";
+    }
+    echo "</results>";
 }
 ?>
+