add_coupon_message() public method

displays the message/error.
public add_coupon_message ( integer $msg_code )
$msg_code integer Message/error code.
 /**
  * Performs coupon checks after checkout validation.
  *
  * @param array $posted posted form data
  */
 public static function woocommerce_after_checkout_validation($posted)
 {
     global $woocommerce;
     if (isset($woocommerce->cart)) {
         $cart = $woocommerce->cart;
         if (!empty($cart->applied_coupons)) {
             if (method_exists('Affiliates_Attributes_WordPress', 'get_affiliate_for_coupon')) {
                 $valid = true;
                 $emails = array($posted['billing_email']);
                 if (is_user_logged_in()) {
                     $current_user = wp_get_current_user();
                     $emails[] = $current_user->user_email;
                 }
                 $emails = array_map('sanitize_email', array_map('strtolower', $emails));
                 self::remove_filters();
                 foreach ($cart->applied_coupons as $key => $code) {
                     $coupon = new WC_Coupon($code);
                     if (!is_wp_error($coupon->is_valid())) {
                         if ($affiliate_id = Affiliates_Attributes_WordPress::get_affiliate_for_coupon($coupon->code)) {
                             if ($user_id = get_current_user_id()) {
                                 if ($affiliate_ids = affiliates_get_user_affiliate($user_id)) {
                                     if (in_array($affiliate_id, $affiliate_ids)) {
                                         $valid = false;
                                         break;
                                     }
                                 }
                             }
                             if ($affiliate = affiliates_get_affiliate($affiliate_id)) {
                                 if (isset($affiliate['email']) && in_array(strtolower($affiliate['email']), $emails)) {
                                     $valid = false;
                                     break;
                                 }
                             }
                         }
                     }
                 }
                 self::add_filters();
                 if (!$valid) {
                     $coupon->add_coupon_message(WC_Coupon::E_WC_COUPON_INVALID_REMOVED);
                     unset($cart->applied_coupons[$key]);
                     $woocommerce->session->coupon_codes = $cart->applied_coupons;
                     $woocommerce->session->refresh_totals = true;
                 }
             }
         }
     }
 }
示例#2
0
 /**
  * Applies a coupon code passed to the method.
  *
  * @param string $coupon_code - The code to apply
  * @return bool	True if the coupon is applied, false if it does not exist or cannot be applied
  */
 public function add_discount($coupon_code)
 {
     // Coupons are globally disabled
     if (!wc_coupons_enabled()) {
         return false;
     }
     // Sanitize coupon code
     $coupon_code = apply_filters('woocommerce_coupon_code', $coupon_code);
     // Get the coupon
     $the_coupon = new WC_Coupon($coupon_code);
     // Check it can be used with cart
     if (!$the_coupon->is_valid()) {
         wc_add_notice($the_coupon->get_error_message(), 'error');
         return false;
     }
     // Check if applied
     if ($this->has_discount($coupon_code)) {
         $the_coupon->add_coupon_message(WC_Coupon::E_WC_COUPON_ALREADY_APPLIED);
         return false;
     }
     // If its individual use then remove other coupons
     if ($the_coupon->get_individual_use()) {
         $this->applied_coupons = apply_filters('woocommerce_apply_individual_use_coupon', array(), $the_coupon, $this->applied_coupons);
     }
     if ($this->applied_coupons) {
         foreach ($this->applied_coupons as $code) {
             $coupon = new WC_Coupon($code);
             if ($coupon->get_individual_use() && false === apply_filters('woocommerce_apply_with_individual_use_coupon', false, $the_coupon, $coupon, $this->applied_coupons)) {
                 // Reject new coupon
                 $coupon->add_coupon_message(WC_Coupon::E_WC_COUPON_ALREADY_APPLIED_INDIV_USE_ONLY);
                 return false;
             }
         }
     }
     $this->applied_coupons[] = $coupon_code;
     // Choose free shipping
     if ($the_coupon->get_free_shipping()) {
         $packages = WC()->shipping->get_packages();
         $chosen_shipping_methods = WC()->session->get('chosen_shipping_methods');
         foreach ($packages as $i => $package) {
             $chosen_shipping_methods[$i] = 'free_shipping';
         }
         WC()->session->set('chosen_shipping_methods', $chosen_shipping_methods);
     }
     $the_coupon->add_coupon_message(WC_Coupon::WC_COUPON_SUCCESS);
     do_action('woocommerce_applied_coupon', $coupon_code);
     return true;
 }
示例#3
0
 /**
  * Applies a coupon code passed to the method.
  *
  * @param string $coupon_code - The code to apply
  * @return bool	True if the coupon is applied, false if it does not exist or cannot be applied
  */
 public function add_discount($coupon_code)
 {
     global $woocommerce;
     // Coupons are globally disabled
     if (!$woocommerce->cart->coupons_enabled()) {
         return false;
     }
     // Sanitize coupon code
     $coupon_code = apply_filters('woocommerce_coupon_code', $coupon_code);
     // Get the coupon
     $the_coupon = new WC_Coupon($coupon_code);
     if ($the_coupon->id) {
         // Check it can be used with cart
         if (!$the_coupon->is_valid()) {
             $woocommerce->add_error($the_coupon->get_error_message());
             return false;
         }
         // Check if applied
         if ($woocommerce->cart->has_discount($coupon_code)) {
             $the_coupon->add_coupon_message(WC_Coupon::E_WC_COUPON_ALREADY_APPLIED);
             return false;
         }
         // If its individual use then remove other coupons
         if ($the_coupon->individual_use == 'yes') {
             $this->applied_coupons = apply_filters('woocommerce_apply_individual_use_coupon', array(), $the_coupon, $this->applied_coupons);
         }
         if ($this->applied_coupons) {
             foreach ($this->applied_coupons as $code) {
                 $existing_coupon = new WC_Coupon($code);
                 if ($existing_coupon->individual_use == 'yes' && false === apply_filters('woocommerce_apply_with_individual_use_coupon', false, $the_coupon, $existing_coupon, $this->applied_coupons)) {
                     // Reject new coupon
                     $existing_coupon->add_coupon_message(WC_Coupon::E_WC_COUPON_ALREADY_APPLIED_INDIV_USE_ONLY);
                     return false;
                 }
             }
         }
         $this->applied_coupons[] = $coupon_code;
         // Choose free shipping
         if ($the_coupon->enable_free_shipping()) {
             $woocommerce->session->chosen_shipping_method = 'free_shipping';
         }
         $this->calculate_totals();
         $the_coupon->add_coupon_message(WC_Coupon::WC_COUPON_SUCCESS);
         do_action('woocommerce_applied_coupon', $coupon_code);
         return true;
     } else {
         $the_coupon->add_coupon_message(WC_Coupon::E_WC_COUPON_NOT_EXIST);
         return false;
     }
     return false;
 }