Search by telephone. 2017-11-21
authorIain Patterson <me@iain.cx>
Tue, 21 Nov 2017 14:03:31 +0000 (09:03 -0500)
committerIain Patterson <me@iain.cx>
Tue, 21 Nov 2017 14:03:31 +0000 (09:03 -0500)
lib/contact.php

index ee9f3e0..971a9c2 100644 (file)
@@ -30,7 +30,7 @@
     }
   }
   else if ($_POST['search_contact']) {
-    header(sprintf("Location: http%s://%s/%s/search/%s", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, urlencode($_POST['search_contact'])));
+    header(sprintf("Location: http%s://%s/%s/search/%s%s", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, $_POST['search_by_phone'] ? "phone/" : "", urlencode($_POST['search_contact'])));
     exit;
   }
   else if ($_POST['show_in_area']) {
     else echo " none";
   }
 
-  function search_contacts($search) {
+  function search_contacts($search, $phone = false) {
     list($first_page, $per_page) = pagination();
     $q = new ContactQuery;
-    $contacts = $q->filterByDisplayname("%$search%")->orderByForename()->orderBySurname()->orderById('desc')->paginate($first_page, $per_page);
-    echo "<p>Contacts matching '" . htmlspecialchars($search) . "':";
+    if ($phone) $q->filterByTelephone1("%$search%")->_or()->filterByTelephone2("%$search%");
+    else $q->filterByDisplayname("%$search%");
+    $contacts = $q->orderByForename()->orderBySurname()->orderById('desc')->paginate($first_page, $per_page);
+    echo "<p>Contacts matching " . ($phone ? "telephone " : "") . "'" . htmlspecialchars($search) . "':";
     if (count($contacts)) {
       foreach ($contacts as $contact) show_contact_summary($contact);
       show_pagination($contacts);
     echo "</p>\n";
 
     $address_ids = array();
-    $q = new AddressQuery;
-    $addresses = $q->filterByLine("%$search%")->find();
-    foreach ($addresses as $address) $address_ids[] = $address->getId();
-    $q = new AddressQuery;
-    $addresses = $q->filterByPostcode("%$search%")->find();
-    foreach ($addresses as $address) $address_ids[] = $address->getId();
+    if (! $phone) {
+      $q = new AddressQuery;
+      $addresses = $q->filterByLine("%$search%")->find();
+      foreach ($addresses as $address) $address_ids[] = $address->getId();
+      $q = new AddressQuery;
+      $addresses = $q->filterByPostcode("%$search%")->find();
+      foreach ($addresses as $address) $address_ids[] = $address->getId();
 
-    $q = new ContactQuery;
-    $contacts = $q->filterByAddressId($address_ids)->orderByForename()->orderBySurname()->orderById('desc')->paginate($first_page, $per_page);
-    echo "<p>Contacts in address '" . htmlspecialchars($search) . "':";
-    if (count($contacts)) {
-      foreach ($contacts as $contact) show_contact_summary($contact);
-      show_pagination($contacts);
+      $q = new ContactQuery;
+      $contacts = $q->filterByAddressId($address_ids)->orderByForename()->orderBySurname()->orderById('desc')->paginate($first_page, $per_page);
+      echo "<p>Contacts in address '" . htmlspecialchars($search) . "':";
+      if (count($contacts)) {
+        foreach ($contacts as $contact) show_contact_summary($contact);
+        show_pagination($contacts);
+      }
     }
     else echo "none";
     echo "</p>\n";
   function show_contact_search_form() {
     echo "<p>Search for contacts:";
     input("search_contact");
+    echo "<input type=\"checkbox\" id=\"search_by_phone\" name=\"search_by_phone\">";
+    echo "<label for=\"search_by_phone\">by telephone</label>\n";
     echo "<input type=\"submit\" value=\"Search\">\n";
+    echo "</p>\n";
   }
 
   function show_contact_forms($city_id) {
       }
     }
     else if ($parameters[0] == "search") {
-      search_contacts(urldecode($parameters[1]));
+      if ($parameters[1] == "phone") search_contacts(urldecode($parameters[2]), true);
+      else search_contacts(urldecode($parameters[1]));
     }
   }
   list($name, $id, $args) = parse_parameters($parameters);