Initial commit: WordPress wp-content (themes, plugins, languages)
- Theme: momentry (custom theme with REST API routes) - Plugins: code-snippets (contains all API proxies) - Languages: zh_TW translations - Excludes: cache, backups, uploads, logs
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user