3 /* XXX: Show links to other objects. Don't show cities by default. */
5 if ($_POST['city_name']) {
6 $id = add_city($_POST['city_name'], $_POST['city_postcode_area']);
8 echo "<p>Added city.</p>\n";
9 $parameters = array($_POST['city_name'], $id);
13 function show_cities($offset, $per_page, $name = null) {
16 if (isset($name)) $q->filterByName($name);
17 $p = $q->paginate($offset, $per_page);
19 foreach ($p as $city) {
20 echo "<br>\nCity: " . $city->getStrongLink(get_city_displayname($city));
21 $n = $city->getName();
23 echo " " . get_small_link("Areas", "/area/in/city/%s/%d", $n, $i);
24 echo " " . get_small_link("Contacts", "/contact/in/city/%s/%d", $n, $i);
25 echo " " . get_small_link("Donations", "/donation/in/city/%s/%d", $n, $i);
26 echo " " . get_small_link("Orders", "/order/in/city/%s/%d", $n, $i);
28 echo " " . $city->getDeleteLink();
36 function show_new_city_form() {
37 if (! check_admin(1)) return;
39 form("noprint standout");
40 echo "<p>Add a new city <input name=\"city_name\">\n";
41 echo "with postcode prefix <input name=\"city_postcode_area\" size=4 maxlength=4>\n";
42 echo "<input type=\"submit\" value=\"Add\"></p>\n";
45 function add_city($name, $postcode) {
46 if (! check_admin(1, "add a city")) return;
48 if (preg_match('/^([A-Za-z]+)/', $postcode, $m)) {
49 $prefix = strtoupper($m[1]);
52 echo "<p>Invalid postcode prefix!</p>\n";
56 $city = get_city_by_name($name, $prefix, false);
58 echo "<p>$name already exists!</p>\n";
59 show_city($name, $city->getId());
64 $city->setName($name);
65 $city->setPostcodeArea($prefix);
70 catch (Exception $e) {
71 echo "<p>Error adding $name!</p>\n";
76 return $city->getId();
79 function confirm_delete_city($name, $id = null) {
80 if (! check_admin(1, "delete a city")) return;
82 if (isset($id)) $city = get_city_by_id($id);
83 else $city = get_city_by_name($name);
84 if (! $city) return false;
86 echo "<h3>Confirm deletion</h3>\n";
87 echo "<p>You must confirm deletion of city " . $city->getName() . ": " . $city->getDeleteLink(true) . "</p>\n";
90 function delete_city($name, $id = null) {
91 if (! check_admin(1, "delete a city")) return;
93 if (isset($id)) $city = get_city_by_id($id);
94 else $city = get_city_by_name($name);
95 if (! $city) return false;
99 echo "<p>Deleted city.</p>\n";
101 catch (Exception $e) {
102 echo "<p>Error deleting $name!</p>\n";
103 /* XXX: Why? Check for addresses in use... */
110 function show_city($name, $id = null) {
111 if (isset($id)) $city = get_city_by_id($id);
112 else $city = get_city_by_name($name);
115 echo "<p>City: <span class=\"strong\">" . get_city_displayname($city) . "</span>";
116 $n = $city->getName();
118 echo " " . get_small_link("Areas", "/area/in/city/%s/%d", $n, $i);
119 echo " " . get_small_link("Contacts", "/contact/in/city/%s/%d", $n, $i);
120 echo " " . get_small_link("Donations", "/donation/in/city/%s/%d", $n, $i);
121 echo " " . get_small_link("Orders", "/order/in/city/%s/%d", $n, $i);
122 if (check_admin(1)) {
123 echo " " . $city->getDeleteLink();
127 $areas = $q->filterByCityId($city->getId())->find();
129 foreach ($areas as $area) {
130 echo "<br>\nArea: " . $area->getLink();
137 list($name, $id, $args) = parse_parameters($parameters);
138 //echo "<p>$name($id) " . print_r($args, true) . "</p>\n";
142 confirm_delete_city($name, $id);
145 case "confirmdelete":
146 delete_city($name, $id);
150 show_cities(0, 10, $name);
151 show_new_city_form();
155 else if (isset($name)) show_city($name, $id);
156 else show_cities(0, 10);
158 if (count($parameters)) echo "<p class=\"noprint standout\">Show all <a href=\"/city\">cities</a></p>\n";
159 show_new_city_form();