2013-03-12 16:21:24 -07:00

209 lines
3.9 KiB
PHP
Executable File

<?php
class Crunchbutton_Geo {
private $_ipAdapter;
private $_ipAdapterName = 'Geoip_Binary';
private $_city;
private $_postalCode;
private $_areaCode;
private $_countryCode;
private $_countryName;
private $_countryCode3;
private $_region;
private $_ip;
private $_dmaCode;
private $_hostName;
public function __construct($params=array()) {
$this->loadParams($params);
}
public function loadParams($params) {
if (isset($params['adapter'])) {
$this->setIpAdapterName($params['adapter']);
}
$adapterName = 'Crunchbutton_Geo_'.$this->getIpAdapterName();
$this->setIpAdapter(new $adapterName($params));
if (isset($params['adapter'])) {
$this->setIpAdapterName($params['adapter']);
}
}
public function populateHostName() {
$host = $this->getIp();
for ($x=0;$x<=10;$x++) {
$host = gethostbyaddr($this->getIp());
if ($host != $this->getIp()) break;
}
$this->setHostName($host);
}
public function populateByIp() {
$loc = $this->getIpAdapter()->lookupIp($this->getIp());
if (count($loc)) {
$this->populateByResult($loc);
}
// $this->populateHostName();
return $this;
}
public function populateByLatLong() {
$loc = $this->getIpAdapter()->lookup($this->getLatitude(),$this->getLongitude());
if (count($loc)) {
$this->populateByResult($loc);
}
//$this->populateHostName();
return $this;
}
public function populateByResult($loc) {
if (count($loc)) {
$this->setCity($loc['city'])
->setPostalCode($loc['postalCode'])
->setAreaCode($loc['areaCode'])
->setCountryCode($loc['countryCode'])
->setCountryCode3($loc['countryCode3'])
->setRegion($loc['region'])
->setDmaCode($loc['dmaCode'])
->setCountryName($loc['countryName']);
if ($loc['latitude']) {
$this->setLatitude($loc['latitude'])
->setLongitude($loc['longitude']);
}
}
}
public function getIpAdapterName() {
return $this->_ipAdapterName;
}
public function setIpAdapterName($name) {
$this->_ipAdapterName = $name;
return $this;
}
public function getIpAdapter() {
return $this->_ipAdapter;
}
public function setIpAdapter($adapter) {
$this->_ipAdapter = $adapter;
return $this;
}
public function getIp() {
return $this->_ip;
}
public function setIp($ip) {
$this->_ip = $ip;
return $this;
}
public function getCity() {
return $this->_city;
}
public function setCity($city) {
$this->_city = $city;
return $this;
}
public function getCountryName() {
return $this->_countryName;
}
public function setCountryName($name) {
$this->_countryName = $name;
return $this;
}
public function getCountryCode() {
return $this->_countryCode;
}
public function setCountryCode($code) {
$this->_countryCode = $code;
return $this;
}
public function getCountryCode3() {
return $this->_countryCode3;
}
public function setCountryCode3($code) {
$this->_countryCode3 = $code;
return $this;
}
public function getPostalCode() {
return $this->_postalCode;
}
public function setPostalCode($code) {
$this->_postalCode = $code;
return $this;
}
public function getAreaCode() {
return $this->_areaCode;
}
public function setAreaCode($code) {
$this->_areaCode = $code;
return $this;
}
public function getRegion() {
return $this->_region;
}
public function setRegion($region) {
$this->_region = $region;
return $this;
}
public function getDmaCode() {
return $this->_dmaCode;
}
public function setDmaCode($code) {
$this->_dmaCode = $code;
return $this;
}
public function getHostName() {
return $this->_hostName;
}
public function setHostName($host) {
$this->_hostName = $host;
return $this;
}
public function setLatitude($latitude) {
$this->_latitude = $latitude;
return $this;
}
public function getLatitude() {
return $this->_latitude;
}
public function setLongitude($longitude) {
$this->_longitude = $longitude;
return $this;
}
public function getLongitude() {
return $this->_longitude;
}
}