: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* Batch Processor JS Object
function NinjaBatchProcessor( settings ) {
* If we haven't been passed any content, make sure we pass an empty content var.
if ( 'undefined' == typeof settings.content ) {
// Set our modalData content var.
modalData.content = settings.content;
* If we've been passed a loadingText var, pass that along.
if ( 'undefined' != typeof settings.loadingText ) {
modalData.loadingText = settings.loadingText;
* If we haven't defined button text for our primary button, we don't want to pass button settings.
* Check to see if we've defined primary button text, and if we have, add button settings to the modalData.
if ( 'undefined' != typeof settings.btnPrimaryText ) {
text: settings.btnPrimaryText,
callback: function( e ) {
modalInstance.maybeShowActions( false );
// Show the progress bar.
modalInstance.maybeShowProgress( true );
// Begin our cleanup process.
that.postToProcessor( that, -1, modalInstance );
modalData.btnSecondary = {
text: settings.btnSecondaryText,
callback: function( e ) {
modalInstance.toggleModal( false );
} else { // If we don't have any buttons defined, then we want to run the batch process on modal open.
modalData.onOpenCallback = function() {
this.maybeShowActions( false );
// Show the progress bar.
this.maybeShowProgress( true );
// Begin our cleanup process.
that.postToProcessor( that, -1, this );
this.postToProcessor = function( context, steps, modal, data ) {
if ( 'undefined' == typeof data ) {
action: 'nf_batch_process',
batch_type: settings.batch_type,
security: nfAdmin.batchNonce,
extraData: settings.extraData
jQuery.post( ajaxurl, data, function( response ) {
response = JSON.parse( response );
if ( response.batch_complete ) {
// Push our progress bar to 100%.
modal.setProgress( 100 );
modal.toggleModal( false );
if ( 'undefined' != typeof settings.onCompleteCallback ) {
settings.onCompleteCallback( response );
// If we do not yet have a determined number of steps...
// If step_toal is defined...
if ( 'undefined' != typeof response.step_total ) {
steps = response.step_total;
} // Otherwise... (step_total is not defined)
steps = response.step_remaining;
// If our PHP edited our extraData variable, update our JS var and pass it along.
if ( 'undefined' != typeof response.extraData ) {
// Update our extraData property.
data.extraData = response.extraData;
// Calculate our current step.
var step = steps - response.step_remaining;
// Calculate our maximum progress for this step.
var maxProgress = Math.round( step / steps * 100 );
// Increment the progress.
modal.incrementProgress ( maxProgress );
// Recall our function...
context.postToProcessor( context, steps, modal, data );
var modalInstance = new NinjaModal( modalData );