Correctly filter city or area. 2013-05-13
authorIain Patterson <me@iain.cx>
Mon, 13 May 2013 12:22:26 +0000 (08:22 -0400)
committerIain Patterson <me@iain.cx>
Mon, 13 May 2013 12:49:33 +0000 (08:49 -0400)
When separate dropdowns for city and area are shown in one form we must
ensure that the correct search criterion is applied.  Previously we
checked for an area or city ID parameter but both of those will be
present in the form submission.  Instead we check for the name of the
submit button.

lib/contact.php
lib/donation.php
lib/hub.php

index de4dc82..25aab58 100644 (file)
     header(sprintf("Location: http%s://%s/%s/search/%s", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, urlencode($_POST['search_contact'])));
     exit;
   }
-  else if ($_POST['area_id']) {
+  else if ($_POST['show_in_area']) {
     $q = new AreaQuery;
     $area = $q->findOneById($_POST['area_id']);
     header(sprintf("Location: http%s://%s/%s/in/area/%s/%d", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, urlencode($area->getName()), $_POST['area_id']));
     exit;
   }
-  else if ($_POST['city_id']) {
+  else if ($_POST['show_in_city']) {
     $q = new CityQuery;
     $city = $q->findOneById($_POST['city_id']);
     header(sprintf("Location: http%s://%s/%s/in/city/%s/%d", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, urlencode($city->getName()), $_POST['city_id']));
       option("area_id", $area->getId(), get_area_displayname($area));
     }
     echo "</select>\n";
-    echo "<input type=\"submit\" value=\"Show\">\n";
+    submit("show_in_area", "Show");
   }
 
   function show_contact_cities_form($city_id = null) {
       option("city_id", $city->getId(), get_city_displayname($city), $city_id);
     }
     echo "</select>\n";
-    echo "<input type=\"submit\" value=\"Show\">\n";
+    submit("show_in_city", "Show");
   }
 
   function show_contact_search_form() {
index 4d928fb..afcd01b 100644 (file)
       echo "<p>No such contact!</p>\n";
     }
   }
-  else if ($_POST['area_id']) {
+  else if ($_POST['show_in_area']) {
     $q = new AreaQuery;
     $area = $q->findOneById($_POST['area_id']);
     /* XXX: Function to build URL because we need to set a class in links. */
     header(sprintf("Location: http%s://%s/%s/in/area/%s/%d", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, urlencode($area->getName()), $_POST['area_id']));
     exit;
   }
-  else if ($_POST['city_id']) {
+  else if ($_POST['show_in_city']) {
     $q = new CityQuery;
     $city = $q->findOneById($_POST['city_id']);
     header(sprintf("Location: http%s://%s/%s/in/city/%s/%d", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, urlencode($city->getName()), $_POST['city_id']));
       option("area_id", $area->getId(), get_area_displayname($area));
     }
     echo "</select>\n";
-    echo "<input type=\"submit\" value=\"Show\">\n";
+    submit("show_in_area", "Show");
   }
 
   function show_donation_cities_form($city_id = null) {
       option("city_id", $city->getId(), get_city_displayname($city), $city_id);
     }
     echo "</select>\n";
-    echo "<input type=\"submit\" value=\"Show\">\n";
+    submit("show_in_city", "Show");
   }
 
   function show_donation_forms($city_id) {
index 7a18d47..12f27cf 100644 (file)
       echo "<p>No such hub!</p>\n";
     }
   }
-  else if ($_POST['area_id']) {
+  else if ($_POST['show_in_area']) {
     $q = new AreaQuery;
     $area = $q->findOneById($_POST['area_id']);
     header(sprintf("Location: http%s://%s/%s/in/area/%s/%d", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, urlencode($area->getName()), $_POST['area_id']));
     exit;
   }
-  else if ($_POST['city_id']) {
+  else if ($_POST['show_in_city']) {
     $q = new CityQuery;
     $city = $q->findOneById($_POST['city_id']);
     header(sprintf("Location: http%s://%s/%s/in/city/%s/%d", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, urlencode($city->getName()), $_POST['city_id']));
       option("area_id", $area->getId(), get_area_displayname($area));
     }
     echo "</select>\n";
-    echo "<input type=\"submit\" value=\"Show\">\n";
+    submit("show_in_area", "Show");
   }
 
   function show_hub_cities_form($city_id = null) {
       option("city_id", $city->getId(), get_city_displayname($city), $city_id);
     }
     echo "</select>\n";
-    echo "<input type=\"submit\" value=\"Show\">\n";
+    submit("show_in_city", "Show");
   }
 
   function show_hub_forms($city_id) {