Improved search form
[infodrom.org/lists.infodrom.org] / src / search.php3
index 5edd53c..22786e2 100644 (file)
@@ -1,13 +1,63 @@
 <?
-  if (isset($_POST["keyword"]) && isset($_POST["site"])) {
-    $url = "http://" . $_POST["site"] . "/search?as_q=" . ereg_replace (" ", "+", $_POST["keyword"])
+  if (isset ($_GET["js"]) && $_GET["js"] == 1) {
+    if (!isset ($_GET["keyword"]) || !strlen($_GET["keyword"]) ||
+       !isset ($_GET["lang"]) || !strlen($_GET["lang"]) ||
+       ($_GET["lang"] != 'de' && $_GET["lang"] != 'en'))
+      exit();
+    $dbh = pg_pconnect ("", "", "web");
+    if ($dbh) {
+      $query = sprintf ("SELECT keyword FROM search_compiled "
+                      ."WHERE keyword LIKE '%s%%' AND language = '%s' "
+                      ."ORDER BY scores DESC,keyword LIMIT 10",
+                        pg_escape_string($_GET["keyword"]), $_GET["lang"]);
+      $sth = pg_exec ($dbh, $query);
+      $result = array ();
+      $count = 0;
+      for ($nr=0; $nr < pg_NumRows ($sth) && $count < 85; $nr++) {
+        $row = pg_fetch_array ($sth, $nr);
+       if ($result)
+         $count += 2;
+        $result[] = $row["keyword"];
+       $count += strlen($row["keyword"]);
+      }
+      if ($count > 85)
+        unset ($result[count($result)-1]);
+      echo json_encode ($result) . "\n";
+      exit();
+    } else {
+      exit();
+    }
+  }
+
+
+  if ($_REQUEST[keyword] && ($_REQUEST[site] || $_GET[lang])) {
+    $dbh = pg_pconnect ("", "", "web");
+    if ($dbh) {
+      if ($_REQUEST[site] == "www.google.de" || $_GET[lang] == "de") {
+        $lang = "de";
+        $site = "www.google.de";
+      } else {
+        $lang = "en";
+        $site = "www.google.com";
+      }
+
+      $query = sprintf ("INSERT INTO search_keywords VALUES ('%s','%s','%s','%s')",
+                       pg_escape_string($_REQUEST[keyword]),
+                       $lang,
+                       date ("Y-m-d H:i"),
+                       $_SERVER[REMOTE_ADDR]);
+      pg_exec ($dbh, $query);
+    }
+
+    $url = "http://" . $site . "/search?as_q=" . ereg_replace (" ", "+", $_REQUEST[keyword])
           . "&as_sitesearch=infodrom.org";
 
     header ("Location: $url");
-    mail ("joey@luonnotar.infodrom.org", "http://lists.infodrom.org/search.html",
-"Site    : $_POST["site"]
-Keywords: $_POST["keyword"]
-Host    : " . ($REMOTE_HOST?$REMOTE_HOST:$REMOTE_ADDR) . "
+    mail ("joey@luonnotar.infodrom.org", "New Search Request",
+"Site    : $site
+Keywords: $_REQUEST[keyword]
+Host    : " . $_SERVER[REMOTE_ADDR] . "
+SCRIPT  : " . $_SERVER[SCRIPT_URI] . "
 URL     : " . $url . "\n", "From: Infodrom Webserver <www-data@luonnotar.infodrom.org>");
   } else {
     header ("Location: search.html");