]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - actions/geocode.php
Better type check, better URL
[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             // TRANS: Client error displayed when the session token does not match or is not given.
56             $this->clientError(_('There was a problem with your session token. '.
57                                  'Try again, please.'));
58         }
59         $this->lat = $this->trimmed('lat');
60         $this->lon = $this->trimmed('lon');
61         $this->location = Location::fromLatLon($this->lat, $this->lon);
62         return true;
63     }
64
65     /**
66      * Class handler
67      *
68      * @param array $args query arguments
69      *
70      * @return nothing
71      *
72      */
73     function handle($args)
74     {
75         header('Content-Type: application/json; charset=utf-8');
76         $location_object = array();
77         $location_object['lat']=$this->lat;
78         $location_object['lon']=$this->lon;
79         if($this->location) {
80             $location_object['location_id']=$this->location->location_id;
81             $location_object['location_ns']=$this->location->location_ns;
82             $location_object['name']=$this->location->getName();
83             $location_object['url']=$this->location->getUrl();
84         }
85         print(json_encode($location_object));
86     }
87
88     /**
89      * Is this action read-only?
90      *
91      * @return boolean true
92      */
93     function isReadOnly($args)
94     {
95         return true;
96     }
97 }