WPFS()->is_readable( $file ) ) { self::$_cache[ $cache_name ] = unserialize( et_()->WPFS()->get_contents( $file ) ); } else { self::$_cache[ $cache_name ] = array(); } self::$_cache_loaded[ $cache_name ] = true; } return isset( self::$_cache[ $cache_name ] ) ? self::$_cache[ $cache_name ] : array(); } /** * Saves Cache. * * @since 3.27.3 * * @return void */ public static function save_cache() { if ( self::is_disabled() || ! self::$_dirty || ! self::$_cache ) { return; } foreach ( self::$_dirty as $cache_name ) { if ( ! isset( self::$_cache[ $cache_name ] ) ) { continue; } $data = self::$_cache[ $cache_name ]; $file = self::get_cache_file_name( $cache_name ); if ( ! wp_is_writable( dirname( $file ) ) ) { continue; } et_()->WPFS()->put_contents( $file, serialize( $data ) ); } } /** * Get full path of cache file name. * * The file name will be suffixed with .data * * @since 3.27.3 * * @param string $cache_name What is the file name that storing the cache data. * * @return string */ public static function get_cache_file_name( $cache_name ) { return sprintf( '%1$s/%2$s.data', ET_Core_PageResource::get_cache_directory(), $cache_name ); } /** * Check is file based caching is disabled. * * @since 4.0.8 * * @return bool */ public static function is_disabled() { return defined( 'ET_DISABLE_FILE_BASED_CACHE' ) && ET_DISABLE_FILE_BASED_CACHE; } } // Hook the shutdown action once. if ( ! has_action( 'shutdown', 'ET_Core_Cache_File::save_cache' ) ) { add_action( 'shutdown', 'ET_Core_Cache_File::save_cache' ); }