[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 // This file is part of Moodle - http://moodle.org/ 4 // 5 // Moodle is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // Moodle is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 17 18 /** 19 * IP Lookup utility functions 20 * 21 * @package core 22 * @subpackage iplookup 23 * @copyright 2010 Petr Skoda {@link http://skodak.org} 24 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 25 */ 26 27 defined('MOODLE_INTERNAL') || die(); 28 29 /** 30 * Returns location information 31 * @param string $ip 32 * @return array 33 */ 34 function iplookup_find_location($ip) { 35 global $CFG; 36 37 $info = array('city'=>null, 'country'=>null, 'longitude'=>null, 'latitude'=>null, 'error'=>null, 'note'=>'', 'title'=>array()); 38 39 if (!empty($CFG->geoipfile) and file_exists($CFG->geoipfile)) { 40 require_once('Net/GeoIP.php'); 41 42 $geoip = Net_GeoIP::getInstance($CFG->geoipfile, Net_GeoIP::STANDARD); 43 $location = $geoip->lookupLocation($ip); 44 $geoip->close(); 45 46 if (empty($location)) { 47 $info['error'] = get_string('iplookupfailed', 'error', $ip); 48 return $info; 49 } 50 if (!empty($location->city)) { 51 $info['city'] = core_text::convert($location->city, 'iso-8859-1', 'utf-8'); 52 $info['title'][] = $info['city']; 53 } 54 55 if (!empty($location->countryCode)) { 56 $countries = get_string_manager()->get_list_of_countries(true); 57 if (isset($countries[$location->countryCode])) { 58 // prefer our localized country names 59 $info['country'] = $countries[$location->countryCode]; 60 } else { 61 $info['country'] = $location->countryName; 62 } 63 $info['title'][] = $info['country']; 64 65 } else if (!empty($location->countryName)) { 66 $info['country'] = $location->countryName; 67 $info['title'][] = $info['country']; 68 } 69 70 $info['longitude'] = $location->longitude; 71 $info['latitude'] = $location->latitude; 72 $info['note'] = get_string('iplookupmaxmindnote', 'admin'); 73 74 return $info; 75 76 } else { 77 require_once($CFG->libdir.'/filelib.php'); 78 79 $ipdata = download_file_content('http://www.geoplugin.net/json.gp?ip='.$ip); 80 if ($ipdata) { 81 $ipdata = preg_replace('/^geoPlugin\((.*)\)\s*$/s', '$1', $ipdata); 82 $ipdata = json_decode($ipdata, true); 83 } 84 if (!is_array($ipdata)) { 85 $info['error'] = get_string('cannotgeoplugin', 'error'); 86 return $info; 87 } 88 $info['latitude'] = (float)$ipdata['geoplugin_latitude']; 89 $info['longitude'] = (float)$ipdata['geoplugin_longitude']; 90 $info['city'] = s($ipdata['geoplugin_city']); 91 92 $countrycode = $ipdata['geoplugin_countryCode']; 93 $countries = get_string_manager()->get_list_of_countries(true); 94 if (isset($countries[$countrycode])) { 95 // prefer our localized country names 96 $info['country'] = $countries[$countrycode]; 97 } else { 98 $info['country'] = s($ipdata['geoplugin_countryName']); 99 } 100 101 $info['note'] = get_string('iplookupgeoplugin', 'admin'); 102 103 $info['title'][] = $info['city']; 104 $info['title'][] = $info['country']; 105 106 return $info; 107 } 108 109 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |