????JFIF??x?x????'
| Server IP : 172.67.174.47  /  Your IP : 216.73.216.83 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /././home/tempvsty/./buyeaa.com/wp-content/plugins/wpforms-lite/src/Admin/Splash/ | 
| Upload File : | 
<?php
namespace WPForms\Admin\Splash;
use WPForms\Helpers\CacheBase;
/**
 * Splash cache handler.
 *
 * @since 1.8.7
 */
class SplashCache extends CacheBase {
	use SplashTrait;
	/**
	 * Remote source URL.
	 *
	 * @since 1.8.7
	 *
	 * @var string
	 */
	public const REMOTE_SOURCE = 'https://wpformsapi.com/feeds/v1/splash/';
	/**
	 * Determine if the class is allowed to load.
	 *
	 * @since 1.8.7
	 *
	 * @return bool
	 */
	protected function allow_load(): bool {
		return is_admin() || wp_doing_cron() || wpforms_doing_wp_cli();
	}
	/**
	 * Provide settings.
	 *
	 * @since 1.8.7
	 *
	 * @return array Settings array.
	 */
	protected function setup(): array {
		return [
			// Remote source URL.
			'remote_source' => $this->get_remote_source(),
			// Splash cache file name.
			'cache_file'    => 'splash.json',
			/**
			 * Time-to-live of the splash cache file in seconds.
			 *
			 * This applies to `uploads/wpforms/cache/splash.json` file.
			 *
			 * @since 1.8.7
			 *
			 * @param integer $cache_ttl Cache time-to-live, in seconds.
			 *                           Default value: WEEK_IN_SECONDS.
			 */
			'cache_ttl'     => (int) apply_filters( 'wpforms_admin_splash_cache_ttl', WEEK_IN_SECONDS ),
		];
	}
	/**
	 * Get remote source URL.
	 *
	 * @since 1.8.7
	 *
	 * @return string
	 */
	protected function get_remote_source(): string {
		return defined( 'WPFORMS_SPLASH_REMOTE_SOURCE' ) ? WPFORMS_SPLASH_REMOTE_SOURCE : self::REMOTE_SOURCE;
	}
	/**
	 * Prepare splash modal data.
	 *
	 * @since 1.8.7
	 *
	 * @param array $data Splash modal data.
	 */
	protected function prepare_cache_data( $data ): array {
		if ( empty( $data ) || ! is_array( $data ) ) {
			return [];
		}
		$blocks = $this->prepare_blocks( $data );
		if ( empty( $blocks ) ) {
			return [];
		}
		$prepared_data['blocks'] = $blocks;
		return $prepared_data;
	}
	/**
	 * Prepare blocks.
	 *
	 * @since 1.8.7
	 *
	 * @param array $data Splash modal data.
	 *
	 * @return array Prepared blocks.
	 */
	private function prepare_blocks( array $data ): array {
		$user_license = $this->get_user_license();
		$user_version = $this->get_user_version();
		// Filter data by plugin version.
		$blocks = array_filter(
			$data,
			static function ( $block ) use ( $user_license ) {
				// Return only blocks that match the user license.
				return in_array( $user_license, $block['type'] ?? [], true );
			}
		);
		// Get the latest 10 blocks.
		$blocks = array_slice( $blocks, 0, 10 );
		// Reset indexes.
		$blocks = array_values( $blocks );
		return array_map(
			function ( $block ) use ( $user_version ) {
				$block_version = $block['version'] ?? '';
				// Prepare buttons URLs.
				$block['buttons'] = $this->prepare_buttons( $block['btns'] ?? [] );
				// Change main button URL if the block version is greater than the user version.
				if ( version_compare( $block_version, $user_version, '>' ) ) {
					$block['buttons']['main'] = [
						'url'  => $this->get_update_url(),
						'text' => __( 'Update Now', 'wpforms-lite' ),
					];
				}
				// If the block version is less than the user version, set 'new' to false.
				if ( version_compare( $block_version, $user_version, '<' ) ) {
					$block['new'] = false;
				}
				// Set layout based on an image type.
				$block['layout'] = $this->get_block_layout( $block['img'] );
				unset( $block['btns'] );
				return $block;
			},
			$blocks,
			array_keys( $blocks )
		) ?? [];
	}
}