* Update translation text domain * Escape everything that should be escaped. * Add nonce checks where needed. * Sanitize all inputs. * Apply Code style changes across the codebase. * Correct many deprecation notices. * Optimize load order of many filters. * Add Proper Build script * Use emojii flags * Fix i18n deprecation notice for translating too early * Put all scripts in footer and load async
141 lines
3.8 KiB
PHP
141 lines
3.8 KiB
PHP
<?php
|
|
/**
|
|
* Products Compatibility Layer
|
|
*
|
|
* Handles product compatibility back-ports to WP Multisite WaaS 1.X builds.
|
|
*
|
|
* @package WP_Ultimo
|
|
* @subpackage Compat/Product_Compat
|
|
* @since 2.0.0
|
|
*/
|
|
|
|
namespace WP_Ultimo\Compat;
|
|
|
|
// Exit if accessed directly
|
|
defined('ABSPATH') || exit;
|
|
|
|
/**
|
|
* Handles product compatibility back-ports to WP Multisite WaaS 1.X builds.
|
|
*
|
|
* @since 2.0.0
|
|
*/
|
|
class Product_Compat {
|
|
|
|
use \WP_Ultimo\Traits\Singleton;
|
|
|
|
/**
|
|
* Instantiate the necessary hooks.
|
|
*
|
|
* @since 2.0.0
|
|
* @return void
|
|
*/
|
|
public function init(): void {
|
|
|
|
add_filter('wu_product_options_sections', [$this, 'add_legacy_section'], 100, 2);
|
|
|
|
add_filter('update_post_metadata', [$this, 'check_update_plan'], 10, 5);
|
|
}
|
|
|
|
/**
|
|
* Saves meta data from old plugins on the new plugin.
|
|
*
|
|
* @since 2.0.0
|
|
*
|
|
* @param null $null Short-circuit control.
|
|
* @param int $object_id Object ID, in this case, of the Post object.
|
|
* @param string $meta_key The meta key being saved.
|
|
* @param mixed $meta_value The meta value.
|
|
* @param mixed $prev_value The previous value.
|
|
* @return null
|
|
*/
|
|
public function check_update_plan($null, $object_id, $meta_key, $meta_value, $prev_value) {
|
|
/*
|
|
* Check if we are in the main site of the network.
|
|
*/
|
|
if ( ! is_main_site()) {
|
|
return;
|
|
}
|
|
|
|
/*
|
|
* Check if we have a new entity with this ID.
|
|
*/
|
|
$migrated_product = wu_get_product($object_id);
|
|
|
|
if ( ! $migrated_product) {
|
|
return;
|
|
}
|
|
|
|
/*
|
|
* Prevent double prefixing.
|
|
*/
|
|
$meta_key = str_replace('wpu_', '', $meta_key);
|
|
|
|
/*
|
|
* Save using the new meta table.
|
|
*/
|
|
$migrated_product->update_meta('wpu_' . $meta_key, maybe_serialize($meta_value));
|
|
|
|
/**
|
|
* Explicitly returns null so we don't forget that
|
|
* returning anything else will prevent meta data from being saved.
|
|
*/
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Injects the compatibility panels to products Advanced Options.
|
|
*
|
|
* @since 2.0.0
|
|
*
|
|
* @param array $sections List of tabbed widget sections.
|
|
* @param \WP_Ultimo\Models\Product $object The model being edited.
|
|
* @return array
|
|
*/
|
|
public function add_legacy_section($sections, $object) {
|
|
|
|
$sections['legacy_options_core'] = [
|
|
'title' => __('Legacy Options', 'wp-multisite-waas'),
|
|
'desc' => __('Options used by old 1.X versions. ', 'wp-multisite-waas'),
|
|
'icon' => 'dashicons-wu-spreadsheet',
|
|
'state' => [
|
|
'legacy_options' => $object->get_legacy_options(),
|
|
],
|
|
'fields' => [
|
|
'legacy_options' => [
|
|
'type' => 'toggle',
|
|
'value' => $object->get_legacy_options(),
|
|
'title' => __('Toggle Legacy Options', 'wp-multisite-waas'),
|
|
'desc' => __('Toggle this option to edit legacy options.', 'wp-multisite-waas'),
|
|
'html_attr' => [
|
|
'v-model' => 'legacy_options',
|
|
],
|
|
],
|
|
'featured_plan' => [
|
|
'type' => 'toggle',
|
|
'value' => $object->is_featured_plan(),
|
|
'title' => __('Featured Plan', 'wp-multisite-waas'),
|
|
'desc' => __('Toggle this option to mark this product as featured on the legacy pricing tables.', 'wp-multisite-waas'),
|
|
'wrapper_html_attr' => [
|
|
'v-show' => 'legacy_options',
|
|
],
|
|
],
|
|
'feature_list' => [
|
|
'type' => 'textarea',
|
|
'title' => __('Features List', 'wp-multisite-waas'),
|
|
'placeholder' => __('E.g. Feature 1', 'wp-multisite-waas') . PHP_EOL . __('Feature 2', 'wp-multisite-waas'),
|
|
'desc' => __('Add a feature per line. These will be shown on the pricing tables.', 'wp-multisite-waas'),
|
|
'value' => $object->get_feature_list(),
|
|
'wrapper_html_attr' => [
|
|
'v-show' => 'legacy_options',
|
|
],
|
|
'html_attr' => [
|
|
'rows' => 6,
|
|
],
|
|
],
|
|
],
|
|
];
|
|
|
|
return $sections;
|
|
}
|
|
}
|