Current Path : /home/church/www/wp-content/plugins/ninja-forms/includes/Abstracts/ |
Current File : /home/church/www/wp-content/plugins/ninja-forms/includes/Abstracts/RequiredUpdate.php |
<?php if ( ! defined( 'ABSPATH' ) ) exit; /** * Class NF_Abstracts_RequiredUpdate */ abstract class NF_Abstracts_RequiredUpdate { protected $_slug = ''; protected $_requires = array(); protected $_class_name = ''; protected $db; public $response = array(); public $debug = false; public $lock_process = false; /** * Constructor * * @since 3.4.0 */ public function __construct( $data = array() ) { // Save a reference to wpdb. global $wpdb; $this->db = $wpdb; //Bail if we aren't in the admin. if ( ! is_admin() ) return false; // If we weren't provided with a slug or a class name... if ( ! isset( $data[ 'slug' ] ) || ! isset( $data[ 'class_name' ] ) ) { // Bail. return false; } $this->_slug = $data[ 'slug' ]; $this->_class_name = $data[ 'class_name' ]; // Record debug settings if provided. if ( isset( $data[ 'debug' ] ) ) $this->debug = $data[ 'debug' ]; } /** * Function to loop over the batch. * * @since 3.4.0 */ public function process() { /** * This function intentionlly left empty. */ } /** * Function to run any setup steps necessary to begin processing. * * @since 3.4.0 */ public function startup() { /** * This function intentionally left empty. */ } /** * Function to cleanup any lingering temporary elements of required updates after completion. * * @since 3.4.0 */ public function cleanup() { // Delete our required updates data. delete_option( 'ninja_forms_doing_required_updates' ); // Flag that updates are done. update_option( 'ninja_forms_needs_updates', 0 ); // Set our new db version. update_option( 'ninja_forms_db_version', Ninja_Forms::DB_VERSION ); // Fetch our list of completed updates. $updates = get_option( 'ninja_forms_required_updates', array() ); // If we got something back... if ( ! empty( $updates ) ) { // Send out a call to telemetry. Ninja_Forms()->dispatcher()->send( 'required_updates_complete', $updates ); } // Output that we're done. $this->response[ 'updatesRemaining' ] = 0; $this->respond(); } /** * Function to dump our JSON response and kill processing. * * @since 3.4.0 */ public function respond() { // Dump the response. echo( json_encode( $this->response ) ); // Terminate processing. die(); } /** * Function to run our table migrations. * * @param $callback (String) The callback function in the migration file. * * @since 3.4.0 */ protected function migrate( $callback ) { $migrations = new NF_Database_Migrations(); $migrations->do_upgrade( $callback ); } /** * Function to prepare our query values for insert. * * @param $value (Mixed) The value to be escaped for SQL. * @return (String) The escaped (and possibly serialized) value of the string. * * @since 3.4.0 */ public function prepare( $value ) { // If our value is a number... if ( is_float( $value ) ) { // Exit early and return the value. return $value; } // Serialize the value if necessary. $escaped = maybe_serialize( $value ); // Escape it. $escaped = $this->db->_real_escape( $escaped ); return $escaped; } /** * Function used to call queries that are gated by debug. * * @param $sql (String) The query to be run. * @return (Object) The response to the wpdb query call. * * @since 3.4.0 */ protected function query( $sql ) { // If we're not debugging... if ( ! $this->debug ) { // Run the query. return $this->db->query( $sql ); } // Otherwise... // Append the query to the response object. $this->response[ 'queries' ][] = $sql; // Return false. return false; } /** * Function to record the completion of our update in the DB. * * @since 3.4.0 */ protected function confirm_complete() { // If we're not debugging... if ( ! $this->debug ) { // Fetch our required updates array. $updates = get_option( 'ninja_forms_required_updates', array() ); // Get a timestamp. date_default_timezone_set( 'UTC' ); $now = date( "Y-m-d H:i:s" ); // Append the current update to the array. $updates[ $this->_slug ] = $now; // Save it. update_option( 'ninja_forms_required_updates', $updates ); } } /** * Enable Maintenance mode * Enables maintenance mode so the form will not render on the front end while updates are running. * * @since 3.4.0 * * @param $prefix - the db prefix. * @param $form_id - The id of the form. */ public function enable_maintenance_mode( $prefix, $form_id ) { // Change maintenance column value to 1, run the query and then return. $sql = $this->db->prepare( 'UPDATE `' . $prefix . 'nf3_upgrades` SET `maintenance` = 1 WHERE `id` = %d', $form_id ); $this->db->query( $sql ); return; } /** * Disable Maintenance Mode * Disables maintenance mode, so the form will be displayed on the front end.. * * @since 3.4.0 * * @param $prefix - the db prefix. * @param $form_id - The id of the form. */ public function disable_maintenance_mode( $prefix, $form_id ) { // Change maintenance column value to 0, run the query and then return. $sql = $this->db->prepare( 'UPDATE `' . $prefix . 'nf3_upgrades` SET `maintenance` = 0 WHERE `id` = %d', $form_id ); $this->db->query( $sql ); return; } }