Files
wp-multisite-waas/views/legacy/signup/pricing-table/coupon-code.php
David Stone a815fdf179 Prep Plugin for release on WordPress.org
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.
2025-04-07 09:15:21 -06:00

344 lines
7.8 KiB
PHP

<?php
/**
* Coupon code view.
*
* @since 2.0.0
*/
?>
<?php
if (isset($_GET['coupon']) && wu_get_coupon($_GET['coupon']) !== false && isset($_GET['step']) && 'plan' == $_GET['step']) :
$coupon = wu_get_coupon($_GET['coupon']);
?>
<div id="coupon-code-app">
</div>
<script>
(function($) {
var coupon_app = new Vue({
el: "#coupon-code-app",
data: {
coupon_id: '',
coupon: '<?php echo wp_json_encode($coupon); ?>',
type : '<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_type', true)); ?>',
value : parseFloat(<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_value', true)); ?>),
applies_to_setup_fee : <?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_applies_to_setup_fee', true)); ?>,
setup_fee_discount_value : parseFloat(<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_setup_fee_discount_value', true)); ?>),
setup_fee_discount_type : '<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_setup_fee_discount_type', true)); ?>',
allowed_plans : '<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_allowed_plans', true)); ?>',
allowed_freqs : '<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_allowed_freqs', true)); ?>',
success: false,
},
mounted: function() {
this.apply_coupon();
this.add_event_tabs();
},
methods: {
add_event_tabs: function() {
$('.wu-plans-frequency-selector li a').each(function() {
this.addEventListener('click',function() {
coupon_app.apply_coupon();
});
});
},
apply_coupon: function() {
if(this.coupon) {
$("body").block({
message: null,
overlayCSS: {
background: "#F1F1F1",
opacity: 0.6
}
});
this.coupon_id = this.coupon.id;
var coupon_type = this.type;
var coupon_value = this.value;
var applies_to_setup_fee = this.applies_to_setup_fee;
var setup_fee_discount_value = this.setup_fee_discount_value;
var setup_fee_discount_type = this.setup_fee_discount_type;
var allowed_plans = $.parseJSON(this.allowed_plans);
var allowed_freqs = $.parseJSON(this.allowed_freqs);
//$('#signupform').append($('#coupon_id'));
$('.superscript').show();
$('h5 sub').show();
setTimeout( function() { $('.wu-plan').each(function() {
if (!$(this).find('.old-price').get(0)) {
$(this).find('h4').after('<div class="old-price">--</div>');
}
let plan_id = $(this).data('plan');
let is_allowed_plan = false;
let is_allowed_freq = false;
// check plan is_allowed
if (typeof allowed_plans === 'object'){
for (var each_plan of allowed_plans) {
if (parseInt(each_plan) == plan_id) {
is_allowed_plan = true;
}
}
} else {
is_allowed_plan = true;
}
// check freq is_allowed
if (typeof allowed_freqs === 'object'){
for (var each_freq of allowed_freqs) {
if (each_freq == $('#wu_plan_freq').val()) {
is_allowed_freq = true;
}
}
} else {
is_allowed_freq = true;
}
if (!is_allowed_plan) {
$("body").unblock();
return;
}
if (!is_allowed_freq) {
$("body").unblock();
$(".old-price").hide();
$(".off-value").hide();
return;
} else {
$(".old-price").show();
$(".off-value").show();
}
let old_price = $(this).data('price-' + $('#wu_plan_freq').val());
old_price = wu_fix_money_string(old_price);
let new_price = 0;
let old_yearly_value = old_price * jQuery('#wu_plan_freq').val();
let new_yearly_value = 0;
let old_setupfee = $(this).find('.pricing-table-setupfee') ? $(this).find('.pricing-table-setupfee').attr('data-value') : 0;
let new_setupfee = 0;
let off_with_symbol = '';
// OFF RENDER
if (coupon_type != '"absolute"')
off_with_symbol = ''.concat(coupon_value, '%');
else
off_with_symbol = accounting.formatMoney(parseFloat(coupon_value));
$(this).find('.old-price').html(accounting.formatMoney(parseFloat(old_price)));
if (!$(this).find('.off-value').get(0)) {
$(this).find('.old-price').after('<div class="off-value">(' + off_with_symbol + ' ' + '<?php esc_html_e('OFF', 'wp-multisite-waas'); ?>' + ')</div>');
}
if(applies_to_setup_fee) {
if (setup_fee_discount_type != '"absolute"')
setupfee_off_with_symbol = ''.concat(setup_fee_discount_value, '%');
else
setupfee_off_with_symbol = accounting.formatMoney(parseFloat(setup_fee_discount_value));
if (!$(this).find('.setupfee-off-value').get(0)) {
$(this).find('.pricing-table-setupfee').after('<span class="setupfee-off-value"> (' + setupfee_off_with_symbol + ' ' + '<?php esc_html_e('OFF', 'wp-multisite-waas'); ?>' + ')</span>');
}
}
// END OFF RENDER
if(coupon_type != '"absolute"') {
new_price = old_price * ((100 - coupon_value) / 100);
new_yearly_value = old_yearly_value * ((100 - coupon_value) / 100);
} else {
if(jQuery('#wu_plan_freq').val() > 1){
new_price = ((old_price * jQuery('#wu_plan_freq').val()) - parseFloat(coupon_value)) / jQuery('#wu_plan_freq').val();
new_yearly_value = old_yearly_value - parseFloat(coupon_value);
} else {
new_price = old_price - parseFloat(coupon_value);
new_yearly_value = old_yearly_value - parseFloat(coupon_value);
}
}
if (applies_to_setup_fee) {
if (setup_fee_discount_type != '"absolute"') {
new_setupfee = old_setupfee * ((100 - setup_fee_discount_value) / 100);
} else {
new_setupfee = old_setupfee - parseFloat(setup_fee_discount_value);
}
} else {
new_setupfee = old_setupfee;
}
if (new_yearly_value > 0) {
wu_set_yearly_value(this, new_yearly_value);
} else {
$(this).find('.total-price.total-price-' + $('#wu_plan_freq').val() ).html(' <?php esc_js(_e('Free!', 'wp-multisite-waas')); ?>');
}
if (new_setupfee > 0) {
wu_set_setupfee_value(this, new_setupfee);
} else {
$(this).find('.pricing-table-setupfee').html(' <?php esc_js(_e('No Setup Fee', 'wp-multisite-waas')); ?>');
}
if (new_price > 0) {
$(this).find('.plan-price').html( accounting.formatMoney( parseFloat(new_price) ) );
if ( $(this).find('.plan-price').html().indexOf(wpu.currency_symbol) !== -1 ) {
$(this).find('.plan-price').html($(this).find('.plan-price').html().replace(wpu.currency_symbol, ''));
}
} else {
let plan_price = $(this).find('.plan-price');
plan_price.html(' <?php esc_js(_e('Free!', 'wp-multisite-waas')); ?>');
let hagacinco = $(this).find('h5');
hagacinco.find('sub').hide();
hagacinco.find('.superscript').hide();
}
$("body").unblock();
}); }, 400);
} else {
$('.old-price').hide();
this.coupon_id = '';
$('.wu-plan').each(function() {
var price = $(this).data('price-' + $('#wu_plan_freq').val());
$(this).find('.plan-price').html( price );
});
}
}
}
});
})(jQuery);
function wu_fix_money_string(value) {
if(typeof value == 'number'){
value = value.toString();
}
return parseFloat(value.replace(wpu.thousand_separator, '').replace(wpu.decimal_separator, '.'));
}
function wu_set_setupfee_value(list, value) {
jQuery(list).find('.pricing-table-setupfee').html( accounting.formatMoney(value));
}
function wu_set_yearly_value(list, value) {
var current_freq = jQuery('#wu_plan_freq').val();
var string = jQuery(list).find('.total-price.total-price-' + current_freq).html();
if (string) {
var parts = string.split(',');
var result = accounting.formatMoney(parseFloat(value)) + ', ' + parts[1];
jQuery(list).find('.total-price.total-price-' + current_freq).html(result);
}
}
</script>
<?php
endif;
// wp_enqueue_style('wub-checkout', WP_Ultimo_Billwerk()->get_asset('checkout.min.css', 'css'), false); ?>