]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - actions/geocode.php
Merge branch 'master' into 0.9.x
[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  * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
41  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
42  * @link     http://status.net/
43  */
44 class GeocodeAction extends Action
45 {
46     var $lat = null;
47     var $lon = null;
48     var $location = null;
49
50     function prepare($args)
51     {
52         parent::prepare($args);
53         $token = $this->trimmed('token');
54         if (!$token || $token != common_session_token()) {
55             $this->clientError(_('There was a problem with your session token. '.
56                                  'Try again, please.'));
57         }
58         $this->lat = $this->trimmed('lat');
59         $this->lon = $this->trimmed('lon');
60         $this->location = Location::fromLatLon($this->lat, $this->lon);
61         return true;
62     }
63
64     /**
65      * Class handler
66      *
67      * @param array $args query arguments
68      *
69      * @return nothing
70      *
71      **/
72     function handle($args)
73     {
74         header('Content-Type: application/json; charset=utf-8');
75         $location_object = array();
76         $location_object['lat']=$this->lat;
77         $location_object['lon']=$this->lon;
78         if($this->location) {
79             $location_object['location_id']=$this->location->location_id;
80             $location_object['location_ns']=$this->location->location_ns;
81             $location_object['name']=$this->location->getName();
82             $location_object['url']=$this->location->getUrl();
83         }
84         print(json_encode($location_object));
85     }
86
87     /**
88      * Is this action read-only?
89      *
90      * @return boolean true
91      */
92
93     function isReadOnly($args)
94     {
95         return true;
96     }
97 }