X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fcontact.php;h=2dd65ab101cb9bf36d8ffbbab856e08f1704cdd7;hb=5707529d8056238ba42e16f55b23b15a5e8c4d9b;hp=166fd9784b98ca8a5d84f5c443dcea8fc17b8afc;hpb=8549c1776033e924ea50328bd2434529d85b5669;p=readifood.git
diff --git a/lib/contact.php b/lib/contact.php
index 166fd97..2dd65ab 100644
--- a/lib/contact.php
+++ b/lib/contact.php
@@ -44,19 +44,27 @@
exit;
}
- function show_contact_summary(&$contact) {
- echo "
\nContact " . $contact->getLink();
+ function show_contact_summary(&$contact, $editing = false) {
+ if ($editing) echo "
Contact: " . htmlspecialchars($contact->getDisplayname()) . "";
+ else echo "
\nContact " . $contact->getStrongLink();
$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();
}
$area = get_contact_area($contact);
echo " in " . $area->getLink();
+ $city = get_contact_city($contact);
+ echo ", " . $city->getLink(get_city_displayname($city));
}
function show_contacts($offset, $per_page, $address_ids) {
@@ -121,7 +129,6 @@
return;
}
- echo "
\n";
}
function show_contact_cities_form($city_id = null) {
@@ -141,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 " Order " . $order->getStrongLink($order->getId()) . ": " . get_order_displayname($order) . " \n";
+ }
+ echo " | \n";
+ echo "
\n";
+ }
+ }
/* Role. */
echo "\n";
@@ -181,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";
@@ -247,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) {
@@ -258,17 +321,17 @@
return;
}
- echo "\n";
+ end_form();
}
function show_add_new_contact_form() {
@@ -281,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++) {
@@ -326,6 +389,7 @@
}
/* Get address. */
+ $area_id = $_POST['area_id'];
$line = $_POST['address'];
$postcode = $_POST['postcode'];
$q = new AddressQuery;
@@ -351,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);
@@ -360,6 +429,8 @@
$contact->setTelephone1($telephone1);
$contact->setTelephone2($telephone2);
$contact->setEmail($email);
+ $contact->setParcel($parcel);
+ $contact->setNotes($notes);
$contact->setAddressId($address->getId());
try {
@@ -421,19 +492,8 @@
else $contact = get_contact_by_name($name);
if (! $contact) return;
- echo "\n";
+ end_form();
}
/* /contact/in/area/Cambridge/1 */
@@ -474,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]);
@@ -491,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);
?>