source: subversion/applications/mobile/healthwhere/edit_addr.php @ 34887

Last change on this file since 34887 was 21241, checked in by avantman42, 9 years ago

Removed source column in OS-created postcode DB. No need for it, and should make DB file smaller
Now using OS postcode data (OS OpenData? Code-Point® Open)
Re-licensed (GPL v2) because PHPCoord is licensed under GPL v2

File size: 5.9 KB
Line 
1<?php
2/*
3Healthwhere, a web service to find local pharmacies and hospitals
4Copyright (C) 2009-2010 Russell Phillips (russ@phillipsuk.org)
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License along
17with this program; if not, write to the Free Software Foundation, Inc.,
1851 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19*/
20
21require_once ("inc_head.php");
22require_once ("inc_edit.php");
23
24$id = (int) $_GET ["id"];
25$dist = (float) $_GET ["dist"];
26
27// Get data from OSM
28$sXML = file_get_contents ("http://www.openstreetmap.org/api/0.6/node/$id");
29$xml = new SimpleXMLElement($sXML);
30
31if ($sXML != "") {
32        $iNodeCounter = 0;
33        foreach ($xml->node[0]->tag as $tag) {
34                if ($tag ["k"] == "addr:housename") {
35                        $addr_housename = (string) $tag ["v"];
36                        $i_housename = $iNodeCounter;
37                }
38                if ($tag ["k"] == "addr:housenumber") {
39                        $addr_housenumber = (string) $tag ["v"];
40                        $i_housenumber = $iNodeCounter;
41                }
42                if ($tag ["k"] == "addr:street") {
43                        $addr_street = (string) $tag ["v"];
44                        $i_street = $iNodeCounter;
45                }
46                if ($tag ["k"] == "addr:postcode" || $tag ["k"] == "postal_code" || $tag ["k"] == "postcode") {
47                        $addr_postcode = (string) $tag ["v"];
48                        $i_postcode = $iNodeCounter;
49                }
50                if ($tag ["k"] == "addr:city") {
51                        $addr_city = (string) $tag ["v"];
52                        $i_city = $iNodeCounter;
53                }
54                $iNodeCounter++;
55        }
56        if (isset ($_POST ["btnSubmit"])) {
57                //Compare XML values from OSM to posted values. Where they differ, update XML
58                if ($addr_housename != "" && $addr_housename != $_POST ["addr_housename"]) {
59                        $xml->node [0]->tag [$i_housename]['v'] = $_POST ["addr_housename"];
60                        $addr_housename = $_POST ["addr_housename"];
61                }
62                if ($addr_housenumber != "" && $addr_housenumber != $_POST ["addr_housenumber"]) {
63                        $xml->node [0]->tag [$i_housenumber]['v'] = $_POST ["addr_housenumber"];
64                        $addr_housenumber = $_POST ["addr_housenumber"];
65                }
66                if ($addr_street != "" && $addr_street != $_POST ["addr_street"]) {
67                        $xml->node [0]->tag [$i_street]['v'] = $_POST ["addr_street"];
68                        $addr_street = $_POST ["addr_street"];
69                }
70                if ($addr_postcode != "" && $addr_postcode != $_POST ["addr_postcode"]) {
71                        $xml->node [0]->tag [$i_postcode]['v'] = $_POST ["addr_postcode"];
72                        $addr_postcode = $_POST ["addr_postcode"];
73                }
74                if ($addr_city != "" && $addr_city != $_POST ["addr_city"]) {
75                        $xml->node [0]->tag [$i_city]['v'] = $_POST ["addr_city"];
76                        $addr_city = $_POST ["addr_city"];
77                }
78                //Add new values
79                if ($addr_housename == "" && $_POST ["addr_housename"] != "") {
80                        $tag = $xml->node [0]->addChild("tag");
81                        $tag->addAttribute ("k", "addr:housename");
82                        $tag->addAttribute ("v", $_POST ["addr_housename"]);
83                        $addr_housename = $_POST ["addr_housename"];
84                }
85                if ($addr_housenumber == "" && $_POST ["addr_housenumber"] != "") {
86                        $tag = $xml->node [0]->addChild("tag");
87                        $tag->addAttribute ("k", "addr:housenumber");
88                        $tag->addAttribute ("v", $_POST ["addr_housenumber"]);
89                        $addr_housenumber = $_POST ["addr_housenumber"];
90                }
91                if ($addr_street == "" && $_POST ["addr_street"] != "") {
92                        $tag = $xml->node [0]->addChild("tag");
93                        $tag->addAttribute ("k", "addr:street");
94                        $tag->addAttribute ("v", $_POST ["addr_street"]);
95                        $addr_street = $_POST ["addr_street"];
96                }
97                if ($addr_postcode == "" && $_POST ["addr_postcode"] != "") {
98                        $tag = $xml->node [0]->addChild("tag");
99                        $tag->addAttribute ("k", "addr:postcode");
100                        $tag->addAttribute ("v", $_POST ["addr_postcode"]);
101                        $addr_postcode = $_POST ["addr_postcode"];
102                }
103                if ($addr_city == "" && $_POST ["addr_city"] != "") {
104                        $tag = $xml->node [0]->addChild("tag");
105                        $tag->addAttribute ("k", "addr:city");
106                        $tag->addAttribute ("v", $_POST ["addr_city"]);
107                        $addr_city = $_POST ["addr_city"];
108                }
109
110                //Update OSM
111                if (isset ($_COOKIE ['csID']))
112                        $iCS = $_COOKIE ['csID'];
113                else
114                        $iCS = osm_create_changeset ();
115                osm_update_node ($id, $xml->asXML (), $iCS);
116                //Changeset is not closed, in case further edits are made.
117                //It will be closed automatically at the server
118                //osm_close_changeset ($iCS);
119                header("Location: " . BASE_URL . "/detail.php?id=$id&amp;dist=$dist&amp;edit=yes&amp;waynode=$waynode");
120        }
121require_once ("inc_head_html.php");
122?>
123
124        <p>
125        <form action = "edit_addr.php?id=<?=$id?>&amp;name=<?php echo urlencode ($display_name); ?>&amp;dist=<?=$dist?>&amp;waynode=<?=$waynode?>" method = "post">
126        <table border = "0">
127        <tr><th colspan = "2" align = "center"><?php echo htmlentities (stripslashes ($_GET ['name'])); ?></th></tr>
128        <tr><td>House Name:</td>
129        <td><input name = "addr_housename" value = "<?=stripslashes ($addr_housename)?>" class = 'default'></td></tr>
130        <tr><td>House Number:</td>
131        <td><input name = "addr_housenumber" value = "<?=stripslashes ($addr_housenumber)?>" class = 'default'></td></tr>
132        <tr><td>Street:</td>
133        <td><input name = "addr_street" value = "<?=stripslashes ($addr_street)?>" class = 'default'></td></tr>
134        <tr><td>City:</td>
135        <td><input name = "addr_city" value = "<?=stripslashes ($addr_city)?>" class = 'default'></td></tr>
136        <tr><td>Postcode:</td>
137        <td><input name = "addr_postcode" value = "<?=stripslashes ($addr_postcode)?>" class = 'default'></td></tr>
138
139        <tr><td align = "center"><input type = "reset" value = "Reset"></td>
140        <td align = "center"><input type = "submit" value = "Submit" name = "btnSubmit"></td></tr>
141        <tr><td align = "center" colspan = "2">
142        <a href = "detail.php?id=<?=$id?>&amp;dist=<?=$dist?>&amp;waynode=<?=$waynode?>">Cancel</a>
143        </td></tr>
144        </table>
145        </form>
146        </p>
147        <?php
148}
149else
150        echo "<p>Error: unable to get existing data</p>\n";
151
152require ("inc_foot.php");
153?>
Note: See TracBrowser for help on using the repository browser.