ipinfodb info
This commit is contained in:
parent
b2f65fa12d
commit
85f45f37ce
|
@ -0,0 +1,59 @@
|
||||||
|
<?php
|
||||||
|
final class ip2location_lite{
|
||||||
|
protected $errors = array();
|
||||||
|
protected $service = 'api.ipinfodb.com';
|
||||||
|
protected $version = 'v3';
|
||||||
|
protected $apiKey = '';
|
||||||
|
|
||||||
|
public function __construct(){}
|
||||||
|
|
||||||
|
public function __destruct(){}
|
||||||
|
|
||||||
|
public function setKey($key){
|
||||||
|
if(!empty($key)) $this->apiKey = $key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getError(){
|
||||||
|
return implode("\n", $this->errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCountry($host){
|
||||||
|
return $this->getResult($host, 'ip-country');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCity($host){
|
||||||
|
return $this->getResult($host, 'ip-city');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getResult($host, $name){
|
||||||
|
$ip = @gethostbyname($host);
|
||||||
|
|
||||||
|
// if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){
|
||||||
|
if(filter_var($ip, FILTER_VALIDATE_IP)){
|
||||||
|
$xml = @file_get_contents('http://' . $this->service . '/' . $this->version . '/' . $name . '/?key=' . $this->apiKey . '&ip=' . $ip . '&format=xml');
|
||||||
|
|
||||||
|
|
||||||
|
if (get_magic_quotes_runtime()){
|
||||||
|
$xml = stripslashes($xml);
|
||||||
|
}
|
||||||
|
|
||||||
|
try{
|
||||||
|
$response = @new SimpleXMLElement($xml);
|
||||||
|
|
||||||
|
foreach($response as $field=>$value){
|
||||||
|
$result[(string)$field] = (string)$value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
catch(Exception $e){
|
||||||
|
$this->errors[] = $e->getMessage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->errors[] = '"' . $host . '" is not a valid IP address or hostname.';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
|
@ -8,7 +8,7 @@
|
||||||
settings_fields( 'simple-location-options' );
|
settings_fields( 'simple-location-options' );
|
||||||
?>
|
?>
|
||||||
|
|
||||||
Google API Key: <input id="gapi-key" name="gapi-key" type="text" value="<?php print get_option('gapi-key'); ?>" />
|
<a href="http://ipinfodb.com">IPInfoDB</a> API Key: <input id="simple-location-api-key" name="simple-location-api-key" type="text" value="<?php print get_option('simple-location-api-key'); ?>" size="70" />
|
||||||
|
|
||||||
|
|
||||||
<?php submit_button(); ?>
|
<?php submit_button(); ?>
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
global $post;
|
||||||
|
$city = get_post_meta($post->ID, '_simple_location_city', true);
|
||||||
|
$country = get_post_meta($post->ID, '_simple_location_country', true);
|
||||||
|
?>
|
||||||
|
<p>If left blank, location detection will be automatically attempted from your IP with Google.</p>
|
||||||
|
City: <input name="city" type="text" value="<?php print $city;?>" />, County: <input name="country" type="text" value="<?php print $country;?>" />
|
||||||
|
|
||||||
|
<?php
|
|
@ -14,16 +14,50 @@ Tested up to: 3.8
|
||||||
if ( is_admin() ) {
|
if ( is_admin() ) {
|
||||||
add_action( 'admin_menu', 'add_options_menu' );
|
add_action( 'admin_menu', 'add_options_menu' );
|
||||||
add_action( 'admin_init', 'reg_settings' );
|
add_action( 'admin_init', 'reg_settings' );
|
||||||
|
add_action( 'admin_menu', 'add_meta_to_edit' );
|
||||||
|
add_action( 'edit_attachment', 'simple_location_post_save' );
|
||||||
|
add_action( 'save_post', 'simple_location_post_save' );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function add_options_menu() {
|
function add_options_menu() {
|
||||||
add_options_page('Simple Location Options', 'Simple Location', 'manage_options', 'simple-location', 'options_page');
|
add_options_page('Simple Location Options', 'Simple Location', 'manage_options', 'simple-location', 'options_page');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function add_meta_to_edit() {
|
||||||
|
add_meta_box('simple-location-meta', 'Simple Location', 'simple_location_meta', 'post', 'normal');
|
||||||
|
}
|
||||||
|
|
||||||
|
function simple_location_post_save($post_id) {
|
||||||
|
if ($_POST['city'] == '' || $_POST['country'] == '') {
|
||||||
|
$key = get_option('simple-location-api-key');
|
||||||
|
if ($key != '') {
|
||||||
|
include('ip2locationlite.class.php');
|
||||||
|
$ipLite = new ip2location_lite;
|
||||||
|
$ipLite->setKey($key);
|
||||||
|
$locations = $ipLite->getCity($_SERVER['REMOTE_ADDR']);
|
||||||
|
print 'locations: ';
|
||||||
|
print_r($locations);
|
||||||
|
}
|
||||||
|
if ($_POST['city'] == '') {
|
||||||
|
$_POST['city'] = $locations['cityName'];
|
||||||
|
}
|
||||||
|
update_post_meta($post_id, '_simple_location_city', sanitize_text_field($_POST['city']));
|
||||||
|
if ($_POST['country'] == '') {
|
||||||
|
$_POST['country'] = $locations['countryName'];
|
||||||
|
}
|
||||||
|
update_post_meta($post_id, '_simple_location_country', sanitize_text_field($_POST['country']));
|
||||||
|
}
|
||||||
|
|
||||||
|
function simple_location_meta() {
|
||||||
|
include( plugin_dir_path(__FILE__) . 'post-form.php');
|
||||||
|
}
|
||||||
|
|
||||||
function options_page() {
|
function options_page() {
|
||||||
include( plugin_dir_path(__FILE__) . 'options.php');
|
include( plugin_dir_path(__FILE__) . 'options.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
function reg_settings() {
|
function reg_settings() {
|
||||||
register_setting( 'simple-location-options', 'gapi-key' );
|
register_setting( 'simple-location-options', 'simple-location-api-key' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue