: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
if (!window['wordfenceAdmin']) { //To compile for checking: java -jar /usr/local/bin/closure.jar --js=admin.js --js_output_file=test.js
window['wordfenceAdmin'] = {
loading16: '<div class="wfLoading16"></div>',
visibleIssuesPanel: 'new',
preFirstScanMsgsLoaded: false,
newestActivityTime: 0, //must be 0 to force loading of all initially
liveTrafficUpdatePending: false,
activityLogUpdatePending: false,
maxActivityLogItems: 1000,
blockedCountriesPending: [],
serverTimestampOffset: 0,
loadingBlockedIPs: false,
siteCleaningIssueTypes: ['file', 'checkGSB', 'checkSpamIP', 'commentBadURL', 'knownfile', 'optionBadURL', 'postBadTitle', 'postBadURL', 'spamvertizeCheck', 'suspiciousAdminUsers'],
this.isSmallScreen = window.matchMedia("only screen and (max-width: 500px)").matches;
this.nonce = WordfenceAdminVars.firstNonce;
this.debugOn = WordfenceAdminVars.debugOn == '1' ? true : false;
this.scanRunning = WordfenceAdminVars.scanRunning == '1' ? true : false;
this.basePageName = document.title;
$(window).on('blur', function() {
self._windowHasFocus = false;
}).on('focus', function() {
self._windowHasFocus = true;
$('.do-show').click(function() {
$($this.data('selector')).show();
$('.downloadLogFile').each(function() {
$(this).attr('href', WordfenceAdminVars.ajaxURL + '?action=wordfence_downloadLogFile&nonce=' + WFAD.nonce + '&logfile=' + encodeURIComponent($(this).data('logfile')));
$('#doSendEmail').click(function() {
var ticket = $('#_ticketnumber').val();
if (ticket === null || typeof ticket === "undefined" || ticket.length == 0) {
self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Error"), __("Please include your support ticket number or forum username."));
WFAD.ajax('wordfence_sendDiagnostic', {email: $('#_email').val(), ticket: ticket}, function(res) {
self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Email Diagnostic Report"), __("Diagnostic report has been sent successfully."));
self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Error"), __("There was an error while sending the email."));
$('#exportDiagnostics').click(function() {
var diagnosticsExportWindow = window.open(WordfenceAdminVars.ajaxURL + '?action=wordfence_exportDiagnostics&nonce=' + WFAD.nonce);
diagnosticsExportWindow.onbeforeunload = function() {
$('#sendByEmail').click(function() {
$('#sendByEmailForm').removeClass('hidden');
$('#expandAllDiagnostics').click(function() {
$('#wf-diagnostics').find('.wf-block').each(function() {
if (!el.hasClass('wf-active')) {
el.find('.wf-block-header').trigger('click');
$(window).bind("scroll", function() {
$(this).scrollTop() > 200 ? $(".wf-scrollTop").fadeIn() : $(".wf-scrollTop").fadeOut()
$(".wf-scrollTop").click(function(e) {
return e.stopPropagation(), $("body,html").animate({
var tabs = jQuery('.wf-page-tabs').find('.wf-tab a');
jQuery('.wf-page-tabs').find('.wf-tab').removeClass('wf-active').find('a').attr('aria-selected', 'false');
jQuery('.wf-tab-content').removeClass('wf-active');
var tab = jQuery(this).closest('.wf-tab');
tab.addClass('wf-active');
tab.find('a').attr('aria-selected', 'true');
var content = jQuery('#' + tab.data('target'));
content.addClass('wf-active');
document.title = tab.data('pageTitle') + " \u2039 " + self.basePageName;
$(window).trigger('wfTabChange', [tab.data('target')]);
if (window.location.hash) {
var hashes = WFAD.parseHashes();
var hash = hashes[hashes.length - 1];
for (var i = 0; i < tabs.length; i++) {
if (hash == jQuery(tabs[i]).closest('.wf-tab').data('target')) {
jQuery(tabs[i]).trigger('click');
jQuery(tabs[0]).trigger('click');
jQuery(window).on('hashchange', function () {
var hashes = WFAD.parseHashes();
var hash = hashes[hashes.length - 1];
for (var i = 0; i < tabs.length; i++) {
if (hash == jQuery(tabs[i]).closest('.wf-tab').data('target')) {
jQuery(tabs[i]).trigger('click');
jQuery(document).bind('cbox_closed', function() {
self.colorboxIsOpen = false;
self.colorboxServiceQueue();
if ($('.wf-options-controls-spacer').length) { //The WP code doesn't move update nags and we need to
$('.update-nag, #update-nag').insertAfter($('.wf-options-controls-spacer'));
$('.wf-block-header-action-disclosure').each(function() {
$(this).on('keydown', function(e) {
$(this).closest('.wf-block-header').trigger('click');
$(this).closest('.wf-block-header').css('cursor', 'pointer');
$(this).closest('.wf-block-header').on('click', function(e) {
// Let links in the header work.
if (e.target && e.target.nodeName === 'A' && e.target.href) {
if ($(this).closest('.wf-block').hasClass('wf-disabled')) {
var isActive = $(this).closest('.wf-block').hasClass('wf-active');
//$(this).closest('.wf-block').removeClass('wf-active');
$(this).closest('.wf-block').find('.wf-block-content').slideUp({
$(this).closest('.wf-block').removeClass('wf-active');
$(this).attr('aria-checked', 'false');
//$(this).closest('.wf-block').addClass('wf-active');
$(this).closest('.wf-block').find('.wf-block-content').slideDown({
$(this).closest('.wf-block').addClass('wf-active');
$(this).attr('aria-checked', 'true');
WFAD.ajax('wordfence_saveDisclosureState', {name: $(this).closest('.wf-block').data('persistenceKey'), state: !isActive}, function() {}, function() {}, true);
$('.wf-option.wf-option-toggled .wf-option-checkbox').each(function() {
$(this).on('keydown', function(e) {
$(this).trigger('click');
$(this).on('click', function(e) {
var optionElement = $(this).closest('.wf-option');
if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
var option = optionElement.data('option');
var isActive = $(this).hasClass('wf-checked');
$(this).removeClass('wf-checked').attr('aria-checked', 'false');
value = optionElement.data('disabledValue');
$(this).addClass('wf-checked').attr('aria-checked', 'true');
value = optionElement.data('enabledValue');
var originalValue = optionElement.data('originalValue');
if (originalValue == value) {
delete WFAD.pendingChanges[option];
WFAD.pendingChanges[option] = value;
$(optionElement).trigger('change', [false]);
WFAD.updatePendingChanges();
$(this).parent().find('.wf-option-title').on('click', function(e) {
var links = $(this).find('a');
for (var i = 0; i < links.length; i++) {
var t = $(links[i]).offset().top;
var l = $(links[i]).offset().left;
var b = t + $(links[i]).height();
var r = l + $(links[i]).width();
if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
$(this).parent().find('.wf-option-checkbox').trigger('click');
}).css('cursor', 'pointer');
//On/Off Boolean Switch Option
$('.wf-option.wf-option-toggled-boolean-switch .wf-boolean-switch').each(function() {
$(this).on('keydown', function(e) {
$(this).trigger('click');
$(this).on('click', function(e) {
$(this).find('.wf-boolean-switch-handle').trigger('click');
$(this).find('.wf-boolean-switch-handle').on('click', function(e) {
var optionElement = $(this).closest('.wf-option');
if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
var switchElement = $(this).closest('.wf-boolean-switch');
var option = optionElement.data('option');
var isActive = switchElement.hasClass('wf-active');
switchElement.removeClass('wf-active').attr('aria-checked', 'false');
value = optionElement.data('disabledValue');
switchElement.addClass('wf-active').attr('aria-checked', 'true');
value = optionElement.data('enabledValue');
var originalValue = optionElement.data('originalValue');
if (originalValue == value) {
delete WFAD.pendingChanges[option];
WFAD.pendingChanges[option] = value;
$(optionElement).trigger('change', [false]);
WFAD.updatePendingChanges();
$(this).parent().find('.wf-option-title').on('click', function(e) {
var links = $(this).find('a');
for (var i = 0; i < links.length; i++) {
var t = $(links[i]).offset().top;
var l = $(links[i]).offset().left;
var b = t + $(links[i]).height();
var r = l + $(links[i]).width();
if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
$(this).parent().find('.wf-boolean-switch-handle').trigger('click');
}).css('cursor', 'pointer');
//On/Off Segmented Option
$('.wf-option.wf-option-toggled-segmented [type=radio]').each(function() {
$(this).on('click', function(e) {
var optionElement = $(this).closest('.wf-option');
if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
var option = optionElement.data('option');
var originalValue = optionElement.data('originalValue');
if (originalValue == value) {
delete WFAD.pendingChanges[option];
WFAD.pendingChanges[option] = value;
$(optionElement).trigger('change', [false]);
WFAD.updatePendingChanges();
$('.wf-option.wf-option-toggled-multiple .wf-option-checkbox').each(function() {
$(this).on('keydown', function(e) {
$(this).trigger('click');
$(this).on('click', function(e) {
var optionElement = $(this).closest('.wf-option');
if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
var checkboxElement = $(this).closest('ul');
var option = checkboxElement.data('option');
var isActive = $(this).hasClass('wf-checked');
$(this).removeClass('wf-checked').attr('aria-checked', 'false');
value = checkboxElement.data('disabledValue');
$(this).addClass('wf-checked').attr('aria-checked', 'true');
value = checkboxElement.data('enabledValue');
var originalValue = checkboxElement.data('originalValue');
if (originalValue == value) {
delete WFAD.pendingChanges[option];
WFAD.pendingChanges[option] = value;
$(optionElement).trigger('change', [false]);
WFAD.updatePendingChanges();
//On/Off Option with menu and Option with menu
$('.wf-option.wf-option-toggled-select .wf-option-checkbox').each(function() {
$(this).on('keydown', function(e) {
$(this).trigger('click');
$(this).on('click', function(e) {
var optionElement = $(this).closest('.wf-option');
if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
var selectElement = optionElement.find('.wf-option-select select');
var option = optionElement.data('toggleOption');
var isActive = $(this).hasClass('wf-checked');
$(this).removeClass('wf-checked').attr('aria-checked', 'false');
selectElement.attr('disabled', true);
value = optionElement.data('disabledToggleValue');
$(this).addClass('wf-checked').attr('aria-checked', 'true');
selectElement.attr('disabled', false);
value = optionElement.data('enabledToggleValue');
if (option === undefined) {
var originalValue = optionElement.data('originalToggleValue');
if (originalValue == value) {
delete WFAD.pendingChanges[option];
WFAD.pendingChanges[option] = value;
$(optionElement).trigger('change', [false]);
WFAD.updatePendingChanges();
$(this).parent().find('.wf-option-title').on('click', function(e) {
var links = $(this).find('a');
for (var i = 0; i < links.length; i++) {
var t = $(links[i]).offset().top;
var l = $(links[i]).offset().left;
var b = t + $(links[i]).height();
var r = l + $(links[i]).width();
if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
$(this).closest('.wf-option').find('.wf-option-checkbox').trigger('click');
}).css('cursor', 'pointer');