Enhance Subscriptions, Affiliates, and Software Distribution modules
This commit is contained in:
@@ -220,6 +220,7 @@ class ProductsController
|
||||
$category = $request->get_param('category');
|
||||
$type = $request->get_param('type');
|
||||
$stock_status = $request->get_param('stock_status');
|
||||
$software_enabled = $request->get_param('software_enabled');
|
||||
$orderby = $request->get_param('orderby') ?: 'date';
|
||||
$order = $request->get_param('order') ?: 'DESC';
|
||||
|
||||
@@ -266,11 +267,19 @@ class ProductsController
|
||||
|
||||
// Stock status filter
|
||||
if ($stock_status) {
|
||||
$args['meta_query'] = [
|
||||
[
|
||||
'key' => '_stock_status',
|
||||
'value' => $stock_status,
|
||||
],
|
||||
$args['meta_query'] = $args['meta_query'] ?? [];
|
||||
$args['meta_query'][] = [
|
||||
'key' => '_stock_status',
|
||||
'value' => $stock_status,
|
||||
];
|
||||
}
|
||||
|
||||
// Software enabled filter
|
||||
if ($software_enabled === 'true' || $software_enabled === '1') {
|
||||
$args['meta_query'] = $args['meta_query'] ?? [];
|
||||
$args['meta_query'][] = [
|
||||
'key' => '_woonoow_software_enabled',
|
||||
'value' => 'yes',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -660,6 +669,26 @@ class ProductsController
|
||||
update_post_meta($product->get_id(), '_woonoow_affiliate_commission_rate', self::sanitize_number($data['affiliate_commission_rate']));
|
||||
}
|
||||
|
||||
// Software meta
|
||||
if (isset($data['software_enabled'])) {
|
||||
update_post_meta($product->get_id(), '_woonoow_software_enabled', $data['software_enabled'] ? 'yes' : 'no');
|
||||
}
|
||||
if (isset($data['software_slug'])) {
|
||||
update_post_meta($product->get_id(), '_woonoow_software_slug', sanitize_title($data['software_slug']));
|
||||
}
|
||||
if (isset($data['software_wp_enabled'])) {
|
||||
update_post_meta($product->get_id(), '_woonoow_software_wp_enabled', $data['software_wp_enabled'] ? 'yes' : 'no');
|
||||
}
|
||||
if (isset($data['software_requires_wp'])) {
|
||||
update_post_meta($product->get_id(), '_woonoow_software_requires_wp', sanitize_text_field($data['software_requires_wp']));
|
||||
}
|
||||
if (isset($data['software_tested_wp'])) {
|
||||
update_post_meta($product->get_id(), '_woonoow_software_tested_wp', sanitize_text_field($data['software_tested_wp']));
|
||||
}
|
||||
if (isset($data['software_requires_php'])) {
|
||||
update_post_meta($product->get_id(), '_woonoow_software_requires_php', sanitize_text_field($data['software_requires_php']));
|
||||
}
|
||||
|
||||
// Allow plugins to perform additional updates (Level 1 compatibility)
|
||||
do_action('woonoow/product_updated', $product, $data, $request);
|
||||
|
||||
@@ -819,6 +848,10 @@ class ProductsController
|
||||
'permalink' => get_permalink($product->get_id()),
|
||||
'date_created' => $product->get_date_created() ? $product->get_date_created()->date('Y-m-d H:i:s') : '',
|
||||
'date_modified' => $product->get_date_modified() ? $product->get_date_modified()->date('Y-m-d H:i:s') : '',
|
||||
'software_enabled' => get_post_meta($product->get_id(), '_woonoow_software_enabled', true) === 'yes',
|
||||
'software_slug' => get_post_meta($product->get_id(), '_woonoow_software_slug', true),
|
||||
'software_current_version' => get_post_meta($product->get_id(), '_woonoow_software_current_version', true),
|
||||
'software_wp_enabled' => get_post_meta($product->get_id(), '_woonoow_software_wp_enabled', true) === 'yes',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -877,6 +910,14 @@ class ProductsController
|
||||
$data['affiliate_enabled'] = get_post_meta($product->get_id(), '_woonoow_affiliate_enabled', true) === 'yes';
|
||||
$data['affiliate_commission_rate'] = get_post_meta($product->get_id(), '_woonoow_affiliate_commission_rate', true) ?: '';
|
||||
|
||||
// Software fields
|
||||
$data['software_enabled'] = get_post_meta($product->get_id(), '_woonoow_software_enabled', true) === 'yes';
|
||||
$data['software_slug'] = get_post_meta($product->get_id(), '_woonoow_software_slug', true) ?: '';
|
||||
$data['software_wp_enabled'] = get_post_meta($product->get_id(), '_woonoow_software_wp_enabled', true) === 'yes';
|
||||
$data['software_requires_wp'] = get_post_meta($product->get_id(), '_woonoow_software_requires_wp', true) ?: '';
|
||||
$data['software_tested_wp'] = get_post_meta($product->get_id(), '_woonoow_software_tested_wp', true) ?: '';
|
||||
$data['software_requires_php'] = get_post_meta($product->get_id(), '_woonoow_software_requires_php', true) ?: '';
|
||||
|
||||
// Images array (URLs) for frontend - featured + gallery
|
||||
$images = [];
|
||||
$featured_image_id = $product->get_image_id();
|
||||
@@ -1078,6 +1119,10 @@ class ProductsController
|
||||
'image_url' => $image_url,
|
||||
'image' => $image_url, // For form compatibility
|
||||
'license_duration_days' => get_post_meta($variation->get_id(), '_license_duration_days', true) ?: '',
|
||||
'subscription_signup_fee' => get_post_meta($variation->get_id(), '_woonoow_subscription_signup_fee', true) ?: '',
|
||||
'subscription_trial_days' => get_post_meta($variation->get_id(), '_woonoow_subscription_trial_days', true) ?: '',
|
||||
'subscription_period' => get_post_meta($variation->get_id(), '_woonoow_subscription_period', true) ?: '',
|
||||
'subscription_interval' => get_post_meta($variation->get_id(), '_woonoow_subscription_interval', true) ?: '',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -1214,6 +1259,20 @@ class ProductsController
|
||||
update_post_meta($saved_id, '_license_duration_days', self::sanitize_number($var_data['license_duration_days']));
|
||||
}
|
||||
|
||||
// Save variation-level subscription fields
|
||||
if (isset($var_data['subscription_signup_fee'])) {
|
||||
update_post_meta($saved_id, '_woonoow_subscription_signup_fee', self::sanitize_number($var_data['subscription_signup_fee']));
|
||||
}
|
||||
if (isset($var_data['subscription_trial_days'])) {
|
||||
update_post_meta($saved_id, '_woonoow_subscription_trial_days', absint($var_data['subscription_trial_days']));
|
||||
}
|
||||
if (isset($var_data['subscription_period'])) {
|
||||
update_post_meta($saved_id, '_woonoow_subscription_period', sanitize_key($var_data['subscription_period']));
|
||||
}
|
||||
if (isset($var_data['subscription_interval'])) {
|
||||
update_post_meta($saved_id, '_woonoow_subscription_interval', absint($var_data['subscription_interval']));
|
||||
}
|
||||
|
||||
// Manually save attributes using direct database insert
|
||||
if (!empty($wc_attributes)) {
|
||||
global $wpdb;
|
||||
|
||||
Reference in New Issue
Block a user