3 if ($_POST['area_name']) {
4 $id = add_area($_POST['area_name'], $_POST['city_id']);
6 echo "<p>Added area.</p>\n";
7 $parameters = array($_POST['area_name'], $id);
10 else if ($_POST['city_id']) {
11 /* XXX: city_id is actually a string $city_name/$city_id */
12 header(sprintf("Location: http%s://%s/%s/in/%s", ($_SERVER['HTTPS']) ? "s" : "", $_SERVER['HTTP_HOST'], $module, $_POST['city_id']));
15 else if ($_POST['update_area']) {
16 update_area_delivery_days($parameters[0]);
19 function show_areas($offset, $per_page, $city_name = null, $city_id = null) {
20 if (isset($city_name) || isset($city_id)) {
21 if (isset($city_id)) $city = get_city_by_id($city_id);
22 else if ($city_name) $city = get_city_by_name($city_name);
24 echo "<p>Areas in " . $city->getLink(get_city_displayname($city)) . ":";
26 $areas = $q->filterByCityId($city_id)->find();
29 foreach ($areas as $area) {
30 echo "<br>\nArea: " . $area->getStrongLink();
31 printf(" <a class=\"small\" href=\"/contact/in/area/%s/%d\">Contacts</a>", urlencode($area->getName()), $area->getId());
32 printf(" <a class=\"small\" href=\"/donation/in/area/%s/%d\">Donations</a>", urlencode($area->getName()), $area->getId());
33 printf(" <a class=\"small\" href=\"/order/in/area/%s/%d\">Orders</a>", urlencode($area->getName()), $area->getId());
35 echo " " . $area->getDeleteLink();
42 else echo "<p>No such city!</p>\n";
46 function show_area_cities_form($city_id = null) {
49 if (! count($cities)) {
50 echo "<p>No <a href=\"/city\">cities</a>!</p>\n";
54 echo "<form method=\"POST\" action=\"" . $_SCRIPT['REQUEST_URI'] . "\">\n";
55 echo "<p>Show areas in\n";
56 echo "<select name=\"city_id\">\n";
57 foreach ($cities as $city) {
58 option("city_id", sprintf("%s/%s", $city->getName(), $city->getId()), get_city_displayname($city));
61 echo "<input type=\"submit\" value=\"Show\">\n";
65 function show_new_area_form($city_id = null) {
66 if (! check_admin(1)) return;
70 if (! count($cities)) {
71 echo "<p>No <a href=\"/city\">cities</a>!</p>\n";
75 echo "<form method=\"POST\" action=\"" . $_SERVER['REQUEST_URI'] . "\">\n";
76 echo "<p>Add a new area <input name=\"area_name\">\n";
77 echo "in <select name=\"city_id\">\n";
79 foreach ($cities as $city) {
80 option("city_id", $city->getId(), get_city_displayname($city));
83 echo "<input type=\"submit\" value=\"Add\">\n";
87 function add_area($name, $city_id) {
88 if (! check_admin(1, "add an area")) return;
90 $name = urldecode($name);
91 $area = get_area_by_name($name, false);
93 echo "<p>$name already exists!</p>\n";
98 $city = get_city_by_id($city_id);
100 echo "<p>Not a valid city!</p>\n";
105 $area->setName($name);
106 $area->setCityId($city_id);
111 catch (Exception $e) {
112 echo "<p>Error adding $name!</p>\n";
117 return $area->getId();
120 function delete_city($name) {
121 if (! check_admin(1, "delete a city")) return;
123 $city = get_city_by_name($name);
124 if (! $city) return false;
129 catch (Exception $e) {
130 echo "<p>Error deleting $name!</p>\n";
131 /* XXX: Why? Check for addresses in use... */
138 function show_area_delivery_days_form($days) {
140 echo "Delivery days:";
141 if (check_admin(1)) {
142 for ($i = 0; $i < count($week); $i++) {
143 echo " <input type=\"checkbox\" name=\"day_$i\"";
144 if ($days & (1 << $i)) echo " checked";
149 if (! $days) echo " none";
151 for ($i = 0; $i < count($week); $i++) {
152 if ($days & (1 << $i)) echo " $week[$i]";
158 function update_area_delivery_days($name) {
161 if (! check_admin(1, "edit an area")) return false;
164 for ($i = 0; $i < count($week); $i++) {
165 if ($_POST['day_' . $i] == "on") $days |= (1 << $i);
168 $area = get_area_by_name($name);
169 if (! $area) return false;
171 $area->setDays($days);
176 catch (Exception $e) {
177 echo "<p>Error updating area!</p>\n";
181 echo "<p>Updated area.</p>\n";
185 function delete_area($name, $id = null, &$city_id = null) {
186 if (! check_admin(1, "delete a area")) return;
188 if (isset($id)) $area = get_area_by_id($id);
189 else $area = get_area_by_name($name);
190 if (! $area) return false;
192 /* Remember city ID for dropdown. */
193 $city_id = $area->getCityId();
197 echo "<p>Deleted area.</p>\n";
199 catch (Exception $e) {
200 echo "<p>Error deleting $name!</p>\n";
201 /* XXX: Why? Check for addresses in use... */
208 function show_area($name, &$city_id = null) {
209 $area = get_area_by_name($name);
212 echo "<form method=\"POST\" action=\"" . $_SERVER['REQUEST_URI'] . "\">\n";
213 echo "<p>Area: <span class=\"strong\">" . $area->getName() . "</span>";
214 printf(" <a class=\"small\" href=\"/contact/in/area/%s/%d\">Contacts</a>", urlencode($area->getName()), $area->getId());
215 printf(" <a class=\"small\" href=\"/donation/in/area/%s/%d\">Donations</a>", urlencode($area->getName()), $area->getId());
216 printf(" <a class=\"small\" href=\"/order/in/area/%s/%d\">Orders</a>", urlencode($area->getName()), $area->getId());
217 if (check_admin(1)) {
218 echo " " . $area->getDeleteLink();
220 $city = get_city_by_id($area->getCityId());
222 /* Remember city ID for dropdown. */
223 $city_id = $city->getId();
224 echo " in " . $city->getLink(get_city_displayname($city));
228 show_area_delivery_days_form($area->getDays());
229 if (check_admin(1)) {
230 echo "<input type=\"submit\" name=\"update_area\" value=\"Update\">\n";
236 /* /area/in/Cambridge/1 */
237 if (count($parameters)) {
238 if ($parameters[0] == "in") {
239 $city_id = $parameters[2];
240 show_areas(0, 10, $parameters[1], $city_id);
241 show_new_area_form($city_id);
244 list($name, $id, $args) = parse_parameters($parameters);
245 //echo "<p>$name($id) " . print_r($args, true) . "</p>\n";
249 delete_area($name, $id, $city_id);
253 else if (isset($name)) show_area($name, $city_id);
255 show_area_cities_form($city_id);
256 show_new_area_form($city_id);
259 if (count($parameters))
260 show_area_cities_form($city_id);