0 ) { global $wpdb; $dp_aicoso_table_name = $wpdb->prefix . 'dp_aicoso_rules'; // Get rule data with caching. $dp_aicoso_rule_data = wp_cache_get( 'dp_aicoso_rule_' . $dp_aicoso_rule_id, 'dp_aicoso_rule_form' ); if ( false === $dp_aicoso_rule_data ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Table name is safe, cached after query. $dp_aicoso_rule_data = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}dp_aicoso_rules WHERE rule_id = %d", $dp_aicoso_rule_id ), ARRAY_A ); // Cache for 5 minutes. wp_cache_set( 'dp_aicoso_rule_' . $dp_aicoso_rule_id, $dp_aicoso_rule_data, 'dp_aicoso_rule_form', 300 ); } if ( $dp_aicoso_rule_data ) { $dp_aicoso_rule_data['conditions'] = json_decode( $dp_aicoso_rule_data['conditions'], true ); $dp_aicoso_rule_data['adjustments'] = json_decode( $dp_aicoso_rule_data['adjustments'], true ); } } // Default values. $dp_aicoso_rule_name = isset( $dp_aicoso_rule_data['rule_name'] ) ? $dp_aicoso_rule_data['rule_name'] : ''; $dp_aicoso_rule_type = isset( $dp_aicoso_rule_data['rule_type'] ) ? $dp_aicoso_rule_data['rule_type'] : ''; $dp_aicoso_rule_status = isset( $dp_aicoso_rule_data['rule_status'] ) ? $dp_aicoso_rule_data['rule_status'] : 'active'; $dp_aicoso_priority = isset( $dp_aicoso_rule_data['priority'] ) ? $dp_aicoso_rule_data['priority'] : 10; $dp_aicoso_start_date = isset( $dp_aicoso_rule_data['start_date'] ) ? $dp_aicoso_rule_data['start_date'] : ''; $dp_aicoso_end_date = isset( $dp_aicoso_rule_data['end_date'] ) ? $dp_aicoso_rule_data['end_date'] : ''; $dp_aicoso_conditions = isset( $dp_aicoso_rule_data['conditions'] ) ? $dp_aicoso_rule_data['conditions'] : array(); $dp_aicoso_adjustments = isset( $dp_aicoso_rule_data['adjustments'] ) ? $dp_aicoso_rule_data['adjustments'] : array(); // Convert new array format back to form format for display. // First preserve quantity_ranges if they exist AND it's a product rule. $dp_aicoso_quantity_ranges = null; if ( 'product' === $dp_aicoso_rule_type && ! empty( $dp_aicoso_adjustments ) && isset( $dp_aicoso_adjustments['quantity_ranges'] ) ) { $dp_aicoso_quantity_ranges = $dp_aicoso_adjustments['quantity_ranges']; } // Process other adjustment settings. $dp_aicoso_include_subcategories = false; if ( ! empty( $dp_aicoso_adjustments ) && isset( $dp_aicoso_adjustments['include_subcategories'] ) ) { $dp_aicoso_include_subcategories = $dp_aicoso_adjustments['include_subcategories']; } // Preserve disable settings before processing adjustments. $dp_aicoso_disable_on_sale = false; $dp_aicoso_disable_with_coupons = false; if ( ! empty( $dp_aicoso_adjustments ) ) { if ( isset( $dp_aicoso_adjustments['disable_on_sale'] ) ) { $dp_aicoso_disable_on_sale = $dp_aicoso_adjustments['disable_on_sale']; } if ( isset( $dp_aicoso_adjustments['disable_with_coupons'] ) ) { $dp_aicoso_disable_with_coupons = $dp_aicoso_adjustments['disable_with_coupons']; } } if ( ! empty( $dp_aicoso_adjustments ) && isset( $dp_aicoso_adjustments[0] ) && is_array( $dp_aicoso_adjustments[0] ) ) { // New format: [['type' => 'percentage', 'value' => 40]]. $dp_aicoso_first_adjustment = $dp_aicoso_adjustments[0]; $dp_aicoso_adjustments = array( 'discount_type' => isset( $dp_aicoso_first_adjustment['type'] ) ? $dp_aicoso_first_adjustment['type'] : 'percentage', 'discount_value' => isset( $dp_aicoso_first_adjustment['value'] ) ? $dp_aicoso_first_adjustment['value'] : '', 'disable_on_sale' => $dp_aicoso_disable_on_sale, 'disable_with_coupons' => $dp_aicoso_disable_with_coupons, ); } elseif ( empty( $dp_aicoso_adjustments ) || ( ! isset( $dp_aicoso_adjustments['discount_type'] ) && ! isset( $dp_aicoso_adjustments['discount_value'] ) && ! isset( $dp_aicoso_adjustments['quantity_ranges'] ) ) ) { // Empty or invalid format - set defaults. $dp_aicoso_adjustments = array( 'discount_type' => 'percentage', 'discount_value' => '', 'disable_on_sale' => $dp_aicoso_disable_on_sale, 'disable_with_coupons' => $dp_aicoso_disable_with_coupons, ); } // Restore quantity_ranges if they exist and it's a product rule. if ( 'product' === $dp_aicoso_rule_type && null !== $dp_aicoso_quantity_ranges ) { $dp_aicoso_adjustments['quantity_ranges'] = $dp_aicoso_quantity_ranges; } // Restore include_subcategories for category rules. if ( 'category' === $dp_aicoso_rule_type && $dp_aicoso_include_subcategories ) { $dp_aicoso_adjustments['include_subcategories'] = $dp_aicoso_include_subcategories; } // Make sure disable settings are always present. if ( ! isset( $dp_aicoso_adjustments['disable_on_sale'] ) ) { $dp_aicoso_adjustments['disable_on_sale'] = $dp_aicoso_disable_on_sale; } if ( ! isset( $dp_aicoso_adjustments['disable_with_coupons'] ) ) { $dp_aicoso_adjustments['disable_with_coupons'] = $dp_aicoso_disable_with_coupons; } ?>