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: wfConfig.php
wordfence::status(1, 'error', $msg);
[500] Fix | Delete
return;
[501] Fix | Delete
}
[502] Fix | Delete
[503] Fix | Delete
if (($key == 'apiKey' || $key == 'isPaid' || $key == 'other_WFNet') && wfWAF::getInstance() && !WFWAF_SUBDIRECTORY_INSTALL) {
[504] Fix | Delete
if ($key == 'isPaid' || $key == 'other_WFNet') {
[505] Fix | Delete
$val = !!$val;
[506] Fix | Delete
}
[507] Fix | Delete
[508] Fix | Delete
try {
[509] Fix | Delete
wfWAF::getInstance()->getStorageEngine()->setConfig($key, $val, 'synced');
[510] Fix | Delete
} catch (wfWAFStorageFileException $e) {
[511] Fix | Delete
error_log($e->getMessage());
[512] Fix | Delete
} catch (wfWAFStorageEngineMySQLiException $e) {
[513] Fix | Delete
error_log($e->getMessage());
[514] Fix | Delete
}
[515] Fix | Delete
}
[516] Fix | Delete
[517] Fix | Delete
if (!self::$tableExists) {
[518] Fix | Delete
return;
[519] Fix | Delete
[520] Fix | Delete
}
[521] Fix | Delete
$table = self::table();
[522] Fix | Delete
if ($wpdb->query($wpdb->prepare("INSERT INTO {$table} (name, val, autoload) values (%s, %s, %s) ON DUPLICATE KEY UPDATE val = %s, autoload = %s", $key, $val, $autoload, $val, $autoload)) !== false && $autoload != self::DONT_AUTOLOAD) {
[523] Fix | Delete
self::updateCachedOption($key, $val);
[524] Fix | Delete
}
[525] Fix | Delete
[526] Fix | Delete
if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController') && (substr($key, 0, 4) == 'cbl_' || $key == 'blockedTime' || $key == 'disableWAFIPBlocking')) {
[527] Fix | Delete
wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
[528] Fix | Delete
}
[529] Fix | Delete
}
[530] Fix | Delete
public static function setJSON($key, $val, $autoload = self::AUTOLOAD) {
[531] Fix | Delete
self::set($key, @json_encode($val), $autoload);
[532] Fix | Delete
}
[533] Fix | Delete
public static function setBool($key, $val, $autoload = self::AUTOLOAD) {
[534] Fix | Delete
self::set($key, wfUtils::truthyToBoolean($val) ? 1 : 0, $autoload);
[535] Fix | Delete
}
[536] Fix | Delete
public static function setOrRemove($key, $value, $autoload = self::AUTOLOAD) {
[537] Fix | Delete
if ($value === null) {
[538] Fix | Delete
self::remove($key);
[539] Fix | Delete
}
[540] Fix | Delete
else {
[541] Fix | Delete
self::set($key, $value, $autoload);
[542] Fix | Delete
}
[543] Fix | Delete
}
[544] Fix | Delete
public static function get($key, $default = false, $allowCached = true, &$isDefault = false) {
[545] Fix | Delete
global $wpdb;
[546] Fix | Delete
[547] Fix | Delete
if ($allowCached && self::hasCachedOption($key)) {
[548] Fix | Delete
return self::getCachedOption($key);
[549] Fix | Delete
}
[550] Fix | Delete
[551] Fix | Delete
if (!self::$tableExists) {
[552] Fix | Delete
$isDefault = true;
[553] Fix | Delete
return $default;
[554] Fix | Delete
}
[555] Fix | Delete
[556] Fix | Delete
$table = self::table();
[557] Fix | Delete
if (!($option = $wpdb->get_row($wpdb->prepare("SELECT name, val, autoload FROM {$table} WHERE name = %s", $key)))) {
[558] Fix | Delete
$isDefault = true;
[559] Fix | Delete
return $default;
[560] Fix | Delete
}
[561] Fix | Delete
[562] Fix | Delete
if ($option->autoload != self::DONT_AUTOLOAD) {
[563] Fix | Delete
self::updateCachedOption($key, $option->val);
[564] Fix | Delete
}
[565] Fix | Delete
return $option->val;
[566] Fix | Delete
}
[567] Fix | Delete
[568] Fix | Delete
public static function getInt($key, $default = 0, $allowCached = true) {
[569] Fix | Delete
return (int) self::get($key, $default, $allowCached);
[570] Fix | Delete
}
[571] Fix | Delete
[572] Fix | Delete
public static function getJSON($key, $default = false, $allowCached = true) {
[573] Fix | Delete
$json = self::get($key, $default, $allowCached, $isDefault);
[574] Fix | Delete
if ($isDefault)
[575] Fix | Delete
return $json;
[576] Fix | Delete
$decoded = @json_decode($json, true);
[577] Fix | Delete
if ($decoded === null) {
[578] Fix | Delete
return $default;
[579] Fix | Delete
}
[580] Fix | Delete
return $decoded;
[581] Fix | Delete
}
[582] Fix | Delete
[583] Fix | Delete
public static function getBool($key, $default = false, $allowCached = true) {
[584] Fix | Delete
return wfUtils::truthyToBoolean(self::get($key, $default, $allowCached));
[585] Fix | Delete
}
[586] Fix | Delete
[587] Fix | Delete
/**
[588] Fix | Delete
* Runs a test against the database to verify set_ser is working via MySQLi.
[589] Fix | Delete
*
[590] Fix | Delete
* @return bool
[591] Fix | Delete
*/
[592] Fix | Delete
public static function testDB() {
[593] Fix | Delete
$nonce = bin2hex(wfWAFUtils::random_bytes(32));
[594] Fix | Delete
$payload = array('nonce' => $nonce);
[595] Fix | Delete
$allow = wfConfig::get('allowMySQLi', true);
[596] Fix | Delete
wfConfig::set('allowMySQLi', true);
[597] Fix | Delete
wfConfig::set_ser('dbTest', $payload, false, wfConfig::DONT_AUTOLOAD);
[598] Fix | Delete
[599] Fix | Delete
$stored = wfConfig::get_ser('dbTest', false, false);
[600] Fix | Delete
wfConfig::set('allowMySQLi', $allow);
[601] Fix | Delete
$result = false;
[602] Fix | Delete
if (is_array($stored) && isset($stored['nonce']) && hash_equals($nonce, $stored['nonce'])) {
[603] Fix | Delete
$result = true;
[604] Fix | Delete
}
[605] Fix | Delete
[606] Fix | Delete
wfConfig::delete_ser_chunked('dbTest');
[607] Fix | Delete
return $result;
[608] Fix | Delete
}
[609] Fix | Delete
[610] Fix | Delete
private static function canCompressValue() {
[611] Fix | Delete
if (!function_exists('gzencode') || !function_exists('gzdecode')) {
[612] Fix | Delete
return false;
[613] Fix | Delete
}
[614] Fix | Delete
$disabled = explode(',', ini_get('disable_functions'));
[615] Fix | Delete
if (in_array('gzencode', $disabled) || in_array('gzdecode', $disabled)) {
[616] Fix | Delete
return false;
[617] Fix | Delete
}
[618] Fix | Delete
return true;
[619] Fix | Delete
}
[620] Fix | Delete
[621] Fix | Delete
private static function isCompressedValue($data) {
[622] Fix | Delete
//Based on http://www.ietf.org/rfc/rfc1952.txt
[623] Fix | Delete
if (strlen($data) < 2) {
[624] Fix | Delete
return false;
[625] Fix | Delete
}
[626] Fix | Delete
[627] Fix | Delete
$magicBytes = substr($data, 0, 2);
[628] Fix | Delete
if ($magicBytes !== (chr(0x1f) . chr(0x8b))) {
[629] Fix | Delete
return false;
[630] Fix | Delete
}
[631] Fix | Delete
[632] Fix | Delete
//Small chance of false positives here -- can check the header CRC if it turns out it's needed
[633] Fix | Delete
return true;
[634] Fix | Delete
}
[635] Fix | Delete
[636] Fix | Delete
private static function ser_chunked_key($key) {
[637] Fix | Delete
return 'wordfence_chunked_' . $key . '_';
[638] Fix | Delete
}
[639] Fix | Delete
[640] Fix | Delete
public static function get_ser($key, $default = false, $cache = true) {
[641] Fix | Delete
if (self::hasCachedOption($key)) {
[642] Fix | Delete
return self::getCachedOption($key);
[643] Fix | Delete
}
[644] Fix | Delete
[645] Fix | Delete
if (!self::$tableExists) {
[646] Fix | Delete
return $default;
[647] Fix | Delete
}
[648] Fix | Delete
[649] Fix | Delete
//Check for a chunked value first
[650] Fix | Delete
$chunkedValueKey = self::ser_chunked_key($key);
[651] Fix | Delete
$header = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $chunkedValueKey . 'header');
[652] Fix | Delete
if ($header) {
[653] Fix | Delete
$header = unserialize($header);
[654] Fix | Delete
$count = $header['count'];
[655] Fix | Delete
$path = tempnam(sys_get_temp_dir(), $key); //Writing to a file like this saves some of PHP's in-memory copying when just appending each chunk to a string
[656] Fix | Delete
$fh = fopen($path, 'r+');
[657] Fix | Delete
$length = 0;
[658] Fix | Delete
for ($i = 0; $i < $count; $i++) {
[659] Fix | Delete
$chunk = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $chunkedValueKey . $i);
[660] Fix | Delete
self::getDB()->flush(); //clear cache
[661] Fix | Delete
if (!$chunk) {
[662] Fix | Delete
wordfence::status(2, 'error', sprintf(/* translators: Key in key-value store. */ __("Error reassembling value for %s", 'wordfence'), $key));
[663] Fix | Delete
return $default;
[664] Fix | Delete
}
[665] Fix | Delete
fwrite($fh, $chunk);
[666] Fix | Delete
$length += strlen($chunk);
[667] Fix | Delete
unset($chunk);
[668] Fix | Delete
}
[669] Fix | Delete
[670] Fix | Delete
fseek($fh, 0);
[671] Fix | Delete
$serialized = fread($fh, $length);
[672] Fix | Delete
fclose($fh);
[673] Fix | Delete
unlink($path);
[674] Fix | Delete
[675] Fix | Delete
if (self::canCompressValue() && self::isCompressedValue($serialized)) {
[676] Fix | Delete
$inflated = @gzdecode($serialized);
[677] Fix | Delete
if ($inflated !== false) {
[678] Fix | Delete
unset($serialized);
[679] Fix | Delete
if ($cache) {
[680] Fix | Delete
self::updateCachedOption($key, unserialize($inflated));
[681] Fix | Delete
return self::getCachedOption($key);
[682] Fix | Delete
}
[683] Fix | Delete
return unserialize($inflated);
[684] Fix | Delete
}
[685] Fix | Delete
}
[686] Fix | Delete
if ($cache) {
[687] Fix | Delete
self::updateCachedOption($key, unserialize($serialized));
[688] Fix | Delete
return self::getCachedOption($key);
[689] Fix | Delete
}
[690] Fix | Delete
return unserialize($serialized);
[691] Fix | Delete
}
[692] Fix | Delete
else {
[693] Fix | Delete
$serialized = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $key);
[694] Fix | Delete
self::getDB()->flush(); //clear cache
[695] Fix | Delete
if ($serialized) {
[696] Fix | Delete
if (self::canCompressValue() && self::isCompressedValue($serialized)) {
[697] Fix | Delete
$inflated = @gzdecode($serialized);
[698] Fix | Delete
if ($inflated !== false) {
[699] Fix | Delete
unset($serialized);
[700] Fix | Delete
return unserialize($inflated);
[701] Fix | Delete
}
[702] Fix | Delete
}
[703] Fix | Delete
if ($cache) {
[704] Fix | Delete
self::updateCachedOption($key, unserialize($serialized));
[705] Fix | Delete
return self::getCachedOption($key);
[706] Fix | Delete
}
[707] Fix | Delete
return unserialize($serialized);
[708] Fix | Delete
}
[709] Fix | Delete
}
[710] Fix | Delete
[711] Fix | Delete
return $default;
[712] Fix | Delete
}
[713] Fix | Delete
[714] Fix | Delete
public static function set_ser($key, $val, $allowCompression = false, $autoload = self::AUTOLOAD) {
[715] Fix | Delete
/*
[716] Fix | Delete
* Because of the small default value for `max_allowed_packet` and `max_long_data_size`, we're stuck splitting
[717] Fix | Delete
* large values into multiple chunks. To minimize memory use, the MySQLi driver is used directly when possible.
[718] Fix | Delete
*/
[719] Fix | Delete
[720] Fix | Delete
global $wpdb;
[721] Fix | Delete
$dbh = $wpdb->dbh;
[722] Fix | Delete
$useMySQLi = wfUtils::useMySQLi();
[723] Fix | Delete
[724] Fix | Delete
if (!self::$tableExists) {
[725] Fix | Delete
return;
[726] Fix | Delete
}
[727] Fix | Delete
[728] Fix | Delete
self::delete_ser_chunked($key); //Ensure any old values for a chunked value are deleted first
[729] Fix | Delete
[730] Fix | Delete
if (self::canCompressValue() && $allowCompression) {
[731] Fix | Delete
$data = gzencode(serialize($val));
[732] Fix | Delete
}
[733] Fix | Delete
else {
[734] Fix | Delete
$data = serialize($val);
[735] Fix | Delete
}
[736] Fix | Delete
[737] Fix | Delete
if (!$useMySQLi) {
[738] Fix | Delete
$data = bin2hex($data);
[739] Fix | Delete
}
[740] Fix | Delete
[741] Fix | Delete
$dataLength = strlen($data);
[742] Fix | Delete
$maxAllowedPacketBytes = self::getDB()->getMaxAllowedPacketBytes();
[743] Fix | Delete
$chunkSize = intval((($maxAllowedPacketBytes < 1024 /* MySQL minimum, probably failure to fetch it */ ? 1024 * 1024 /* MySQL default */ : $maxAllowedPacketBytes) - 50) / 1.2); //Based on max_allowed_packet + 20% for escaping and SQL
[744] Fix | Delete
$chunkSize = $chunkSize - ($chunkSize % 2); //Ensure it's even
[745] Fix | Delete
$chunkedValueKey = self::ser_chunked_key($key);
[746] Fix | Delete
if ($dataLength > $chunkSize) {
[747] Fix | Delete
$chunks = 0;
[748] Fix | Delete
while (($chunks * $chunkSize) < $dataLength) {
[749] Fix | Delete
$dataChunk = substr($data, $chunks * $chunkSize, $chunkSize);
[750] Fix | Delete
if ($useMySQLi) {
[751] Fix | Delete
$chunkKey = $chunkedValueKey . $chunks;
[752] Fix | Delete
$stmt = $dbh->prepare("INSERT IGNORE INTO " . self::table() . " (name, val, autoload) VALUES (?, ?, 'no')");
[753] Fix | Delete
if ($stmt === false) {
[754] Fix | Delete
wordfence::status(2, 'error', sprintf(
[755] Fix | Delete
/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
[756] Fix | Delete
__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
[757] Fix | Delete
return false;
[758] Fix | Delete
}
[759] Fix | Delete
$null = NULL;
[760] Fix | Delete
$stmt->bind_param("sb", $chunkKey, $null);
[761] Fix | Delete
[762] Fix | Delete
if (!$stmt->send_long_data(1, $dataChunk)) {
[763] Fix | Delete
wordfence::status(2, 'error', sprintf(
[764] Fix | Delete
/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
[765] Fix | Delete
__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
[766] Fix | Delete
return false;
[767] Fix | Delete
}
[768] Fix | Delete
[769] Fix | Delete
if (!$stmt->execute()) {
[770] Fix | Delete
wordfence::status(2, 'error', sprintf(
[771] Fix | Delete
/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
[772] Fix | Delete
__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
[773] Fix | Delete
return false;
[774] Fix | Delete
}
[775] Fix | Delete
}
[776] Fix | Delete
else {
[777] Fix | Delete
if (!self::getDB()->queryWrite(sprintf("insert ignore into " . self::table() . " (name, val, autoload) values (%%s, X'%s', 'no')", $dataChunk), $chunkedValueKey . $chunks)) {
[778] Fix | Delete
if ($useMySQLi) {
[779] Fix | Delete
$errno = mysqli_errno($wpdb->dbh);
[780] Fix | Delete
wordfence::status(2, 'error', sprintf(
[781] Fix | Delete
/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
[782] Fix | Delete
__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $errno, $wpdb->last_error));
[783] Fix | Delete
}
[784] Fix | Delete
else if (function_exists('mysql_errno')) {
[785] Fix | Delete
// phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved
[786] Fix | Delete
$errno = mysql_errno($wpdb->dbh);
[787] Fix | Delete
wordfence::status(2, 'error', sprintf(
[788] Fix | Delete
/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
[789] Fix | Delete
__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $errno, $wpdb->last_error));
[790] Fix | Delete
}
[791] Fix | Delete
[792] Fix | Delete
return false;
[793] Fix | Delete
}
[794] Fix | Delete
}
[795] Fix | Delete
$chunks++;
[796] Fix | Delete
}
[797] Fix | Delete
[798] Fix | Delete
if (!self::getDB()->queryWrite(sprintf("insert ignore into " . self::table() . " (name, val, autoload) values (%%s, X'%s', 'no')", bin2hex(serialize(array('count' => $chunks)))), $chunkedValueKey . 'header')) {
[799] Fix | Delete
wordfence::status(2, 'error', sprintf(
[800] Fix | Delete
/* translators: Key in key-value store. */
[801] Fix | Delete
__("Error writing value header for %s", 'wordfence'), $key));
[802] Fix | Delete
return false;
[803] Fix | Delete
}
[804] Fix | Delete
}
[805] Fix | Delete
else {
[806] Fix | Delete
$exists = self::getDB()->querySingle("select name from " . self::table() . " where name='%s'", $key);
[807] Fix | Delete
[808] Fix | Delete
if ($useMySQLi) {
[809] Fix | Delete
if ($exists) {
[810] Fix | Delete
$stmt = $dbh->prepare("UPDATE " . self::table() . " SET val=?, autoload=? WHERE name=?");
[811] Fix | Delete
if ($stmt === false) {
[812] Fix | Delete
wordfence::status(2, 'error', sprintf(
[813] Fix | Delete
/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
[814] Fix | Delete
__('Error writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
[815] Fix | Delete
return false;
[816] Fix | Delete
}
[817] Fix | Delete
$null = NULL;
[818] Fix | Delete
$stmt->bind_param("bss", $null, $autoload, $key);
[819] Fix | Delete
}
[820] Fix | Delete
else {
[821] Fix | Delete
$stmt = $dbh->prepare("INSERT IGNORE INTO " . self::table() . " (val, name, autoload) VALUES (?, ?, ?)");
[822] Fix | Delete
if ($stmt === false) {
[823] Fix | Delete
wordfence::status(2, 'error', sprintf(
[824] Fix | Delete
/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
[825] Fix | Delete
__('Error writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
[826] Fix | Delete
return false;
[827] Fix | Delete
}
[828] Fix | Delete
$null = NULL;
[829] Fix | Delete
$stmt->bind_param("bss", $null, $key, $autoload);
[830] Fix | Delete
}
[831] Fix | Delete
[832] Fix | Delete
if (!$stmt->send_long_data(0, $data)) {
[833] Fix | Delete
wordfence::status(2, 'error', sprintf(
[834] Fix | Delete
/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
[835] Fix | Delete
__('Error writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
[836] Fix | Delete
return false;
[837] Fix | Delete
}
[838] Fix | Delete
[839] Fix | Delete
if (!$stmt->execute()) {
[840] Fix | Delete
wordfence::status(2, 'error', sprintf(
[841] Fix | Delete
/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
[842] Fix | Delete
__('Error finishing writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
[843] Fix | Delete
return false;
[844] Fix | Delete
}
[845] Fix | Delete
}
[846] Fix | Delete
else {
[847] Fix | Delete
if ($exists) {
[848] Fix | Delete
self::getDB()->queryWrite(sprintf("update " . self::table() . " set val=X'%s', autoload=%%s where name=%%s", $data), $autoload, $key);
[849] Fix | Delete
}
[850] Fix | Delete
else {
[851] Fix | Delete
self::getDB()->queryWrite(sprintf("insert ignore into " . self::table() . " (name, val, autoload) values (%%s, X'%s', %%s)", $data), $key, $autoload);
[852] Fix | Delete
}
[853] Fix | Delete
}
[854] Fix | Delete
}
[855] Fix | Delete
self::getDB()->flush();
[856] Fix | Delete
[857] Fix | Delete
if ($autoload != self::DONT_AUTOLOAD) {
[858] Fix | Delete
self::updateCachedOption($key, $val);
[859] Fix | Delete
}
[860] Fix | Delete
return true;
[861] Fix | Delete
}
[862] Fix | Delete
[863] Fix | Delete
private static function delete_ser_chunked($key) {
[864] Fix | Delete
if (!self::$tableExists) {
[865] Fix | Delete
return;
[866] Fix | Delete
}
[867] Fix | Delete
[868] Fix | Delete
self::removeCachedOption($key);
[869] Fix | Delete
[870] Fix | Delete
$chunkedValueKey = self::ser_chunked_key($key);
[871] Fix | Delete
$header = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $chunkedValueKey . 'header');
[872] Fix | Delete
if (!$header) {
[873] Fix | Delete
return;
[874] Fix | Delete
}
[875] Fix | Delete
[876] Fix | Delete
$header = unserialize($header);
[877] Fix | Delete
$count = $header['count'];
[878] Fix | Delete
for ($i = 0; $i < $count; $i++) {
[879] Fix | Delete
self::getDB()->queryWrite("delete from " . self::table() . " where name='%s'", $chunkedValueKey . $i);
[880] Fix | Delete
}
[881] Fix | Delete
self::getDB()->queryWrite("delete from " . self::table() . " where name='%s'", $chunkedValueKey . 'header');
[882] Fix | Delete
}
[883] Fix | Delete
public static function f($key){
[884] Fix | Delete
echo esc_attr(self::get($key));
[885] Fix | Delete
}
[886] Fix | Delete
public static function p() {
[887] Fix | Delete
return self::get('isPaid');
[888] Fix | Delete
}
[889] Fix | Delete
public static function cbp($key){
[890] Fix | Delete
if(self::get('isPaid') && self::get($key)){
[891] Fix | Delete
echo ' checked ';
[892] Fix | Delete
}
[893] Fix | Delete
}
[894] Fix | Delete
public static function cb($key){
[895] Fix | Delete
if(self::get($key)){
[896] Fix | Delete
echo ' checked ';
[897] Fix | Delete
}
[898] Fix | Delete
}
[899] Fix | Delete
public static function sel($key, $val, $isDefault = false){
[900] Fix | Delete
if((! self::get($key)) && $isDefault){ echo ' selected '; }
[901] Fix | Delete
if(self::get($key) == $val){ echo ' selected '; }
[902] Fix | Delete
}
[903] Fix | Delete
private static function getDB(){
[904] Fix | Delete
if(! self::$DB){
[905] Fix | Delete
self::$DB = new wfDB();
[906] Fix | Delete
}
[907] Fix | Delete
return self::$DB;
[908] Fix | Delete
}
[909] Fix | Delete
private static function table(){
[910] Fix | Delete
return wfDB::networkTable('wfConfig');
[911] Fix | Delete
}
[912] Fix | Delete
public static function haveAlertEmails(){
[913] Fix | Delete
$emails = self::getAlertEmails();
[914] Fix | Delete
return sizeof($emails) > 0 ? true : false;
[915] Fix | Delete
}
[916] Fix | Delete
public static function alertEmailBlacklist() {
[917] Fix | Delete
return array('3c4aa9bd643bd9bb9873014227151a85b24ab8d72fe02cc5799b0edc56eabb67', 'aa06081e3962a3c17a85a06ddf9e418ca1ba8fead3f9b7a20beaf51848a1fd75', 'a25a360bded101e25ebabe5643161ddbb6c3fa33838bbe9a123c2ec0cda8d370', '36e8407dfa80d64cfe42ede4d9d5ce2d4840a5e4781b5f8a7b3b8eacec86fcad', '50cf95aec25369583efdfeff9f0818b4b9266f10e140ea2b648e30202450c21b', '72a09e746cb90ff2646ba1f1d0c0f5ffed6b380642bbbf826d273fffa6ef673b');
[918] Fix | Delete
}
[919] Fix | Delete
public static function getAlertEmails() {
[920] Fix | Delete
$blacklist = self::alertEmailBlacklist();
[921] Fix | Delete
$dat = explode(',', self::get('alertEmails'));
[922] Fix | Delete
$emails = array();
[923] Fix | Delete
foreach ($dat as $email) {
[924] Fix | Delete
$email = strtolower(trim($email));
[925] Fix | Delete
if (preg_match('/\@/', $email)) {
[926] Fix | Delete
$hash = hash('sha256', $email);
[927] Fix | Delete
if (!in_array($hash, $blacklist)) {
[928] Fix | Delete
$emails[] = $email;
[929] Fix | Delete
}
[930] Fix | Delete
}
[931] Fix | Delete
}
[932] Fix | Delete
return $emails;
[933] Fix | Delete
}
[934] Fix | Delete
public static function getAlertLevel(){
[935] Fix | Delete
if (self::get('alertOn_scanIssues')) {
[936] Fix | Delete
return self::get('alertOn_severityLevel', 0);
[937] Fix | Delete
}
[938] Fix | Delete
return 0;
[939] Fix | Delete
}
[940] Fix | Delete
public static function liveTrafficEnabled(&$overriden = null){
[941] Fix | Delete
$enabled = self::get('liveTrafficEnabled');
[942] Fix | Delete
if (WORDFENCE_DISABLE_LIVE_TRAFFIC || WF_IS_WP_ENGINE) {
[943] Fix | Delete
$enabled = false;
[944] Fix | Delete
if ($overriden !== null) {
[945] Fix | Delete
$overriden = true;
[946] Fix | Delete
}
[947] Fix | Delete
}
[948] Fix | Delete
return $enabled;
[949] Fix | Delete
}
[950] Fix | Delete
public static function enableAutoUpdate(){
[951] Fix | Delete
wfConfig::set('autoUpdate', '1');
[952] Fix | Delete
wp_clear_scheduled_hook('wordfence_daily_autoUpdate');
[953] Fix | Delete
if (is_main_site()) {
[954] Fix | Delete
wp_schedule_event(time(), 'daily', 'wordfence_daily_autoUpdate');
[955] Fix | Delete
}
[956] Fix | Delete
}
[957] Fix | Delete
public static function disableAutoUpdate(){
[958] Fix | Delete
wfConfig::set('autoUpdate', '0');
[959] Fix | Delete
wp_clear_scheduled_hook('wordfence_daily_autoUpdate');
[960] Fix | Delete
}
[961] Fix | Delete
public static function createLock($name, $timeout = null) { //Our own version of WP_Upgrader::create_lock that uses our table instead
[962] Fix | Delete
global $wpdb;
[963] Fix | Delete
[964] Fix | Delete
if (!$timeout) {
[965] Fix | Delete
$timeout = 3600;
[966] Fix | Delete
}
[967] Fix | Delete
[968] Fix | Delete
$table = self::table();
[969] Fix | Delete
[970] Fix | Delete
$lock_option = $name . '.lock';
[971] Fix | Delete
$lock_result = $wpdb->query($wpdb->prepare("INSERT IGNORE INTO `$table` (`name`, `val`, `autoload`) VALUES (%s, %s, 'no')", $lock_option, time()));
[972] Fix | Delete
[973] Fix | Delete
if (!$lock_result) {
[974] Fix | Delete
$lock_result = self::get($lock_option, false, false);
[975] Fix | Delete
if (!$lock_result) {
[976] Fix | Delete
return false;
[977] Fix | Delete
}
[978] Fix | Delete
[979] Fix | Delete
if ($lock_result > (time() - $timeout)) {
[980] Fix | Delete
return false;
[981] Fix | Delete
}
[982] Fix | Delete
[983] Fix | Delete
self::releaseLock($name);
[984] Fix | Delete
return self::createLock($name, $timeout);
[985] Fix | Delete
}
[986] Fix | Delete
[987] Fix | Delete
return true;
[988] Fix | Delete
}
[989] Fix | Delete
public static function releaseLock($name) {
[990] Fix | Delete
self::remove($name . '.lock');
[991] Fix | Delete
}
[992] Fix | Delete
public static function autoUpdate(){
[993] Fix | Delete
require(dirname(__FILE__) . '/wfVersionSupport.php');
[994] Fix | Delete
/**
[995] Fix | Delete
* @var string $wfPHPDeprecatingVersion
[996] Fix | Delete
* @var string $wfPHPMinimumVersion
[997] Fix | Delete
*/
[998] Fix | Delete
if (version_compare(PHP_VERSION, $wfPHPMinimumVersion, '<')) {
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function