X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=lib%2Fcontact.php;h=874c9180add5f4a289818b5ce09ac5bf3d682124;hb=4d4c971953ee3da8282ff748c15241f85d984dab;hp=ccc932c079328ccef7ecb7548efac4c3b4c52f38;hpb=508e918941009544a3992b8ac6815671b93880ca;p=readifood.git
diff --git a/lib/contact.php b/lib/contact.php
index ccc932c..874c918 100644
--- a/lib/contact.php
+++ b/lib/contact.php
@@ -50,9 +50,14 @@
$role = $contact->getRole();
$role_string = get_contact_role_string($contact);
if ($role_string) echo " $role_string";
- if ($role & $GLOBALS['ROLE_DONOR']) printf(" Donations", urlencode($contact->getDisplayname()), $contact->getId());
- if ($role & $GLOBALS['ROLE_REQUESTER']) printf(" Referred", urlencode($contact->getDisplayname()), $contact->getId());
- if ($role & $GLOBALS['ROLE_BENEFICIARY']) printf(" Orders", urlencode($contact->getDisplayname()), $contact->getId());
+ $d = urlencode($contact->getDisplayname());
+ $i = $contact->getId();
+ if ($role & $GLOBALS['ROLE_DONOR']) echo " " . get_small_link("Donations", "/donation/from/contact/%s/%d", $d, $i);
+ if ($role & $GLOBALS['ROLE_REQUESTER']) echo " " . get_small_link("Referred", "/order/from/referrer/%s/%d", $d, $i);
+ if ($role & $GLOBALS['ROLE_BENEFICIARY']) {
+ echo " " . get_small_link("Orders", "/order/to/beneficiary/%s/%d", $d, $contact->getId());
+ if (get_contact_area($contact)) echo " " . get_small_link("Place", "/order/place/for/beneficiary/%s/%d", $d, $i);
+ }
if (check_admin(1)) {
echo " " . $contact->getDeleteLink();
}
@@ -124,7 +129,6 @@
return;
}
- echo "
\n";
}
function show_contact_cities_form($city_id = null) {
@@ -144,7 +147,6 @@
return;
}
- echo "\n";
}
function show_contact_search_form() {
- echo "\n";
}
function show_contact_forms($city_id) {
+ form("noprint standout");
show_contact_areas_form($city_id);
show_contact_cities_form($city_id);
show_contact_search_form();
+ end_form();
}
function show_contact_role_form($role) {
return show_role_form($role, $GLOBALS['contact_roles']);
}
- function show_contact_form($contact = null) {
- global $contact_roles;
+ function show_contact_form($contact = null, $new = false) {
+ global $contact_roles, $parcel_sizes, $parcel_contents;
if (! $contact) $contact = new Contact;
+ else if ($contact->getRole() & $GLOBALS['ROLE_BENEFICIARY']) {
+ $state_mask = $GLOBALS['STATE_ANY'];
+ $state_mask &= ~$GLOBALS['STATE_DELIVERED'];
+ $state_mask &= ~$GLOBALS['STATE_CANCELLED'];
+
+ $orders = get_contact_orders($contact, $state_mask);
+
+ if (count($orders)) {
+ echo "\n";
+ echo " Outstanding orders: | \n";
+ echo "
\n";
+
+ echo "\n";
+ echo " \n";
+ foreach ($orders as $order) {
+ echo " " . get_order_summary($order) . " \n";
+ }
+ echo " | \n";
+ echo "
\n";
+ }
+ }
/* Role. */
echo "\n";
@@ -184,6 +206,14 @@
echo " "; show_contact_role_form($contact->getRole()); echo " | \n";
echo "
\n";
+ /* Date added. */
+ if (! $new) {
+ echo "\n";
+ echo " Registered | \n";
+ echo " " . $contact->getAdded() . " | \n";
+ echo "
\n";
+ }
+
/* Forename. */
echo "\n";
echo " Forename | \n";
@@ -250,6 +280,36 @@
}
echo " \n";
echo "
\n";
+
+ /* Parcel type. */
+ echo "\n";
+ echo " Family unit | \n";
+ echo " | \n";
+ echo "
\n";
+
+ /* Parcel contents. */
+ echo "\n";
+ echo " Dietary requirements | \n";
+ echo " ";
+ for ($i = count($parcel_sizes); $i < count($parcel_contents); $i++) {
+ if (1 << $i == $GLOBALS['PARCEL_TOILETRY']) continue;
+ echo " getParcel() & (1 << $i)) echo " checked";
+ echo ">$parcel_contents[$i]\n";
+ }
+ echo " | \n";
+ echo "
\n";
+
+ /* Notes. */
+ echo "\n";
+ echo " Notes | \n";
+ echo " | \n";
+ echo "
\n";
}
function show_new_contact_form($city_id = null) {
@@ -261,17 +321,17 @@
return;
}
- echo "\n";
+ end_form();
}
function show_add_new_contact_form() {
@@ -284,7 +344,7 @@
return;
}
- echo "\n";
+ end_form();
}
function update_contact(&$contact, $area_id, $new = false) {
- global $contact_roles;
+ global $contact_roles, $parcel_sizes, $parcel_contents;
$role = 0;
for ($i = 0; $i < count($contact_roles); $i++) {
@@ -329,6 +389,7 @@
}
/* Get address. */
+ $area_id = $_POST['area_id'];
$line = $_POST['address'];
$postcode = $_POST['postcode'];
$q = new AddressQuery;
@@ -354,6 +415,11 @@
$telephone1 = $_POST['telephone1'];
$telephone2 = $_POST['telephone2'];
$email = $_POST['email'];
+ $parcel = $_POST['parcel_size'];
+ for ($i = count($parcel_sizes); $i < count($parcel_contents); $i++) {
+ if ($_POST['parcel_' . $i] == "on") $parcel |= (1 << $i);
+ }
+ $notes = $_POST['notes'];
$contact->setRole($role);
$contact->setForename($forename);
@@ -363,6 +429,8 @@
$contact->setTelephone1($telephone1);
$contact->setTelephone2($telephone2);
$contact->setEmail($email);
+ $contact->setParcel($parcel);
+ $contact->setNotes($notes);
$contact->setAddressId($address->getId());
try {
@@ -424,7 +492,7 @@
else $contact = get_contact_by_name($name);
if (! $contact) return;
- echo "\n";
+ end_form();
}
/* /contact/in/area/Cambridge/1 */
@@ -466,8 +534,6 @@
show_city_contacts(0, 10, $parameters[2], $city_id);
break;
}
-
- show_add_new_contact_form($city_id);
}
else if ($parameters[0] == "search") {
search_contacts(0, 10, $parameters[1]);
@@ -483,14 +549,8 @@
}
}
else if (isset($name)) show_contact($name, $id);
- else {
- /* XXX: Shown after adding. */
- show_contact_forms($city_id);
- show_add_new_contact_form($city_id);
- }
- if (count($parameters)) {
- show_contact_forms($city_id);
- }
+ show_contact_forms($city_id);
+ show_add_new_contact_form($city_id);
?>