Allow reordering the delivery list.
[readifood.git] / lib / contact.php
index 25aab58..f376406 100644 (file)
     }
     else echo "none";
     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();
+
+    $q = new ContactQuery;
+    $contacts = $q->filterByAddressId($address_ids)->find();
+    echo "<p>Contacts in address '" . htmlspecialchars($search) . "':";
+    if (count($contacts)) {
+      foreach ($contacts as $contact) show_contact_summary($contact);
+    }
+    else echo "none";
+    echo "</p>\n";
   }
 
   function show_city_contacts($offset, $per_page, $city_name, $city_id = null) {
     /* Postcode. */
     echo "<tr>\n";
     echo "  <td>Postcode</td>\n";
-    echo "  <td>"; input("postcode", $address->getPostcode()); echo get_address_map_link($address); echo "</td>\n";
+    $postcode = $address->getPostcode();
+    if (validate_postcode($postcode)) {
+      echo "  <td>"; input("postcode", $postcode); echo get_address_map_link($address); echo "</td>\n";
+    }
+    else {
+      echo "  <td>"; input("postcode", $address->getPostcode()); echo " (invalid)</td>\n";
+    }
     echo "</tr>\n";
 
     /* Telephone. */
     echo "  <td>";
     for ($i = count($parcel_sizes); $i < count($parcel_contents); $i++) {
       if (1 << $i == $GLOBALS['PARCEL_TOILETRY']) continue;
-      echo "  <input type=\"checkbox\" name=\"parcel_$i\"";
+      echo "  <input type=\"checkbox\" id=\"parcel_$i\" name=\"parcel_$i\"";
       if ($contact->getParcel() & (1 << $i)) echo " checked";
-      echo ">$parcel_contents[$i]\n";
+      echo "><label for=\"parcel_$i\">$parcel_contents[$i]</label>\n";
     }
     echo "</td>\n";
     echo "</tr>\n";
     /* Get address. */
     $area_id = $_POST['area_id'];
     $line = $_POST['address'];
-    $postcode = $_POST['postcode'];
+    $postcode = trim($_POST['postcode']);
+    if ($postcode) {
+      $postcode = format_postcode($_POST['postcode'], true);
+      if (! $postcode) return false;
+    }
     $q = new AddressQuery;
     /* XXX: Finding by area properly? */
     $address = $q->filterByAreaId($area_id)->filterByLine($line)->filterByPostcode($postcode)->findOneOrCreate();
 
     $contact = new Contact;
     if (! update_contact($contact, $area_id, true)) return false;
+    $name = $contact->getDisplayname();
     return $contact->getId();
   }
 
       }
     }
     else if ($parameters[0] == "search") {
-      search_contacts(0, 10, $parameters[1]);
+      search_contacts(0, 10, urldecode($parameters[1]));
     }
   }
   list($name, $id, $args) = parse_parameters($parameters);