????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/Addons/ | 
| Upload File : | 
<?php
namespace WPForms\Admin\Addons;
use WPForms\Helpers\CacheBase;
/**
 * Addons cache handler.
 *
 * @since 1.6.6
 */
class AddonsCache extends CacheBase {
	/**
	 * Remote source URL.
	 *
	 * @since 1.8.9
	 *
	 * @var string
	 */
	const REMOTE_SOURCE = 'https://wpformsapi.com/feeds/v1/addons/';
	/**
	 * Determine if the class is allowed to load.
	 *
	 * @since 1.6.8
	 *
	 * @return bool
	 */
	protected function allow_load() {
		if ( wp_doing_cron() || wpforms_doing_wp_cli() ) {
			return true;
		}
		$has_permissions  = wpforms_current_user_can( [ 'create_forms', 'edit_forms' ] );
		$allowed_requests = wpforms_is_admin_ajax() || wpforms_is_admin_page() || wpforms_is_admin_page( 'builder' );
		return $has_permissions && $allowed_requests;
	}
	/**
	 * Provide settings.
	 *
	 * @since 1.6.6
	 *
	 * @return array Settings array.
	 */
	protected function setup() {
		return [
			// Remote source URL.
			'remote_source' => $this->get_remote_source(),
			// Addons cache file name.
			'cache_file'    => 'addons.json',
			/**
			 * Time-to-live of the addons cache file in seconds.
			 *
			 * This applies to `uploads/wpforms/cache/addons.json` file.
			 *
			 * @since 1.6.8
			 *
			 * @param integer $cache_ttl Cache time-to-live, in seconds.
			 *                           Default value: WEEK_IN_SECONDS.
			 */
			'cache_ttl'     => (int) apply_filters( 'wpforms_admin_addons_cache_ttl', WEEK_IN_SECONDS ),
			// Scheduled update action.
			'update_action' => 'wpforms_admin_addons_cache_update',
		];
	}
	/**
	 * Get remote source URL.
	 *
	 * @since 1.8.9
	 *
	 * @return string
	 */
	protected function get_remote_source(): string {
		return defined( 'WPFORMS_ADDONS_REMOTE_SOURCE' ) ? WPFORMS_ADDONS_REMOTE_SOURCE : self::REMOTE_SOURCE;
	}
	/**
	 * Prepare addons data to store in a local cache -
	 * generate addons icon image file name for further use.
	 *
	 * @since 1.6.6
	 *
	 * @param array $data Raw addons data.
	 *
	 * @return array Prepared data for caching (with icons).
	 */
	protected function prepare_cache_data( $data ): array {
		if ( empty( $data ) || ! is_array( $data ) ) {
			return [];
		}
		$addons_cache = [];
		foreach ( $data as $addon ) {
			// Addon icon.
			$addon['icon'] = str_replace( 'wpforms-', 'addon-icon-', $addon['slug'] ) . '.png';
			// Special case when plugin addon renamed, for instance:
			// Sendinblue to Brevo, or ConvertKit to Kit,
			// but we keep the old slug for compatibility.
			foreach (
				[
					'wpforms-sendinblue' => [
						'old' => 'sendinblue',
						'new' => 'brevo',
					],
					'wpforms-convertkit' => [
						'old' => 'convertkit',
						'new' => 'kit',
					],
				] as $slug => $renamed
			) {
				if ( $addon['slug'] === $slug ) {
					$addon['icon'] = str_replace( $renamed['old'], $renamed['new'], $addon['icon'] );
				}
			}
			// Use slug as a key for further usage.
			$addons_cache[ $addon['slug'] ] = $addon;
		}
		return $addons_cache;
	}
}