]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - actions/geocode.php
Use passed-in lat long in geocode.php
[quix0rs-gnu-social.git] / actions / geocode.php
1 <?php
2 /**
3  * Geocode action class
4  *
5  * PHP version 5
6  *
7  * @category Action
8  * @package  StatusNet
9  * @author   Craig Andrews <candrews@integralblue.com>
10  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
11  * @link     http://status.net/
12  *
13  * StatusNet - the distributed open-source microblogging tool
14  * Copyright (C) 2008, 2009, StatusNet, Inc.
15  *
16  * This program is free software: you can redistribute it and/or modify
17  * it under the terms of the GNU Affero General Public License as published by
18  * the Free Software Foundation, either version 3 of the License, or
19  * (at your option) any later version.
20  *
21  * This program is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24  * GNU Affero General Public License for more details.
25  *
26  * You should have received a copy of the GNU Affero General Public License
27  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
28  */
29
30 if (!defined('STATUSNET') && !defined('LACONICA')) {
31     exit(1);
32 }
33
34 /**
35  * Geocode action class
36  *
37  * @category Action
38  * @package  StatusNet
39  * @author   Craig Andrews <candrews@integralblue.com>
40  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
41  * @link     http://status.net/
42  */
43 class GeocodeAction extends Action
44 {
45     function prepare($args)
46     {
47         parent::prepare($args);
48         $token = $this->trimmed('token');
49         if (!$token || $token != common_session_token()) {
50             $this->clientError(_('There was a problem with your session token. '.
51                                  'Try again, please.'));
52         }
53         $this->lat = $this->trimmed('lat');
54         $this->lon = $this->trimmed('lon');
55         $this->location = Location::fromLatLon($this->lat, $this->lon);
56         return true;
57     }
58
59     /**
60      * Class handler
61      *
62      * @param array $args query arguments
63      *
64      * @return nothing
65      *
66      **/
67     function handle($args)
68     {
69         header('Content-Type: application/json; charset=utf-8');
70         $location_object = array();
71         $location_object['lat']=$this->lat;
72         $location_object['lon']=$this->lon;
73         if($this->location) {
74             $location_object['location_id']=$this->location->location_id;
75             $location_object['location_ns']=$this->location->location_ns;
76             $location_object['name']=$this->location->getName();
77             $location_object['url']=$this->location->getUrl();
78         }
79         print(json_encode($location_object));
80     }
81
82     /**
83      * Is this action read-only?
84      *
85      * @return boolean true
86      */
87
88     function isReadOnly($args)
89     {
90         return true;
91     }
92 }
93 ?>