Current Path : /home/church/www/wp-content/plugins/ninja-forms/lib/StepProcessing/ |
Current File : /home/church/www/wp-content/plugins/ninja-forms/lib/StepProcessing/step-processing.php |
<?php if ( ! defined( 'ABSPATH' ) ) exit; /** * Class for performing actions incrementally. Internally used for converting submissions, exporting submissions, etc. * Very useful when interacting with large amounts of data. * * @package Ninja Forms * @subpackage Classes/Step Processing * @copyright Copyright (c) 2014, WPNINJAS * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License * @since 2.7.4 */ class NF_Step_Processing { /** * @var action */ var $action = ''; /** * @var step */ var $step = ''; /** * @var total_steps */ var $total_steps = ''; /** * @var redirect */ var $redirect = ''; /** * @var array */ var $errors = array(); /** * @var args */ var $args = array(); /** * Get things rolling * * @since 2.7.4 * @return void */ function __construct() { //Bail if we aren't in the admin. if ( ! is_admin() ) return false; if ( ! WPN_Helper::is_func_disabled( 'ignore_user_abort' ) ) { ignore_user_abort( true ); } // if ( ! nf_is_func_disabled( 'set_time_limit' ) && ! ini_get( 'safe_mode' ) ) { // //set_time_limit( 0 ); // } // Ajax call handled in 'processing' in this file add_action( 'wp_ajax_nf_' . $this->action, array( $this, 'processing' ) ); } /** * Process our request. * Call the appropriate loading or step functions. * * @since 2.7.6 * @return void */ public function processing() { // Get our passed arguments. These come from the querysting of the processing page. if ( isset ( $_REQUEST['args'] ) ) { $this->args = WPN_Helper::sanitize_text_field($_REQUEST['args']); if ( isset ( $this->args['redirect'] ) ) { if( wp_validate_redirect( $this->args['redirect'] ) ){ $this->redirect = wp_sanitize_redirect( $this->args['redirect'] ); } } } else { $this->args = array(); } // Get our current step. $this->step = isset ( $_REQUEST['step'] )? esc_html( $_REQUEST['step'] ) : 'loading'; // Get our total steps $this->total_steps = isset ( $_REQUEST['total_steps'] )? esc_html( $_REQUEST['total_steps'] ) : 0; // If our step is loading, then we need to return how many total steps there are along with the next step, which is 1. if ( 'loading' == $this->step ) { $return = $this->loading(); if ( ! isset ( $return['step'] ) ) { $saved_step = get_user_option( 'nf_step_processing_' . $this->action . '_step' ); if ( ! empty ( $saved_step ) ) { $this->step = $saved_step; } else { $this->step = 1; } $return['step'] = $this->step; } if ( ! isset ( $return['complete'] ) ) { $return['complete'] = false; } } else { // We aren't on the loading step, so do our processing. $return = $this->step(); if ( ! isset ( $return['step'] ) ) { $this->step++; $return['step'] = $this->step; } if ( ! isset ( $return['complete'] ) ) { if ( $this->step > $this->total_steps ) { $complete = true; } else { $complete = false; } $return['complete'] = $complete; } $return['total_steps'] = $this->total_steps; } $user_id = get_current_user_id(); if ( $return['complete'] ) { // Delete our step option delete_user_option( $user_id, 'nf_step_processing_' . $this->action . '_step' ); // Set our redirect variable. $return['redirect'] = $this->redirect; // Run our complete function $this->complete(); } else { // Save our current step so that we can resume if necessary update_user_option( $user_id, 'nf_step_processing_' . $this->action . '_step', $this->step ); } if ( isset ( $this->redirect ) && ! empty ( $this->redirect ) ) { $this->args['redirect'] = $this->redirect; } $return['errors'] = ( $this->errors ) ? $this->errors : FALSE; $return['args'] = $this->args; echo json_encode( $return ); die(); } /** * Run our loading process. * This function should be overwritten in child classes. * * @since 2.7.4 * @return array $args */ public function loading() { // This space left intentionally blank. } /** * This function is called for every step. * This function should be overwritten in child classes. * * @since 2.7.4 * @return array $args */ public function step() { // This space left intentionally blank. } /** * This function is called for every step. * This function should be overwritten in child classes. * * @since 2.7.4 * @return array $args */ public function complete() { // This space left intentionally blank. } }