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.../themes/Divi/includes/builder/feature
File: AjaxCache.php
<?php
[0] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[1] Fix | Delete
exit; // Exit if accessed directly
[2] Fix | Delete
}
[3] Fix | Delete
[4] Fix | Delete
/**
[5] Fix | Delete
* Ajax Cache.
[6] Fix | Delete
*/
[7] Fix | Delete
class ET_Builder_Ajax_Cache {
[8] Fix | Delete
/**
[9] Fix | Delete
* @var ET_Builder_Ajax_Cache
[10] Fix | Delete
*/
[11] Fix | Delete
private static $_instance;
[12] Fix | Delete
[13] Fix | Delete
/**
[14] Fix | Delete
* @var string
[15] Fix | Delete
*/
[16] Fix | Delete
protected $_transient = 'et_builder_ajax_cache';
[17] Fix | Delete
[18] Fix | Delete
/**
[19] Fix | Delete
* @var bool
[20] Fix | Delete
*/
[21] Fix | Delete
protected $_dirty = false;
[22] Fix | Delete
[23] Fix | Delete
/**
[24] Fix | Delete
* @var Array
[25] Fix | Delete
*/
[26] Fix | Delete
protected $_cache;
[27] Fix | Delete
[28] Fix | Delete
/**
[29] Fix | Delete
* ET_Builder_Ajax_Cache constructor.
[30] Fix | Delete
*/
[31] Fix | Delete
public function __construct() {
[32] Fix | Delete
add_action( 'et_builder_ajax_cache_clear', array( $this, 'clear' ), 10, 1 );
[33] Fix | Delete
add_action( 'shutdown', array( $this, 'save' ) );
[34] Fix | Delete
add_filter( 'et_builder_dynamic_asset_deps', array( $this, 'add_cache_dep' ), 10, 2 );
[35] Fix | Delete
}
[36] Fix | Delete
[37] Fix | Delete
/**
[38] Fix | Delete
* Returns whether cache file exists or not.
[39] Fix | Delete
*
[40] Fix | Delete
* @since 4.0.10
[41] Fix | Delete
*
[42] Fix | Delete
* @return bool
[43] Fix | Delete
*/
[44] Fix | Delete
public function file_exists() {
[45] Fix | Delete
$file = $this->get_file_name();
[46] Fix | Delete
return $file && et_()->WPFS()->is_readable( $file );
[47] Fix | Delete
}
[48] Fix | Delete
[49] Fix | Delete
/**
[50] Fix | Delete
* Returns whether cache is empty or not.
[51] Fix | Delete
*
[52] Fix | Delete
* @since 4.0.10
[53] Fix | Delete
*
[54] Fix | Delete
* @return void
[55] Fix | Delete
*/
[56] Fix | Delete
public function is_empty() {
[57] Fix | Delete
$this->load();
[58] Fix | Delete
return empty( $this->_cache );
[59] Fix | Delete
}
[60] Fix | Delete
[61] Fix | Delete
/**
[62] Fix | Delete
* Enqueue ajax cache as definitions dependency.
[63] Fix | Delete
*
[64] Fix | Delete
* @since 4.0.10
[65] Fix | Delete
*
[66] Fix | Delete
* @param array $deps Dependencies array.
[67] Fix | Delete
* @param string $key Script handle.
[68] Fix | Delete
*
[69] Fix | Delete
* @return array
[70] Fix | Delete
*/
[71] Fix | Delete
public function add_cache_dep( $deps, $key ) {
[72] Fix | Delete
// Skip all static assets but definitions.
[73] Fix | Delete
if ( 'et-dynamic-asset-definitions' !== $key ) {
[74] Fix | Delete
return $deps;
[75] Fix | Delete
}
[76] Fix | Delete
[77] Fix | Delete
if ( ! $this->file_exists() && ! $this->write_file() ) {
[78] Fix | Delete
// Bail out if cache is empty and cannot write the file.
[79] Fix | Delete
return $deps;
[80] Fix | Delete
}
[81] Fix | Delete
[82] Fix | Delete
// Enqueue ajax cache as definitions dependency.
[83] Fix | Delete
$handle = 'et-ajax-cache';
[84] Fix | Delete
$deps[] = $handle;
[85] Fix | Delete
wp_register_script( $handle, $this->get_url(), array(), ET_BUILDER_VERSION );
[86] Fix | Delete
[87] Fix | Delete
return $deps;
[88] Fix | Delete
}
[89] Fix | Delete
[90] Fix | Delete
/**
[91] Fix | Delete
* Load cache.
[92] Fix | Delete
*
[93] Fix | Delete
* @since 4.0.10
[94] Fix | Delete
*
[95] Fix | Delete
* @return void
[96] Fix | Delete
*/
[97] Fix | Delete
public function load() {
[98] Fix | Delete
if ( is_array( $this->_cache ) ) {
[99] Fix | Delete
// Cache was already loaded
[100] Fix | Delete
return;
[101] Fix | Delete
}
[102] Fix | Delete
[103] Fix | Delete
$this->_cache = get_transient( $this->_transient );
[104] Fix | Delete
[105] Fix | Delete
if ( ! is_array( $this->_cache ) ) {
[106] Fix | Delete
$this->_cache = array();
[107] Fix | Delete
$this->delete_file();
[108] Fix | Delete
}
[109] Fix | Delete
}
[110] Fix | Delete
[111] Fix | Delete
/**
[112] Fix | Delete
* Save cache.
[113] Fix | Delete
*
[114] Fix | Delete
* @since 4.0.10
[115] Fix | Delete
*
[116] Fix | Delete
* @return void
[117] Fix | Delete
*/
[118] Fix | Delete
public function save() {
[119] Fix | Delete
// Ensure cache is loaded
[120] Fix | Delete
$this->load();
[121] Fix | Delete
[122] Fix | Delete
if ( $this->_dirty ) {
[123] Fix | Delete
set_transient( $this->_transient, $this->_cache );
[124] Fix | Delete
$this->delete_file();
[125] Fix | Delete
}
[126] Fix | Delete
}
[127] Fix | Delete
[128] Fix | Delete
/**
[129] Fix | Delete
* Write cache file.
[130] Fix | Delete
*
[131] Fix | Delete
* @since 4.0.10
[132] Fix | Delete
*
[133] Fix | Delete
* @return void
[134] Fix | Delete
*/
[135] Fix | Delete
public function write_file() {
[136] Fix | Delete
if ( $this->is_empty() ) {
[137] Fix | Delete
return false;
[138] Fix | Delete
}
[139] Fix | Delete
[140] Fix | Delete
$file = $this->get_file_name();
[141] Fix | Delete
$cache = '';
[142] Fix | Delete
foreach ( $this->_cache as $key => $value ) {
[143] Fix | Delete
$cache = sprintf( '"%s":%s,', $key, $value );
[144] Fix | Delete
}
[145] Fix | Delete
$cache = sprintf( '{"ajaxCache":{%s}}', rtrim( $cache, ',' ) );
[146] Fix | Delete
$cache = sprintf( 'window.ETBuilderBackend=jQuery.extend(true,%s,window.ETBuilderBackend)', $cache );
[147] Fix | Delete
[148] Fix | Delete
et_()->WPFS()->put_contents( $file, $cache );
[149] Fix | Delete
return $this->file_exists();
[150] Fix | Delete
}
[151] Fix | Delete
[152] Fix | Delete
/**
[153] Fix | Delete
* Delete cache file.
[154] Fix | Delete
*
[155] Fix | Delete
* @since 4.0.10
[156] Fix | Delete
*
[157] Fix | Delete
* @return void
[158] Fix | Delete
*/
[159] Fix | Delete
public function delete_file() {
[160] Fix | Delete
if ( $this->file_exists() ) {
[161] Fix | Delete
et_()->WPFS()->delete( $this->get_file_name() );
[162] Fix | Delete
}
[163] Fix | Delete
}
[164] Fix | Delete
[165] Fix | Delete
/**
[166] Fix | Delete
* Set cache key.
[167] Fix | Delete
*
[168] Fix | Delete
* @since 4.0.10
[169] Fix | Delete
*
[170] Fix | Delete
* @param string $key Cache key.
[171] Fix | Delete
* @param string $value Cache value.
[172] Fix | Delete
*
[173] Fix | Delete
* @return void
[174] Fix | Delete
*/
[175] Fix | Delete
public function set( $key, $content ) {
[176] Fix | Delete
$this->load();
[177] Fix | Delete
$this->_cache[ $key ] = wp_json_encode( $content );
[178] Fix | Delete
$this->_dirty = true;
[179] Fix | Delete
}
[180] Fix | Delete
[181] Fix | Delete
/**
[182] Fix | Delete
* Unset cache key.
[183] Fix | Delete
*
[184] Fix | Delete
* @since 4.0.10
[185] Fix | Delete
*
[186] Fix | Delete
* @param string $key Cache key.
[187] Fix | Delete
*
[188] Fix | Delete
* @return void
[189] Fix | Delete
*/
[190] Fix | Delete
public function unset_( $key ) {
[191] Fix | Delete
$this->load();
[192] Fix | Delete
if ( isset( $this->_cache[ $key ] ) ) {
[193] Fix | Delete
unset( $this->_cache[ $key ] );
[194] Fix | Delete
$this->_dirty = true;
[195] Fix | Delete
}
[196] Fix | Delete
}
[197] Fix | Delete
[198] Fix | Delete
/**
[199] Fix | Delete
* Clear cache.
[200] Fix | Delete
*
[201] Fix | Delete
* @return void
[202] Fix | Delete
*/
[203] Fix | Delete
public function clear() {
[204] Fix | Delete
delete_transient( $this->_transient );
[205] Fix | Delete
}
[206] Fix | Delete
[207] Fix | Delete
/**
[208] Fix | Delete
* Get cache file name.
[209] Fix | Delete
*
[210] Fix | Delete
* @since 4.0.10
[211] Fix | Delete
*
[212] Fix | Delete
* @return string.
[213] Fix | Delete
*/
[214] Fix | Delete
public function get_file_name() {
[215] Fix | Delete
// Per language Cache due to some data being localized.
[216] Fix | Delete
$lang = is_admin() || et_fb_is_enabled() ? get_user_locale() : get_locale();
[217] Fix | Delete
$lang = trim( sanitize_file_name( $lang ), '.' );
[218] Fix | Delete
$prefix = 'ajax';
[219] Fix | Delete
$cache = et_()->path( et_core_cache_dir()->path, $lang );
[220] Fix | Delete
$files = glob( "{$cache}/{$prefix}-*.js" );
[221] Fix | Delete
$exists = is_array( $files ) && $files;
[222] Fix | Delete
[223] Fix | Delete
if ( $exists ) {
[224] Fix | Delete
return $files[0];
[225] Fix | Delete
}
[226] Fix | Delete
[227] Fix | Delete
wp_mkdir_p( $cache );
[228] Fix | Delete
[229] Fix | Delete
// Create uniq filename
[230] Fix | Delete
$uniq = str_replace( '.', '', (string) microtime( true ) );
[231] Fix | Delete
$file = "{$cache}/{$prefix}-{$uniq}.js";
[232] Fix | Delete
[233] Fix | Delete
return et_()->WPFS()->is_writable( dirname( $file ) ) ? $file : false;
[234] Fix | Delete
}
[235] Fix | Delete
[236] Fix | Delete
/**
[237] Fix | Delete
* Get cache url.
[238] Fix | Delete
*
[239] Fix | Delete
* @since 4.0.10
[240] Fix | Delete
*
[241] Fix | Delete
* @return void
[242] Fix | Delete
*/
[243] Fix | Delete
public function get_url() {
[244] Fix | Delete
$file = $this->get_file_name();
[245] Fix | Delete
$lang = basename( dirname( $file ) );
[246] Fix | Delete
$name = basename( $file );
[247] Fix | Delete
return et_()->path( et_core_cache_dir()->url, $lang, $name );
[248] Fix | Delete
}
[249] Fix | Delete
[250] Fix | Delete
/**
[251] Fix | Delete
* Get the class instance.
[252] Fix | Delete
*
[253] Fix | Delete
* @since 4.0.10
[254] Fix | Delete
*
[255] Fix | Delete
* @return ET_Builder_Ajax_Cache
[256] Fix | Delete
*/
[257] Fix | Delete
public static function instance() {
[258] Fix | Delete
if ( ! self::$_instance ) {
[259] Fix | Delete
self::$_instance = new self;
[260] Fix | Delete
}
[261] Fix | Delete
[262] Fix | Delete
return self::$_instance;
[263] Fix | Delete
}
[264] Fix | Delete
[265] Fix | Delete
}
[266] Fix | Delete
[267] Fix | Delete
ET_Builder_Ajax_Cache::instance();
[268] Fix | Delete
[269] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function