Current Path : /home/church/www/ntktesting.com/wp-content/plugins/ninja-forms/includes/Abstracts/ |
Current File : /home/church/www/ntktesting.com/wp-content/plugins/ninja-forms/includes/Abstracts/BatchProcess.php |
<?php if ( ! defined( 'ABSPATH' ) ) exit; /** * Class NF_Abstracts_Batch_Process */ abstract class NF_Abstracts_BatchProcess { protected $_db; protected $_flag; /** * Array that holds data we're sending back to the JS front-end. * @var array */ protected $response = array( 'batch_complete' => false ); /** * Constructor */ public function __construct( $data = array() ) { //Bail if we aren't in the admin. if ( ! is_admin() || ! is_user_logged_in() || ! current_user_can( apply_filters('ninja_forms_admin_all_forms_capabilities', 'manage_options') ) ) { return false; } global $wpdb; /** * Set $_db to $wpdb. * This helps us by not requiring us to declare global $wpdb in every class method. */ $this->_db = $wpdb; // Run init. $this->init(); } /** * Decides whether we need to run startup or restart and then calls processing. * * @since 3.4.0 * @return void */ public function init() { $this->_flag = 'nf_doing_' . $this->_slug; if ( ! $this->flag( $this->_flag, 'check' ) ) { // Run the startup process. $this->startup(); } else { // Otherwise... (We've already run startup.) $this->restart(); } // Determine how many steps this will take. $this->response[ 'step_total' ] = $this->get_steps(); $this->flag( $this->_flag, 'add' ); // Run processing $this->process(); } /** * Function to loop over the batch. * * @since 3.4.0 * @return void */ public function process() { /** * This function intentionlly left empty. */ } /** * Function to run any setup steps necessary to begin processing. * * @since 3.4.0 * @return void */ public function startup() { /** * This function intentionally left empty. */ } /** * Function to run any setup steps necessary to begin processing for steps after the first. * * @since 3.4.0 * @return void */ public function restart() { /** * This function intentionally left empty. */ } /** * Returns how many steps we have in this process. * * If this method isn't overwritten by a child, it defaults to 1. * * @since 3.4.0 * @return int */ public function get_steps() { return 1; } /** * Adds an error to the response object. * * @param $slug (String) The slug for this error code. * @param $msg (String) The error message to be displayed. * @param $type (String) warning or fatal, depending on the error. * Defaults to warning. * * @since 3.4.11 */ public function add_error( $slug, $msg, $type = 'warning' ) { // Setup our errors array if it doesn't exist already. if ( ! isset( $this->response[ 'errors' ] ) ) { $this->response[ 'errors' ] = array(); } $this->response[ 'errors' ][] = array( 'code' => $slug, 'message' => $msg, 'type' => $type ); } /** * Function to cleanup any lingering temporary elements of a batch process after completion. * * @since 3.4.0 * @return void */ public function cleanup() { /** * This function intentionally left empty. */ } /** * Method called when we are finished with this process. * * Deletes our "doing" option. * Set's our response 'batch_complete' to true. * Runs cleanup(). * Responds to the JS front-end. * * @since 3.4.0 * @return void */ public function batch_complete() { // Delete our options. $this->flag( $this->_flag, 'remove' ); // Tell our JS that we're done. $this->response[ 'batch_complete' ] = true; $this->cleanup(); $this->respond(); } /** * Method that immediately moves on to the next step. * * Used in child methods to stop processing the current step an dmove to the next. * * @since 3.4.0 * @return void */ public function next_step() { // ..see how many steps we have left, update our option, and send the remaining step to the JS. $this->response[ 'step_remaining' ] = $this->get_steps(); $this->respond(); } /** * Method that encodes $this->response and sends the data to the front-end. * * @since 3.4.0 * @updated 3.4.11 * @return void */ public function respond() { if ( ! empty( $this->response[ 'errors' ] ) ) { $this->response[ 'errors' ] = array_unique( $this->response[ 'errors' ] ); } echo wp_json_encode( $this->response ); wp_die(); } /** * Method to check or modify our processor flag. * * @since 3.5.0 * @param $flag (String) The flag to check * @param $action (String) The type of interaction to be performed * @return Mixed */ public function flag( $flag, $action ) { switch($action) { case 'add': return add_option($flag, true); case 'remove': return delete_option($flag); default: // Default to 'check'. return get_option($flag); } } }