3 * Special Page for GeoLite
9 // Special page GeoLite
11 class SpecialGeoLite
extends SpecialPage
{
15 public function __construct() {
16 // Initialize special page
17 parent
::__construct( 'GeoLite' );
20 public function execute( $sub ) {
21 global $wgOut, $wgRequest, $wgLandingPageBase, $wgKnownLandingPages;
23 $lang = ( $wgRequest->getVal( 'lang' ) ) ?
$wgRequest->getVal( 'lang' ) : 'en' ;
24 $utm_source = $wgRequest->getVal( 'utm_source' );
25 $utm_medium = $wgRequest->getVal( 'utm_medium' );
26 $utm_campaign = $wgRequest->getVal( 'utm_camapaign' );
28 $tracking = '?' . "utm_source=$utm_source" . "&utm_medium=$utm_medium" . "&utm_campaign=$utm_campaign";
30 if ( $wgRequest->getVal( 'ip') ) {
31 $ip = $wgRequest->getVal( 'ip' );
33 $ip = $_SERVER[ 'REMOTE_ADDR' ];
36 if ( IP
::isValid( $ip ) ) {
37 $country = geoip_country_code_by_name( $ip );
39 if ( is_string ( $country ) && array_key_exists( $country, $wgKnownLandingPages ) ) {
40 $wgOut->redirect( $wgLandingPageBase . "/" . $wgKnownLandingPages[ $country ] . $tracking );
43 $wgOut->redirect( $wgLandingPageBase . "/" . $lang . $tracking );