Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wordfenc.../lib
File: wfBrowscap.php
<?php
[0] Fix | Delete
class wfBrowscap {
[1] Fix | Delete
protected $_cacheLoaded = false;
[2] Fix | Delete
protected $_userAgents = array();
[3] Fix | Delete
protected $_browsers = array();
[4] Fix | Delete
protected $_patterns = array();
[5] Fix | Delete
protected $_properties = array();
[6] Fix | Delete
protected $resultCache = array();
[7] Fix | Delete
const COMPRESSION_PATTERN_START = '@';
[8] Fix | Delete
const COMPRESSION_PATTERN_DELIMITER = '|';
[9] Fix | Delete
const REGEX_DELIMITER = '@';
[10] Fix | Delete
[11] Fix | Delete
public static function shared() {
[12] Fix | Delete
static $_browscap = null;
[13] Fix | Delete
if ($_browscap === null) {
[14] Fix | Delete
$_browscap = new wfBrowscap();
[15] Fix | Delete
}
[16] Fix | Delete
return $_browscap;
[17] Fix | Delete
}
[18] Fix | Delete
[19] Fix | Delete
public function getBrowser($user_agent){
[20] Fix | Delete
if (!$this->_cacheLoaded) {
[21] Fix | Delete
if (!$this->_loadCache(dirname(__FILE__) . '/wfBrowscapCache.php')) {
[22] Fix | Delete
throw new Exception('Cannot load this cache version - the cache format is not compatible.');
[23] Fix | Delete
}
[24] Fix | Delete
}
[25] Fix | Delete
[26] Fix | Delete
$browser = array();
[27] Fix | Delete
foreach ($this->_patterns as $pattern => $pattern_data) {
[28] Fix | Delete
if (preg_match($pattern . 'i', $user_agent, $matches)) {
[29] Fix | Delete
if (1 == count($matches)) {
[30] Fix | Delete
$key = $pattern_data;
[31] Fix | Delete
[32] Fix | Delete
$simple_match = true;
[33] Fix | Delete
} else {
[34] Fix | Delete
$pattern_data = unserialize($pattern_data);
[35] Fix | Delete
[36] Fix | Delete
array_shift($matches);
[37] Fix | Delete
[38] Fix | Delete
$match_string = self::COMPRESSION_PATTERN_START
[39] Fix | Delete
. implode(self::COMPRESSION_PATTERN_DELIMITER, $matches);
[40] Fix | Delete
[41] Fix | Delete
if (!isset($pattern_data[$match_string])) {
[42] Fix | Delete
continue;
[43] Fix | Delete
}
[44] Fix | Delete
[45] Fix | Delete
$key = $pattern_data[$match_string];
[46] Fix | Delete
[47] Fix | Delete
$simple_match = false;
[48] Fix | Delete
}
[49] Fix | Delete
[50] Fix | Delete
$browser = array(
[51] Fix | Delete
$user_agent,
[52] Fix | Delete
trim(strtolower($pattern), self::REGEX_DELIMITER),
[53] Fix | Delete
$this->_pregUnQuote($pattern, $simple_match ? false : $matches)
[54] Fix | Delete
);
[55] Fix | Delete
[56] Fix | Delete
$browser = $value = $browser + unserialize($this->_browsers[$key]);
[57] Fix | Delete
[58] Fix | Delete
while (array_key_exists(3, $value)) {
[59] Fix | Delete
$value = unserialize($this->_browsers[$value[3]]);
[60] Fix | Delete
$browser += $value;
[61] Fix | Delete
}
[62] Fix | Delete
[63] Fix | Delete
if (!empty($browser[3])) {
[64] Fix | Delete
$browser[3] = $this->_userAgents[$browser[3]];
[65] Fix | Delete
}
[66] Fix | Delete
[67] Fix | Delete
break;
[68] Fix | Delete
}
[69] Fix | Delete
}
[70] Fix | Delete
[71] Fix | Delete
$array = array();
[72] Fix | Delete
foreach ($browser as $key => $value) {
[73] Fix | Delete
if ($value === 'true') {
[74] Fix | Delete
$value = true;
[75] Fix | Delete
} elseif ($value === 'false') {
[76] Fix | Delete
$value = false;
[77] Fix | Delete
}
[78] Fix | Delete
$array[$this->_properties[$key]] = $value;
[79] Fix | Delete
}
[80] Fix | Delete
[81] Fix | Delete
return $array;
[82] Fix | Delete
}
[83] Fix | Delete
protected function _loadCache($cache_file){
[84] Fix | Delete
$cache_version = null;
[85] Fix | Delete
$browsers = array();
[86] Fix | Delete
$userAgents = array();
[87] Fix | Delete
$patterns = array();
[88] Fix | Delete
$properties = array();
[89] Fix | Delete
[90] Fix | Delete
$this->_cacheLoaded = false;
[91] Fix | Delete
[92] Fix | Delete
require $cache_file;
[93] Fix | Delete
[94] Fix | Delete
$this->_browsers = $browsers;
[95] Fix | Delete
$this->_userAgents = $userAgents;
[96] Fix | Delete
$this->_patterns = $patterns;
[97] Fix | Delete
$this->_properties = $properties;
[98] Fix | Delete
[99] Fix | Delete
$this->_cacheLoaded = true;
[100] Fix | Delete
[101] Fix | Delete
return true;
[102] Fix | Delete
}
[103] Fix | Delete
protected function _pregUnQuote($pattern, $matches){
[104] Fix | Delete
$search = array(
[105] Fix | Delete
'\\' . self::REGEX_DELIMITER, '\\.', '\\\\', '\\+', '\\[', '\\^', '\\]', '\\$', '\\(', '\\)', '\\{', '\\}',
[106] Fix | Delete
'\\=', '\\!', '\\<', '\\>', '\\|', '\\:', '\\-', '.*', '.', '\\?'
[107] Fix | Delete
);
[108] Fix | Delete
$replace = array(
[109] Fix | Delete
self::REGEX_DELIMITER, '\\?', '\\', '+', '[', '^', ']', '$', '(', ')', '{', '}', '=', '!', '<', '>', '|',
[110] Fix | Delete
':', '-', '*', '?', '.'
[111] Fix | Delete
);
[112] Fix | Delete
[113] Fix | Delete
$result = substr(str_replace($search, $replace, $pattern), 2, -2);
[114] Fix | Delete
[115] Fix | Delete
if ($matches) {
[116] Fix | Delete
foreach ($matches as $one_match) {
[117] Fix | Delete
$num_pos = strpos($result, '(\d)');
[118] Fix | Delete
$result = substr_replace($result, $one_match, $num_pos, 4);
[119] Fix | Delete
}
[120] Fix | Delete
}
[121] Fix | Delete
[122] Fix | Delete
return $result;
[123] Fix | Delete
}
[124] Fix | Delete
}
[125] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function