Use a join against the area and city instead of first finding all
contacts in the desired location.
- function show_orders($requester_ids = null, $beneficiary_ids = null, $state_mask = null) {
+ function show_orders($city_id = null, $area_id = null, $requester_ids = null, $beneficiary_ids = null, $state_mask = null) {
list($first_page, $per_page) = pagination();
/* XXX: Use Propel methods. */
if (isset($state_mask)) $order_ids = get_order_ids_by_state($state_mask);
list($first_page, $per_page) = pagination();
/* XXX: Use Propel methods. */
if (isset($state_mask)) $order_ids = get_order_ids_by_state($state_mask);
if (isset($beneficiary_ids)) $q->filterByBeneficiaryId($beneficiary_ids);
# XXX: Doesn't work.
#if (isset($state_mask)) $q->useOrderStateQuery()->addSelectQuery($latest_state, 'latestState')->where("order_id=latestState.order_id")->where("state & $state_mask")->endUse();
if (isset($beneficiary_ids)) $q->filterByBeneficiaryId($beneficiary_ids);
# XXX: Doesn't work.
#if (isset($state_mask)) $q->useOrderStateQuery()->addSelectQuery($latest_state, 'latestState')->where("order_id=latestState.order_id")->where("state & $state_mask")->endUse();
+ if (isset($city_id) || isset($area_id)) {
+ $q->joinWith('Order.Beneficiary');
+ $q->joinWith('Beneficiary.Address');
+ if (isset($area_id)) $q->where('Address.AreaId=?', $area_id);
+ if (isset($city_id)) {
+ $q->joinWith('Address.Area');
+ $q->where('Area.CityId=?', $city_id);
+ }
+ }
if (isset($state_mask)) $q->filterById($order_ids);
$orders = $q->orderByDate('desc')->orderById('desc')->paginate($first_page, $per_page);
if (count($orders)) {
if (isset($state_mask)) $q->filterById($order_ids);
$orders = $q->orderByDate('desc')->orderById('desc')->paginate($first_page, $per_page);
if (count($orders)) {
if (isset($city_id)) $city = get_city_by_id($city_id);
else if ($city_name) $city = get_city_by_name($city_name);
if ($city) {
if (isset($city_id)) $city = get_city_by_id($city_id);
else if ($city_name) $city = get_city_by_name($city_name);
if ($city) {
- $contacts = get_city_contacts($city->getId(), $GLOBALS['ROLE_BENEFICIARY']);
- $beneficiary_ids = array();
- foreach ($contacts as $contact) $beneficiary_ids[] = $contact->getId();
-
echo "<p>Orders in city " . $city->getLink(get_city_displayname($city)) . ":";
echo "<p>Orders in city " . $city->getLink(get_city_displayname($city)) . ":";
- return show_orders(null, $beneficiary_ids, $state_mask);
+ return show_orders($city->getId(), null, null, null, $state_mask);
}
else echo "<p>No such city!</p>\n";
}
}
else echo "<p>No such city!</p>\n";
}
else if ($contact_name) $contact = get_contact_by_name($contact_name);
if ($contact) {
echo "<p>Orders from referrer " . $contact->getLink() . ":";
else if ($contact_name) $contact = get_contact_by_name($contact_name);
if ($contact) {
echo "<p>Orders from referrer " . $contact->getLink() . ":";
- return show_orders($contact->getId(), null, $state_mask);
+ return show_orders(null, null, $contact->getId(), null, $state_mask);
}
else echo "<p>No such contact!</p>\n";
}
}
else echo "<p>No such contact!</p>\n";
}
else if ($contact_name) $contact = get_contact_by_name($contact_name);
if ($contact) {
echo "<p>Orders to beneficiary " . $contact->getLink() . ":";
else if ($contact_name) $contact = get_contact_by_name($contact_name);
if ($contact) {
echo "<p>Orders to beneficiary " . $contact->getLink() . ":";
- return show_orders(null, $contact->getId(), $state_mask);
+ return show_orders(null, null, null, $contact->getId(), $state_mask);
}
else echo "<p>No such contact!</p>\n";
}
}
else echo "<p>No such contact!</p>\n";
}
if (isset($area_id)) $area = get_area_by_id($area_id);
else if ($area_name) $area = get_area_by_name($area_name);
if ($area) {
if (isset($area_id)) $area = get_area_by_id($area_id);
else if ($area_name) $area = get_area_by_name($area_name);
if ($area) {
- $contacts = get_area_contacts($area->getId(), $GLOBALS['ROLE_BENEFICIARY']);
- $contact_ids = array();
- foreach ($contacts as $contact) $contact_ids[] = $contact->getId();
-
echo "<p>Orders in area " . $area->getLink() . ":";
echo "<p>Orders in area " . $area->getLink() . ":";
- return show_orders(null, $contact_ids, $state_mask);
+ return show_orders(null, $area->getId(), null, null, $state_mask);
}
else echo "<p>No such area!</p>\n";
}
}
else echo "<p>No such area!</p>\n";
}
}
}
else if (isset($id)) show_order($id);
}
}
else if (isset($id)) show_order($id);
- else if ($state_mask) show_orders(null, null, $state_mask);
+ else if ($state_mask) show_orders(null, null, null, null, $state_mask);
show_order_forms($city_id, $state_mask);
show_add_new_order_form($city_id);
show_order_forms($city_id, $state_mask);
show_add_new_order_form($city_id);