laipower/wp-content/plugins/w3-total-cache/Mobile_Referrer.php

54 lines
1.4 KiB
PHP

<?php
namespace W3TC;
/**
* W3TC Referrer detection
*/
define( 'W3TC_REFERRER_COOKIE_NAME', 'w3tc_referrer' );
/**
* Class: Mobile_Referrer
*/
class Mobile_Referrer extends Mobile_Base {
/**
* PHP5-style constructor
*/
public function __construct() {
parent::__construct( 'referrer.rgroups', 'referrers' );
}
/**
* Returns HTTP referrer value.
*
* @return string
*/
public function get_http_referrer() {
$http_referrer = '';
if ( $this->has_enabled_groups() ) {
if ( isset( $_COOKIE[ W3TC_REFERRER_COOKIE_NAME ] ) ) {
$http_referrer = htmlspecialchars( $_COOKIE[ W3TC_REFERRER_COOKIE_NAME ] ); // phpcs:ignore
} elseif ( isset( $_SERVER['HTTP_REFERER'] ) ) {
$http_referrer = filter_var( $_SERVER['HTTP_REFERER'], FILTER_SANITIZE_URL ); // phpcs:ignore
setcookie( W3TC_REFERRER_COOKIE_NAME, $http_referrer, 0, '/' /* not defined yet Util_Environment::network_home_url_uri()*/ );
}
} elseif ( isset( $_COOKIE[ W3TC_REFERRER_COOKIE_NAME ] ) ) {
setcookie( W3TC_REFERRER_COOKIE_NAME, '', 1 );
}
return $http_referrer;
}
function group_verifier( $group_compare_value ) {
static $http_referrer = null;
if ( is_null( $http_referrer ) )
$http_referrer = $this->get_http_referrer();
return $http_referrer && preg_match( '~' . $group_compare_value . '~i', $http_referrer );
}
function do_get_group() {
return $this->get_http_referrer();
}
}