Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/ninja-fo.../includes/AJAX/REST
File: RequiredUpdate.php
<?php if ( ! defined( 'ABSPATH' ) ) exit;
[0] Fix | Delete
[1] Fix | Delete
class NF_AJAX_REST_RequiredUpdate extends NF_AJAX_REST_Controller
[2] Fix | Delete
{
[3] Fix | Delete
private $updates = array();
[4] Fix | Delete
private $running = array();
[5] Fix | Delete
[6] Fix | Delete
protected $action = 'nf_required_update';
[7] Fix | Delete
public function __construct()
[8] Fix | Delete
{
[9] Fix | Delete
parent::__construct();
[10] Fix | Delete
}
[11] Fix | Delete
[12] Fix | Delete
/**
[13] Fix | Delete
* POST
[14] Fix | Delete
* @param array $request_data [ int $clone_id ]
[15] Fix | Delete
* @return array $data [ int $new_form_id ]
[16] Fix | Delete
*/
[17] Fix | Delete
public function post( $request_data )
[18] Fix | Delete
{
[19] Fix | Delete
$data = array();
[20] Fix | Delete
[21] Fix | Delete
// Does the current user have admin privileges
[22] Fix | Delete
if (!current_user_can('manage_options')) {
[23] Fix | Delete
$data['error'] = esc_html__('Access denied. You must have admin privileges to perform this action.', 'ninja-forms');
[24] Fix | Delete
return $data;
[25] Fix | Delete
}
[26] Fix | Delete
[27] Fix | Delete
// If we don't have a nonce...
[28] Fix | Delete
// OR if the nonce is invalid...
[29] Fix | Delete
if ( ! isset( $request_data[ 'security' ] ) || ! wp_verify_nonce( $request_data[ 'security' ], 'ninja_forms_required_update_nonce' ) ) {
[30] Fix | Delete
// Kick the request out now.
[31] Fix | Delete
$data[ 'error' ] = esc_html__( 'Request forbidden.', 'ninja-forms' );
[32] Fix | Delete
return $data;
[33] Fix | Delete
}
[34] Fix | Delete
$doing_updates = get_option( 'ninja_forms_doing_required_updates' );
[35] Fix | Delete
// If we're not already doing updates...
[36] Fix | Delete
if ( ! $doing_updates ) {
[37] Fix | Delete
// Get our list of already run updates.
[38] Fix | Delete
$processed = get_option( 'ninja_forms_required_updates', array() );
[39] Fix | Delete
// Get our list of updates to run.
[40] Fix | Delete
$this->updates = Ninja_Forms()->config( 'RequiredUpdates' );
[41] Fix | Delete
// Sort our updates.
[42] Fix | Delete
$this->running = $this->sort_updates( $this->updates, $processed );
[43] Fix | Delete
} // Otherwise... (We are already processing updates.)
[44] Fix | Delete
else {
[45] Fix | Delete
$this->running = $doing_updates;
[46] Fix | Delete
}
[47] Fix | Delete
// Call the class of our current update.
[48] Fix | Delete
$class = $this->running[ 0 ][ 'class_name' ];
[49] Fix | Delete
$update_class = new $class( $request_data, $this->running );
[50] Fix | Delete
}
[51] Fix | Delete
[52] Fix | Delete
/**
[53] Fix | Delete
* GET
[54] Fix | Delete
* @param $request_data (Array)
[55] Fix | Delete
* @return $data (Array)
[56] Fix | Delete
*
[57] Fix | Delete
* @since 3.4.0
[58] Fix | Delete
*/
[59] Fix | Delete
public function get( $request_data ) {
[60] Fix | Delete
[61] Fix | Delete
$data = array();
[62] Fix | Delete
$data[ 'updates' ] = array();
[63] Fix | Delete
[64] Fix | Delete
// Get our list of already run updates.
[65] Fix | Delete
$processed = get_option( 'ninja_forms_required_updates', array() );
[66] Fix | Delete
// Get our list of updates yet to be run.
[67] Fix | Delete
$this->updates = Ninja_Forms()->config( 'RequiredUpdates' );
[68] Fix | Delete
// Sort our updates.
[69] Fix | Delete
$sorted = $this->sort_updates( $this->updates, $processed );
[70] Fix | Delete
$data[ 'updates' ] = $sorted;
[71] Fix | Delete
return $data;
[72] Fix | Delete
}
[73] Fix | Delete
[74] Fix | Delete
protected function get_request_data()
[75] Fix | Delete
{
[76] Fix | Delete
$request_data = array();
[77] Fix | Delete
[78] Fix | Delete
if (isset($_REQUEST['data']) && $_REQUEST['data']) {
[79] Fix | Delete
$request_data['data'] = WPN_Helper::sanitize_text_field($_REQUEST['data']);
[80] Fix | Delete
}
[81] Fix | Delete
[82] Fix | Delete
if( isset( $_REQUEST[ 'security' ] ) && $_REQUEST[ 'security' ] ){
[83] Fix | Delete
$request_data[ 'security' ] = WPN_Helper::sanitize_text_field($_REQUEST[ 'security' ]);
[84] Fix | Delete
}
[85] Fix | Delete
[86] Fix | Delete
if( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] ){
[87] Fix | Delete
$request_data[ 'action' ] = WPN_Helper::sanitize_text_field($_REQUEST[ 'action' ]);
[88] Fix | Delete
}
[89] Fix | Delete
[90] Fix | Delete
return $request_data;
[91] Fix | Delete
}
[92] Fix | Delete
[93] Fix | Delete
/**
[94] Fix | Delete
* Function to get the list of updates that need to run.
[95] Fix | Delete
*
[96] Fix | Delete
* @param $processed (Array) The list of updates that have already run on this install.
[97] Fix | Delete
* @return Array
[98] Fix | Delete
*/
[99] Fix | Delete
private function get_current_updates( $processed ) {
[100] Fix | Delete
$updates = array();
[101] Fix | Delete
// For each update in the list...
[102] Fix | Delete
foreach ( $this->updates as $slug => $update ) {
[103] Fix | Delete
// If we've not already processed it...
[104] Fix | Delete
if ( ! isset( $processed[ $slug ] ) ) {
[105] Fix | Delete
// Add it to our list.
[106] Fix | Delete
$updates[ $slug ] = $update;
[107] Fix | Delete
}
[108] Fix | Delete
}
[109] Fix | Delete
return $updates;
[110] Fix | Delete
}
[111] Fix | Delete
[112] Fix | Delete
/**
[113] Fix | Delete
* Function to sort the updates to be run.
[114] Fix | Delete
*
[115] Fix | Delete
* @param $current (Array) The list of updates to be run.
[116] Fix | Delete
* @param $previous (Array) The list of updates that have already been run.
[117] Fix | Delete
* @return Array
[118] Fix | Delete
*/
[119] Fix | Delete
private function sort_updates( $current, $previous ) {
[120] Fix | Delete
$sorted = array();
[121] Fix | Delete
$queue = array();
[122] Fix | Delete
// While we have not finished sorting updates...
[123] Fix | Delete
while ( count( $sorted ) < count( $current ) ) {
[124] Fix | Delete
// For each update we wish to run...
[125] Fix | Delete
foreach ( $current as $slug => $update ) {
[126] Fix | Delete
// Migrate the slug to a property.
[127] Fix | Delete
$update[ 'slug' ] = $slug;
[128] Fix | Delete
// If we've not already added this to the sorted list...
[129] Fix | Delete
if ( ! in_array( $update, $sorted ) ) {
[130] Fix | Delete
// If it has requirements...
[131] Fix | Delete
if ( ! empty( $update[ 'requires' ] ) ) {
[132] Fix | Delete
$enqueued = 0;
[133] Fix | Delete
// For each requirement...
[134] Fix | Delete
foreach ( $update[ 'requires' ] as $requirement ) {
[135] Fix | Delete
// If the requirement doesn't exist...
[136] Fix | Delete
if ( ! isset( $this->updates[ $requirement ] ) ) {
[137] Fix | Delete
// unset the update b/c we are missing requirements
[138] Fix | Delete
unset( $current[ $slug ] );
[139] Fix | Delete
unset( $this->updates[ $slug ] );
[140] Fix | Delete
}
[141] Fix | Delete
// If the requirement has already been added to the stack...
[142] Fix | Delete
if ( in_array( $requirement, $queue ) ) {
[143] Fix | Delete
$enqueued++;
[144] Fix | Delete
} // OR If the requirement has already been processed...
[145] Fix | Delete
elseif ( isset( $previous[ $requirement ] ) ) {
[146] Fix | Delete
$enqueued++;
[147] Fix | Delete
}
[148] Fix | Delete
}
[149] Fix | Delete
// If all requirement are met...
[150] Fix | Delete
if ( $enqueued == count( $update[ 'requires' ] ) ) {
[151] Fix | Delete
// Add it to the list.
[152] Fix | Delete
array_push( $sorted, $update );
[153] Fix | Delete
// Record that we enqueued it.
[154] Fix | Delete
array_push( $queue, $slug );
[155] Fix | Delete
}
[156] Fix | Delete
} // Otherwise... (It has no requirements.)
[157] Fix | Delete
else {
[158] Fix | Delete
// Add it to the list.
[159] Fix | Delete
array_push( $sorted, $update );
[160] Fix | Delete
// Record that we enqueued it.
[161] Fix | Delete
array_push( $queue, $slug );
[162] Fix | Delete
}
[163] Fix | Delete
}
[164] Fix | Delete
}
[165] Fix | Delete
}
[166] Fix | Delete
return $sorted;
[167] Fix | Delete
}
[168] Fix | Delete
[169] Fix | Delete
}
[170] Fix | Delete
[171] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function