0.5 EE4
This commit is contained in:
parent
429c6cd8c5
commit
e9235b0073
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -1 +1,7 @@
|
||||
* text=auto !eol
|
||||
copy_this/core/d3geoip.php -text
|
||||
copy_this/modules/d3_geoip/views/d3_oxcmp_cur_geoip.php -text
|
||||
copy_this/modules/d3_geoip/views/d3_oxcmp_lang_geoip.php -text
|
||||
setup+doku/install.sql -text
|
||||
setup+doku/install.txt -text
|
||||
setup+doku/licence.txt -text
|
||||
|
107
copy_this/core/d3geoip.php
Normal file
107
copy_this/core/d3geoip.php
Normal file
@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
class d3GeoIP extends oxI18n
|
||||
{
|
||||
/**
|
||||
* Current class name
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_sClassName = 'd3geoip';
|
||||
|
||||
/**
|
||||
* Class constructor, initiates parent constructor (parent::oxI18n()).
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->init('d3geoip');
|
||||
}
|
||||
|
||||
public function getUserLocationCountryObject()
|
||||
{
|
||||
|
||||
if (!$this->oCountry)
|
||||
{
|
||||
$sIP = $_SERVER['REMOTE_ADDR'];
|
||||
|
||||
/*
|
||||
$sIP = '62.4.77.32';
|
||||
$sIP = '62.4.77.48';
|
||||
$sIP = '41.188.100.127';
|
||||
*/
|
||||
|
||||
$iIPNum = $this->_getNumIp($sIP);
|
||||
$sISOAlpha = $this->LoadByIPNum($iIPNum);
|
||||
$this->oCountry = $this->getCountryObject($sISOAlpha);
|
||||
}
|
||||
|
||||
return $this->oCountry;
|
||||
}
|
||||
|
||||
protected function _getNumIp($sIP)
|
||||
{
|
||||
$aIP = explode('.',$sIP);
|
||||
$iIP = ($aIP[0] * 16777216) + ($aIP[1] * 65536) + ($aIP[2] * 256) + ($aIP[3] * 1);
|
||||
return $iIP;
|
||||
}
|
||||
|
||||
public function LoadByIPNum($iIPNum)
|
||||
{
|
||||
$sSelect = "SELECT d3iso FROM ".$this->_sClassName." WHERE d3startipnum <= '$iIPNum' AND d3endipnum >= '$iIPNum'";
|
||||
return oxDb::getDb()->getOne($sSelect);
|
||||
}
|
||||
|
||||
public function getCountryObject($sISOAlpha)
|
||||
{
|
||||
$oCountry = &oxNew('oxcountry');
|
||||
$sSelect = "SELECT oxid FROM ".$oCountry->getViewName()." WHERE OXISOALPHA2 = '".$sISOAlpha."'";
|
||||
$oCountry->load(oxDb::getDb()->getOne($sSelect));
|
||||
|
||||
return $oCountry;
|
||||
}
|
||||
|
||||
public function setUserCountry()
|
||||
{
|
||||
if (!$this->getUser()) {
|
||||
$oCountry = $this->getUserLocationCountryObject();
|
||||
$oUser = &oxNew('oxuser');
|
||||
$oUser->oxuser__oxcountryid = oxNew('oxfield');
|
||||
$oUser->oxuser__oxcountryid->setValue($oCountry->getId());
|
||||
$this->setUser($oUser);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public function setCountryLanguage()
|
||||
{
|
||||
$oCountry = $this->getUserLocationCountryObject();
|
||||
$aCountryLangs = $this->getConfig()->getConfigParam('aCountryLangs');
|
||||
|
||||
if (!$this->getSession()->getVar('d3isSetLang') && $aCountryLangs && $oCountry->getFieldData('oxisoalpha2') && isset($aCountryLangs[$oCountry->getFieldData('oxisoalpha2')]))
|
||||
{
|
||||
$iNewLanguage = $aCountryLangs[$oCountry->getFieldData('oxisoalpha2')];
|
||||
oxLang::getInstance()->setTplLanguage((int) $iNewLanguage);
|
||||
oxLang::getInstance()->setBaseLanguage((int) $iNewLanguage);
|
||||
$this->getSession()->setVar('d3isSetLang', true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function setCountryCurrency()
|
||||
{
|
||||
$oCountry = $this->getUserLocationCountryObject();
|
||||
$aCountryCurrs = $this->getConfig()->getConfigParam('aCountryCurrs');
|
||||
|
||||
if (!$this->getSession()->getVar('d3isSetCurr') && $aCountryCurrs && $oCountry->getFieldData('oxisoalpha2') && isset($aCountryCurrs[$oCountry->getFieldData('oxisoalpha2')]))
|
||||
{
|
||||
$iNewCurrency = $aCountryCurrs[$oCountry->getFieldData('oxisoalpha2')];
|
||||
$this->getConfig()->setActShopCurrency((int) $iNewCurrency );
|
||||
$this->getSession()->setVar('d3isSetCurr', true);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
16
copy_this/modules/d3_geoip/views/d3_oxcmp_cur_geoip.php
Normal file
16
copy_this/modules/d3_geoip/views/d3_oxcmp_cur_geoip.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?
|
||||
|
||||
class d3_oxcmp_cur_geoip extends d3_oxcmp_cur_geoip_parent
|
||||
{
|
||||
|
||||
public function init()
|
||||
{
|
||||
|
||||
$oLocation = &oxNew('d3geoip');
|
||||
$oLocation->setUserCountry();
|
||||
$oLocation->setCountryCurrency();
|
||||
|
||||
return parent::init();
|
||||
}
|
||||
|
||||
}
|
13
copy_this/modules/d3_geoip/views/d3_oxcmp_lang_geoip.php
Normal file
13
copy_this/modules/d3_geoip/views/d3_oxcmp_lang_geoip.php
Normal file
@ -0,0 +1,13 @@
|
||||
<?
|
||||
|
||||
class d3_oxcmp_lang_geoip extends d3_oxcmp_lang_geoip_parent
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
$oLocation = &oxNew('d3geoip');
|
||||
$oLocation->setUserCountry();
|
||||
$oLocation->setCountryLanguage();
|
||||
|
||||
return parent::init();
|
||||
}
|
||||
}
|
107579
setup+doku/install.sql
Normal file
107579
setup+doku/install.sql
Normal file
File diff suppressed because it is too large
Load Diff
17
setup+doku/install.txt
Normal file
17
setup+doku/install.txt
Normal file
@ -0,0 +1,17 @@
|
||||
oxcmp_cur => d3_geoip/views/d3_oxcmp_cur_geoip
|
||||
oxcmp_lang => d3_geoip/views/d3_oxcmp_lang_geoip
|
||||
|
||||
|
||||
config.inc.php:
|
||||
|
||||
// Key ist ISO-Alpha2-Code in Großbuchstaben (analog Datenbank) // Value ist ID der Sprache (beginnend bei 0)
|
||||
$this->aCountryLangs = array();
|
||||
$this->aCountryLangs['DE'] = 0;
|
||||
$this->aCountryLangs['EN'] = 1;
|
||||
$this->aCountryLangs['MR'] = 1;
|
||||
|
||||
// Key ist ISO-Alpha2-Code in Großbuchstaben (analog Datenbank) // Value ist ID der Währung (beginnend bei 0)
|
||||
$this->aCountryCurrs = array();
|
||||
$this->aCountryCurrs['DE'] = 0;
|
||||
$this->aCountryCurrs['EN'] = 1;
|
||||
$this->aCountryCurrs['MR'] = 1;
|
6
setup+doku/licence.txt
Normal file
6
setup+doku/licence.txt
Normal file
@ -0,0 +1,6 @@
|
||||
GeoIP Country light
|
||||
|
||||
GeoIp-Data based on GeoIp Country Light by Maxmind (July 2009).
|
||||
These database will be published under GPL3 by Maxmind. Please see www.maxmind.com for updates.
|
||||
|
||||
Maxmind offers more accuracy data for cash. More informations about this you'll find on www.maxmind.com.
|
Loading…
Reference in New Issue
Block a user