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

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wordfenc.../lib
File: wfLog.php
}
[1000] Fix | Delete
$group_regex = '([a-f0-9]{1,4}|\[[a-f0-9]{1,4}\-[a-f0-9]{1,4}\])';
[1001] Fix | Delete
return preg_match('/^' . str_repeat("$group_regex:", 7) . $group_regex . '$/i', $ip_string) > 0;
[1002] Fix | Delete
}
[1003] Fix | Delete
[1004] Fix | Delete
public function isValidLinearRange() { //e.g., 192.0.2.1-192.0.2.100
[1005] Fix | Delete
$ip_string = $this->getIPString();
[1006] Fix | Delete
if (preg_match('/[^0-9a-f:\.\-]/i', $ip_string)) { return false; }
[1007] Fix | Delete
list($ip1, $ip2) = explode("-", $ip_string);
[1008] Fix | Delete
$ip1N = @wfUtils::inet_pton($ip1);
[1009] Fix | Delete
$ip2N = @wfUtils::inet_pton($ip2);
[1010] Fix | Delete
[1011] Fix | Delete
if ($ip1N === false || !wfUtils::isValidIP($ip1) || $ip2N === false || !wfUtils::isValidIP($ip2)) {
[1012] Fix | Delete
return false;
[1013] Fix | Delete
}
[1014] Fix | Delete
[1015] Fix | Delete
return strcmp($ip1N, $ip2N) <= 0;
[1016] Fix | Delete
}
[1017] Fix | Delete
[1018] Fix | Delete
public function isMixedRange() { //e.g., 192.0.2.1-2001:db8::ffff
[1019] Fix | Delete
$ip_string = $this->getIPString();
[1020] Fix | Delete
if (preg_match('/[^0-9a-f:\.\-]/i', $ip_string)) { return false; }
[1021] Fix | Delete
list($ip1, $ip2) = explode("-", $ip_string);
[1022] Fix | Delete
[1023] Fix | Delete
$ipv4Count = 0;
[1024] Fix | Delete
$ipv4Count += filter_var($ip1, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false ? 1 : 0;
[1025] Fix | Delete
$ipv4Count += filter_var($ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false ? 1 : 0;
[1026] Fix | Delete
[1027] Fix | Delete
$ipv6Count = 0;
[1028] Fix | Delete
$ipv6Count += filter_var($ip1, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false ? 1 : 0;
[1029] Fix | Delete
$ipv6Count += filter_var($ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false ? 1 : 0;
[1030] Fix | Delete
[1031] Fix | Delete
if ($ipv4Count != 2 && $ipv6Count != 2) {
[1032] Fix | Delete
return true;
[1033] Fix | Delete
}
[1034] Fix | Delete
[1035] Fix | Delete
return false;
[1036] Fix | Delete
}
[1037] Fix | Delete
[1038] Fix | Delete
protected function _sanitizeIPRange($ip_string) {
[1039] Fix | Delete
if (!is_string($ip_string))
[1040] Fix | Delete
return null;
[1041] Fix | Delete
$ip_string = preg_replace('/\s/', '', $ip_string); //Strip whitespace
[1042] Fix | Delete
$ip_string = preg_replace('/[\\x{2013}-\\x{2015}]/u', '-', $ip_string); //Non-hyphen dashes to hyphen
[1043] Fix | Delete
$ip_string = strtolower($ip_string);
[1044] Fix | Delete
[1045] Fix | Delete
if (preg_match('/^\d+-\d+$/', $ip_string)) { //v5 32 bit int style format
[1046] Fix | Delete
list($start, $end) = explode('-', $ip_string);
[1047] Fix | Delete
$start = long2ip($start);
[1048] Fix | Delete
$end = long2ip($end);
[1049] Fix | Delete
$ip_string = "{$start}-{$end}";
[1050] Fix | Delete
}
[1051] Fix | Delete
[1052] Fix | Delete
return $ip_string;
[1053] Fix | Delete
}
[1054] Fix | Delete
[1055] Fix | Delete
/**
[1056] Fix | Delete
* @return string|null
[1057] Fix | Delete
*/
[1058] Fix | Delete
public function getIPString() {
[1059] Fix | Delete
return $this->ip_string;
[1060] Fix | Delete
}
[1061] Fix | Delete
[1062] Fix | Delete
/**
[1063] Fix | Delete
* @param string|null $ip_string
[1064] Fix | Delete
*/
[1065] Fix | Delete
public function setIPString($ip_string) {
[1066] Fix | Delete
$this->ip_string = $this->_sanitizeIPRange($ip_string);
[1067] Fix | Delete
}
[1068] Fix | Delete
}
[1069] Fix | Delete
[1070] Fix | Delete
/**
[1071] Fix | Delete
* The function of this class is to detect admin users created via direct access to the database (in other words, not
[1072] Fix | Delete
* through WordPress).
[1073] Fix | Delete
*/
[1074] Fix | Delete
class wfAdminUserMonitor {
[1075] Fix | Delete
[1076] Fix | Delete
protected $currentAdminList = array();
[1077] Fix | Delete
[1078] Fix | Delete
public function isEnabled() {
[1079] Fix | Delete
$options = wfScanner::shared()->scanOptions();
[1080] Fix | Delete
$enabled = $options['scansEnabled_suspiciousAdminUsers'];
[1081] Fix | Delete
if ($enabled && is_multisite()) {
[1082] Fix | Delete
if (!function_exists('wp_is_large_network')) {
[1083] Fix | Delete
require_once(ABSPATH . WPINC . '/ms-functions.php');
[1084] Fix | Delete
}
[1085] Fix | Delete
$enabled = !wp_is_large_network('sites') && !wp_is_large_network('users');
[1086] Fix | Delete
}
[1087] Fix | Delete
return $enabled;
[1088] Fix | Delete
}
[1089] Fix | Delete
[1090] Fix | Delete
/**
[1091] Fix | Delete
*
[1092] Fix | Delete
*/
[1093] Fix | Delete
public function createInitialList() {
[1094] Fix | Delete
$admins = $this->getCurrentAdmins();
[1095] Fix | Delete
$adminUserList = array();
[1096] Fix | Delete
foreach ($admins as $id => $user) {
[1097] Fix | Delete
$adminUserList[$id] = 1;
[1098] Fix | Delete
}
[1099] Fix | Delete
wfConfig::set_ser('adminUserList', $adminUserList);
[1100] Fix | Delete
}
[1101] Fix | Delete
[1102] Fix | Delete
/**
[1103] Fix | Delete
* @param int $userID
[1104] Fix | Delete
*/
[1105] Fix | Delete
public function grantSuperAdmin($userID = null) {
[1106] Fix | Delete
if ($userID) {
[1107] Fix | Delete
$this->addAdmin($userID);
[1108] Fix | Delete
}
[1109] Fix | Delete
}
[1110] Fix | Delete
[1111] Fix | Delete
/**
[1112] Fix | Delete
* @param int $userID
[1113] Fix | Delete
*/
[1114] Fix | Delete
public function revokeSuperAdmin($userID = null) {
[1115] Fix | Delete
if ($userID) {
[1116] Fix | Delete
$this->removeAdmin($userID);
[1117] Fix | Delete
}
[1118] Fix | Delete
}
[1119] Fix | Delete
[1120] Fix | Delete
/**
[1121] Fix | Delete
* @param int $ID
[1122] Fix | Delete
* @param mixed $role
[1123] Fix | Delete
* @param mixed $old_roles
[1124] Fix | Delete
*/
[1125] Fix | Delete
public function updateToUserRole($ID = null, $role = null, $old_roles = null) {
[1126] Fix | Delete
$admins = $this->getLoggedAdmins();
[1127] Fix | Delete
if ($role !== 'administrator' && array_key_exists($ID, $admins)) {
[1128] Fix | Delete
$this->removeAdmin($ID);
[1129] Fix | Delete
} else if ($role === 'administrator') {
[1130] Fix | Delete
$this->addAdmin($ID);
[1131] Fix | Delete
}
[1132] Fix | Delete
}
[1133] Fix | Delete
[1134] Fix | Delete
/**
[1135] Fix | Delete
* @return array|bool
[1136] Fix | Delete
*/
[1137] Fix | Delete
public function checkNewAdmins() {
[1138] Fix | Delete
$loggedAdmins = $this->getLoggedAdmins();
[1139] Fix | Delete
$admins = $this->getCurrentAdmins();
[1140] Fix | Delete
$suspiciousAdmins = array();
[1141] Fix | Delete
foreach ($admins as $adminID => $v) {
[1142] Fix | Delete
if (!array_key_exists($adminID, $loggedAdmins)) {
[1143] Fix | Delete
$suspiciousAdmins[] = $adminID;
[1144] Fix | Delete
}
[1145] Fix | Delete
}
[1146] Fix | Delete
return $suspiciousAdmins ? $suspiciousAdmins : false;
[1147] Fix | Delete
}
[1148] Fix | Delete
[1149] Fix | Delete
/**
[1150] Fix | Delete
* Checks if the supplied user ID is suspicious.
[1151] Fix | Delete
*
[1152] Fix | Delete
* @param int $userID
[1153] Fix | Delete
* @return bool
[1154] Fix | Delete
*/
[1155] Fix | Delete
public function isAdminUserLogged($userID) {
[1156] Fix | Delete
$loggedAdmins = $this->getLoggedAdmins();
[1157] Fix | Delete
return array_key_exists($userID, $loggedAdmins);
[1158] Fix | Delete
}
[1159] Fix | Delete
[1160] Fix | Delete
/**
[1161] Fix | Delete
* @param bool $forceReload
[1162] Fix | Delete
* @return array
[1163] Fix | Delete
*/
[1164] Fix | Delete
public function getCurrentAdmins($forceReload = false) {
[1165] Fix | Delete
if (empty($this->currentAdminList) || $forceReload) {
[1166] Fix | Delete
require_once(ABSPATH . WPINC . '/user.php');
[1167] Fix | Delete
if (is_multisite()) {
[1168] Fix | Delete
if (function_exists("get_sites")) {
[1169] Fix | Delete
$sites = get_sites(array(
[1170] Fix | Delete
'network_id' => null,
[1171] Fix | Delete
));
[1172] Fix | Delete
}
[1173] Fix | Delete
else {
[1174] Fix | Delete
$sites = wp_get_sites(array(
[1175] Fix | Delete
'network_id' => null,
[1176] Fix | Delete
));
[1177] Fix | Delete
}
[1178] Fix | Delete
} else {
[1179] Fix | Delete
$sites = array(array(
[1180] Fix | Delete
'blog_id' => get_current_blog_id(),
[1181] Fix | Delete
));
[1182] Fix | Delete
}
[1183] Fix | Delete
[1184] Fix | Delete
// not very efficient, but the WordPress API doesn't provide a good way to do this.
[1185] Fix | Delete
$this->currentAdminList = array();
[1186] Fix | Delete
foreach ($sites as $siteRow) {
[1187] Fix | Delete
$siteRowArray = (array) $siteRow;
[1188] Fix | Delete
$user_query = new WP_User_Query(array(
[1189] Fix | Delete
'blog_id' => $siteRowArray['blog_id'],
[1190] Fix | Delete
'role' => 'administrator',
[1191] Fix | Delete
));
[1192] Fix | Delete
$users = $user_query->get_results();
[1193] Fix | Delete
if (is_array($users)) {
[1194] Fix | Delete
/** @var WP_User $user */
[1195] Fix | Delete
foreach ($users as $user) {
[1196] Fix | Delete
$this->currentAdminList[$user->ID] = $user;
[1197] Fix | Delete
}
[1198] Fix | Delete
}
[1199] Fix | Delete
}
[1200] Fix | Delete
[1201] Fix | Delete
// Add any super admins that aren't also admins on a network
[1202] Fix | Delete
$superAdmins = get_super_admins();
[1203] Fix | Delete
foreach ($superAdmins as $userLogin) {
[1204] Fix | Delete
$user = get_user_by('login', $userLogin);
[1205] Fix | Delete
if ($user) {
[1206] Fix | Delete
$this->currentAdminList[$user->ID] = $user;
[1207] Fix | Delete
}
[1208] Fix | Delete
}
[1209] Fix | Delete
}
[1210] Fix | Delete
[1211] Fix | Delete
return $this->currentAdminList;
[1212] Fix | Delete
}
[1213] Fix | Delete
[1214] Fix | Delete
public function getLoggedAdmins() {
[1215] Fix | Delete
$loggedAdmins = wfConfig::get_ser('adminUserList', false);
[1216] Fix | Delete
if (!is_array($loggedAdmins)) {
[1217] Fix | Delete
$this->createInitialList();
[1218] Fix | Delete
$loggedAdmins = wfConfig::get_ser('adminUserList', false);
[1219] Fix | Delete
}
[1220] Fix | Delete
if (!is_array($loggedAdmins)) {
[1221] Fix | Delete
$loggedAdmins = array();
[1222] Fix | Delete
}
[1223] Fix | Delete
return $loggedAdmins;
[1224] Fix | Delete
}
[1225] Fix | Delete
[1226] Fix | Delete
/**
[1227] Fix | Delete
* @param int $userID
[1228] Fix | Delete
*/
[1229] Fix | Delete
public function addAdmin($userID) {
[1230] Fix | Delete
$loggedAdmins = $this->getLoggedAdmins();
[1231] Fix | Delete
if (!array_key_exists($userID, $loggedAdmins)) {
[1232] Fix | Delete
$loggedAdmins[$userID] = 1;
[1233] Fix | Delete
wfConfig::set_ser('adminUserList', $loggedAdmins);
[1234] Fix | Delete
}
[1235] Fix | Delete
}
[1236] Fix | Delete
[1237] Fix | Delete
/**
[1238] Fix | Delete
* @param int $userID
[1239] Fix | Delete
*/
[1240] Fix | Delete
public function removeAdmin($userID) {
[1241] Fix | Delete
$loggedAdmins = $this->getLoggedAdmins();
[1242] Fix | Delete
if (array_key_exists($userID, $loggedAdmins) && !array_key_exists($userID, $this->getCurrentAdmins())) {
[1243] Fix | Delete
unset($loggedAdmins[$userID]);
[1244] Fix | Delete
wfConfig::set_ser('adminUserList', $loggedAdmins);
[1245] Fix | Delete
}
[1246] Fix | Delete
}
[1247] Fix | Delete
}
[1248] Fix | Delete
[1249] Fix | Delete
/**
[1250] Fix | Delete
* Represents a request record
[1251] Fix | Delete
*
[1252] Fix | Delete
* @property int $id
[1253] Fix | Delete
* @property float $attackLogTime
[1254] Fix | Delete
* @property float $ctime
[1255] Fix | Delete
* @property string $IP
[1256] Fix | Delete
* @property bool $jsRun
[1257] Fix | Delete
* @property int $statusCode
[1258] Fix | Delete
* @property bool $isGoogle
[1259] Fix | Delete
* @property int $userID
[1260] Fix | Delete
* @property string $URL
[1261] Fix | Delete
* @property string $referer
[1262] Fix | Delete
* @property string $UA
[1263] Fix | Delete
* @property string $action
[1264] Fix | Delete
* @property string $actionDescription
[1265] Fix | Delete
* @property string $actionData
[1266] Fix | Delete
*/
[1267] Fix | Delete
class wfRequestModel extends wfModel {
[1268] Fix | Delete
[1269] Fix | Delete
private static $actionDataEncodedParams = array(
[1270] Fix | Delete
'paramKey',
[1271] Fix | Delete
'paramValue',
[1272] Fix | Delete
'path',
[1273] Fix | Delete
);
[1274] Fix | Delete
[1275] Fix | Delete
/**
[1276] Fix | Delete
* @param $actionData
[1277] Fix | Delete
* @return mixed|string|void
[1278] Fix | Delete
*/
[1279] Fix | Delete
public static function serializeActionData($actionData, $optionalKeys = array(), $maxLength = 65535) {
[1280] Fix | Delete
if (is_array($actionData)) {
[1281] Fix | Delete
foreach (self::$actionDataEncodedParams as $key) {
[1282] Fix | Delete
if (array_key_exists($key, $actionData)) {
[1283] Fix | Delete
$actionData[$key] = base64_encode($actionData[$key]);
[1284] Fix | Delete
}
[1285] Fix | Delete
}
[1286] Fix | Delete
}
[1287] Fix | Delete
do {
[1288] Fix | Delete
$serialized = json_encode($actionData, JSON_UNESCAPED_SLASHES);
[1289] Fix | Delete
$length = strlen($serialized);
[1290] Fix | Delete
if ($length <= $maxLength)
[1291] Fix | Delete
return $serialized;
[1292] Fix | Delete
$excess = $length - $maxLength;
[1293] Fix | Delete
$truncated = false;
[1294] Fix | Delete
foreach ($optionalKeys as $key) {
[1295] Fix | Delete
if (array_key_exists($key, $actionData)) {
[1296] Fix | Delete
$fieldValue = $actionData[$key];
[1297] Fix | Delete
$fieldLength = strlen($fieldValue);
[1298] Fix | Delete
$truncatedLength = min($fieldLength, $excess);
[1299] Fix | Delete
$truncated = true;
[1300] Fix | Delete
if ($truncatedLength > 0) {
[1301] Fix | Delete
$actionData[$key] = substr($fieldValue, 0, -$truncatedLength);
[1302] Fix | Delete
$excess -= $truncatedLength;
[1303] Fix | Delete
}
[1304] Fix | Delete
else {
[1305] Fix | Delete
unset($actionData[$key]);
[1306] Fix | Delete
break;
[1307] Fix | Delete
}
[1308] Fix | Delete
}
[1309] Fix | Delete
}
[1310] Fix | Delete
} while ($truncated);
[1311] Fix | Delete
return null;
[1312] Fix | Delete
}
[1313] Fix | Delete
[1314] Fix | Delete
/**
[1315] Fix | Delete
* @param $actionDataJSON
[1316] Fix | Delete
* @return mixed|string|void
[1317] Fix | Delete
*/
[1318] Fix | Delete
public static function unserializeActionData($actionDataJSON) {
[1319] Fix | Delete
$actionData = json_decode($actionDataJSON, true);
[1320] Fix | Delete
if (is_array($actionData)) {
[1321] Fix | Delete
foreach (self::$actionDataEncodedParams as $key) {
[1322] Fix | Delete
if (array_key_exists($key, $actionData)) {
[1323] Fix | Delete
$actionData[$key] = base64_decode($actionData[$key]);
[1324] Fix | Delete
}
[1325] Fix | Delete
}
[1326] Fix | Delete
}
[1327] Fix | Delete
else {
[1328] Fix | Delete
$actionData = array();
[1329] Fix | Delete
}
[1330] Fix | Delete
return $actionData;
[1331] Fix | Delete
}
[1332] Fix | Delete
[1333] Fix | Delete
private $columns = array(
[1334] Fix | Delete
'id',
[1335] Fix | Delete
'attackLogTime',
[1336] Fix | Delete
'ctime',
[1337] Fix | Delete
'IP',
[1338] Fix | Delete
'jsRun',
[1339] Fix | Delete
'statusCode',
[1340] Fix | Delete
'isGoogle',
[1341] Fix | Delete
'userID',
[1342] Fix | Delete
'URL',
[1343] Fix | Delete
'referer',
[1344] Fix | Delete
'UA',
[1345] Fix | Delete
'action',
[1346] Fix | Delete
'actionDescription',
[1347] Fix | Delete
'actionData',
[1348] Fix | Delete
);
[1349] Fix | Delete
[1350] Fix | Delete
public function getIDColumn() {
[1351] Fix | Delete
return 'id';
[1352] Fix | Delete
}
[1353] Fix | Delete
[1354] Fix | Delete
public function getTable() {
[1355] Fix | Delete
return wfDB::networkTable('wfHits');
[1356] Fix | Delete
}
[1357] Fix | Delete
[1358] Fix | Delete
public function hasColumn($column) {
[1359] Fix | Delete
return in_array($column, $this->columns);
[1360] Fix | Delete
}
[1361] Fix | Delete
[1362] Fix | Delete
public function save() {
[1363] Fix | Delete
$sapi = @php_sapi_name();
[1364] Fix | Delete
if ($sapi == "cli") {
[1365] Fix | Delete
return false;
[1366] Fix | Delete
}
[1367] Fix | Delete
[1368] Fix | Delete
return parent::save();
[1369] Fix | Delete
}
[1370] Fix | Delete
}
[1371] Fix | Delete
[1372] Fix | Delete
[1373] Fix | Delete
class wfLiveTrafficQuery {
[1374] Fix | Delete
[1375] Fix | Delete
protected $validParams = array(
[1376] Fix | Delete
'id' => 'h.id',
[1377] Fix | Delete
'ctime' => 'h.ctime',
[1378] Fix | Delete
'ip' => 'h.ip',
[1379] Fix | Delete
'jsrun' => 'h.jsrun',
[1380] Fix | Delete
'statuscode' => 'h.statuscode',
[1381] Fix | Delete
'isgoogle' => 'h.isgoogle',
[1382] Fix | Delete
'userid' => 'h.userid',
[1383] Fix | Delete
'url' => 'h.url',
[1384] Fix | Delete
'referer' => 'h.referer',
[1385] Fix | Delete
'ua' => 'h.ua',
[1386] Fix | Delete
'action' => 'h.action',
[1387] Fix | Delete
'actiondescription' => 'h.actiondescription',
[1388] Fix | Delete
'actiondata' => 'h.actiondata',
[1389] Fix | Delete
[1390] Fix | Delete
// wfLogins
[1391] Fix | Delete
'user_login' => 'u.user_login',
[1392] Fix | Delete
'username' => 'l.username',
[1393] Fix | Delete
);
[1394] Fix | Delete
[1395] Fix | Delete
/** @var wfLiveTrafficQueryFilterCollection */
[1396] Fix | Delete
private $filters = array();
[1397] Fix | Delete
[1398] Fix | Delete
/** @var wfLiveTrafficQueryGroupBy */
[1399] Fix | Delete
private $groupBy;
[1400] Fix | Delete
/**
[1401] Fix | Delete
* @var float|null
[1402] Fix | Delete
*/
[1403] Fix | Delete
private $startDate;
[1404] Fix | Delete
/**
[1405] Fix | Delete
* @var float|null
[1406] Fix | Delete
*/
[1407] Fix | Delete
private $endDate;
[1408] Fix | Delete
/**
[1409] Fix | Delete
* @var int
[1410] Fix | Delete
*/
[1411] Fix | Delete
private $limit;
[1412] Fix | Delete
/**
[1413] Fix | Delete
* @var int
[1414] Fix | Delete
*/
[1415] Fix | Delete
private $offset;
[1416] Fix | Delete
[1417] Fix | Delete
private $tableName;
[1418] Fix | Delete
[1419] Fix | Delete
/** @var wfLog */
[1420] Fix | Delete
private $wfLog;
[1421] Fix | Delete
[1422] Fix | Delete
/**
[1423] Fix | Delete
* wfLiveTrafficQuery constructor.
[1424] Fix | Delete
*
[1425] Fix | Delete
* @param wfLog $wfLog
[1426] Fix | Delete
* @param wfLiveTrafficQueryFilterCollection $filters
[1427] Fix | Delete
* @param wfLiveTrafficQueryGroupBy $groupBy
[1428] Fix | Delete
* @param float $startDate
[1429] Fix | Delete
* @param float $endDate
[1430] Fix | Delete
* @param int $limit
[1431] Fix | Delete
* @param int $offset
[1432] Fix | Delete
*/
[1433] Fix | Delete
public function __construct($wfLog, $filters = null, $groupBy = null, $startDate = null, $endDate = null, $limit = 20, $offset = 0) {
[1434] Fix | Delete
$this->wfLog = $wfLog;
[1435] Fix | Delete
$this->filters = $filters;
[1436] Fix | Delete
$this->groupBy = $groupBy;
[1437] Fix | Delete
$this->startDate = $startDate;
[1438] Fix | Delete
$this->endDate = $endDate;
[1439] Fix | Delete
$this->limit = $limit;
[1440] Fix | Delete
$this->offset = $offset;
[1441] Fix | Delete
}
[1442] Fix | Delete
[1443] Fix | Delete
/**
[1444] Fix | Delete
* @return array|null|object
[1445] Fix | Delete
*/
[1446] Fix | Delete
public function execute() {
[1447] Fix | Delete
global $wpdb;
[1448] Fix | Delete
$delayedHumanBotFiltering = false;
[1449] Fix | Delete
$humanOnly = false;
[1450] Fix | Delete
$sql = $this->buildQuery($delayedHumanBotFiltering, $humanOnly);
[1451] Fix | Delete
$results = $wpdb->get_results($sql, ARRAY_A);
[1452] Fix | Delete
[1453] Fix | Delete
if ($delayedHumanBotFiltering) {
[1454] Fix | Delete
$browscap = wfBrowscap::shared();
[1455] Fix | Delete
foreach ($results as $index => $res) {
[1456] Fix | Delete
if ($res['UA']) {
[1457] Fix | Delete
$b = $browscap->getBrowser($res['UA']);
[1458] Fix | Delete
$jsRun = wfUtils::truthyToBoolean($res['jsRun']);
[1459] Fix | Delete
if ($b && $b['Parent'] != 'DefaultProperties') {
[1460] Fix | Delete
$jsRun = wfUtils::truthyToBoolean($res['jsRun']);
[1461] Fix | Delete
if (!wfConfig::liveTrafficEnabled() && !$jsRun) {
[1462] Fix | Delete
$jsRun = !(isset($b['Crawler']) && $b['Crawler']);
[1463] Fix | Delete
}
[1464] Fix | Delete
}
[1465] Fix | Delete
[1466] Fix | Delete
if (!$humanOnly && $jsRun || $humanOnly && !$jsRun) {
[1467] Fix | Delete
unset($results[$index]);
[1468] Fix | Delete
}
[1469] Fix | Delete
}
[1470] Fix | Delete
}
[1471] Fix | Delete
}
[1472] Fix | Delete
[1473] Fix | Delete
$this->getWFLog()->processGetHitsResults('', $results);
[1474] Fix | Delete
[1475] Fix | Delete
$verifyCrawlers = false;
[1476] Fix | Delete
if ($this->filters !== null && count($this->filters->getFilters()) > 0) {
[1477] Fix | Delete
$filters = $this->filters->getFilters();
[1478] Fix | Delete
foreach ($filters as $f) {
[1479] Fix | Delete
if (strtolower($f->getParam()) == "isgoogle") {
[1480] Fix | Delete
$verifyCrawlers = true;
[1481] Fix | Delete
break;
[1482] Fix | Delete
}
[1483] Fix | Delete
}
[1484] Fix | Delete
}
[1485] Fix | Delete
[1486] Fix | Delete
foreach ($results as $key => &$row) {
[1487] Fix | Delete
if ($row['isGoogle'] && $verifyCrawlers) {
[1488] Fix | Delete
if (!wfCrawl::isVerifiedGoogleCrawler($row['IP'], $row['UA'])) {
[1489] Fix | Delete
unset($results[$key]); //foreach copies $results and iterates on the copy, so it is safe to mutate $results within the loop
[1490] Fix | Delete
continue;
[1491] Fix | Delete
}
[1492] Fix | Delete
}
[1493] Fix | Delete
[1494] Fix | Delete
$row['actionData'] = $row['actionData'] === null ? array() : (array) json_decode($row['actionData'], true);
[1495] Fix | Delete
}
[1496] Fix | Delete
return array_values($results);
[1497] Fix | Delete
}
[1498] Fix | Delete
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function