Example #1
0
 /**
  * Scan through the keys of $variables and apply the replacement if one is found
  * @param array     $variables
  * @param array     $email_data
  * @param object    $queue_item
  * @param FUE_Email $email
  * @return array
  */
 protected function add_variable_replacements($variables, $email_data, $queue_item, $email)
 {
     global $wpdb;
     $order = $queue_item->order_id != 0 ? WC_FUE_Compatibility::wc_get_order($queue_item->order_id) : false;
     $email = new FUE_Email($queue_item->email_id);
     $send_coupon = $email->send_coupon;
     $email_coupon_id = $email->coupon_id;
     if (!$email->exists() || !$send_coupon) {
         return $variables;
     }
     if ($queue_item->order_id != 0) {
         // order
         $order = WC_FUE_Compatibility::wc_get_order($queue_item->order_id);
         if (isset($order->user_id) && $order->user_id > 0) {
             $wp_user = new WP_User($order->user_id);
             $email_to = $wp_user->user_email;
         } else {
             $email_to = $order->billing_email;
         }
     } else {
         $wp_user = new WP_User($queue_item->user_id);
         $email_to = $wp_user->user_email;
     }
     $coupon_code = '';
     $coupon = false;
     if ($send_coupon == 1 && $email_coupon_id != 0) {
         $coupon = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}followup_coupons WHERE `id` = %d", $email_coupon_id));
         if (!$coupon) {
             $variables['coupon_code'] = '';
             $queue_item->add_note(sprintf('Warning: The email coupon (ID #%s) could not be found', $email_coupon_id));
             return $variables;
         }
         $coupon_code = FUE_Coupons::add_prefix(self::generate_coupon_code(), $coupon, $order);
         $coupon_array = array('post_title' => $coupon_code, 'post_author' => 1, 'post_date' => date("Y-m-d H:i:s"), 'post_status' => 'publish', 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_name' => $coupon_code, 'post_parent' => 0, 'menu_order' => 0, 'post_type' => 'shop_coupon');
         $coupon_id = wp_insert_post($coupon_array);
         $wpdb->query("UPDATE {$wpdb->prefix}posts SET post_status = 'publish' WHERE ID = {$coupon_id}");
         $expiry = '';
         if ($coupon->expiry_value > 0 && !empty($coupon->expiry_type)) {
             $exp = $coupon->expiry_value . ' ' . $coupon->expiry_type;
             $now = current_time('mysql');
             $ts = strtotime("{$now} +{$exp}");
             if ($ts !== false) {
                 $expiry = date('Y-m-d', $ts);
             }
         }
         update_post_meta($coupon_id, 'discount_type', $coupon->coupon_type);
         update_post_meta($coupon_id, 'coupon_amount', $coupon->amount);
         update_post_meta($coupon_id, 'individual_use', $coupon->individual == 0 ? 'no' : 'yes');
         update_post_meta($coupon_id, 'product_ids', $coupon->product_ids);
         update_post_meta($coupon_id, 'exclude_product_ids', $coupon->exclude_product_ids);
         update_post_meta($coupon_id, 'usage_limit', $coupon->usage_limit);
         update_post_meta($coupon_id, 'usage_limit_per_user', $coupon->usage_limit_per_user);
         update_post_meta($coupon_id, 'expiry_date', $expiry);
         update_post_meta($coupon_id, 'apply_before_tax', $coupon->before_tax == 0 ? 'no' : 'yes');
         update_post_meta($coupon_id, 'free_shipping', $coupon->free_shipping == 0 ? 'no' : 'yes');
         update_post_meta($coupon_id, 'exclude_sale_items', $coupon->exclude_sale_items == 0 ? 'no' : 'yes');
         update_post_meta($coupon_id, 'product_categories', maybe_unserialize($coupon->product_categories));
         update_post_meta($coupon_id, 'exclude_product_categories', maybe_unserialize($coupon->exclude_product_categories));
         update_post_meta($coupon_id, 'minimum_amount', $coupon->minimum_amount);
         update_post_meta($coupon_id, 'maximum_amount', $coupon->maximum_amount);
         $product_categories = '';
         $exclude_product_categories = '';
         if (!empty($coupon->product_categories)) {
             $product_categories = unserialize($coupon->product_categories);
         }
         update_post_meta($coupon_id, 'product_categories', $product_categories);
         if (!empty($coupon->exclude_product_categories)) {
             $exclude_product_categories = unserialize($coupon->exclude_product_categories);
         }
         update_post_meta($coupon_id, 'exclude_product_categories', $exclude_product_categories);
         $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}followup_coupons SET `usage_count` = `usage_count` + 1 WHERE `id` = %d", $coupon->id));
         FUE_Coupons::coupon_log($coupon_id, $coupon->coupon_name, $email->name, $email_to, $coupon_code);
         // record into the email_orders table
         $wpdb->query($wpdb->prepare("UPDATE `{$wpdb->prefix}followup_email_order_coupons` SET `coupon_name` = %s, `coupon_code` = %s WHERE `email_order_id` = %d", $coupon->coupon_name, $coupon_code, $queue_item->id));
         $variables['coupon_code'] = $coupon_code;
     }
     return $variables;
 }
 public function insert_coupon_code($message, $email_order)
 {
     global $wpdb;
     $order = $email_order->order_id != 0 ? new WC_Order($email_order->order_id) : false;
     $email = $wpdb->get_row($wpdb->prepare("SELECT * FROM `{$wpdb->prefix}followup_emails` WHERE `id` = %d", $email_order->email_id));
     $email_coupon = $wpdb->get_row($wpdb->prepare("SELECT * FROM `{$wpdb->prefix}followup_email_coupons` WHERE email_id = %d", $email_order->email_id));
     if (!$email || !$email_coupon) {
         return $message;
     }
     if ($email_order->order_id != 0) {
         // order
         $order = new WC_Order($email_order->order_id);
         if (isset($order->user_id) && $order->user_id > 0) {
             $wp_user = new WP_User($order->user_id);
             $email_to = $wp_user->user_email;
         } else {
             $email_to = $order->billing_email;
         }
     } else {
         $wp_user = new WP_User($email_order->user_id);
         $email_to = $wp_user->user_email;
     }
     $coupon_code = '';
     $coupon = false;
     if ($email_coupon->send_coupon == 1 && $email_coupon->coupon_id != 0) {
         $coupon = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}followup_coupons WHERE `id` = %d", $email_coupon->coupon_id));
         $coupon_code = FUE_Coupons::add_prefix(self::generateCouponCode(), $coupon, $order);
         $coupon_array = array('post_title' => $coupon_code, 'post_author' => 1, 'post_date' => date("Y-m-d H:i:s"), 'post_status' => 'publish', 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_name' => $coupon_code, 'post_parent' => 0, 'menu_order' => 0, 'post_type' => 'shop_coupon');
         $coupon_id = wp_insert_post($coupon_array);
         $wpdb->query("UPDATE {$wpdb->prefix}posts SET post_status = 'publish' WHERE ID = {$coupon_id}");
         $expiry = '';
         if ($coupon->expiry_value > 0 && !empty($coupon->expiry_type)) {
             $exp = $coupon->expiry_value . ' ' . $coupon->expiry_type;
             $now = current_time('mysql');
             $ts = strtotime("{$now} +{$exp}");
             if ($ts !== false) {
                 $expiry = date('Y-m-d', $ts);
             }
         }
         update_post_meta($coupon_id, 'discount_type', $coupon->coupon_type);
         update_post_meta($coupon_id, 'coupon_amount', $coupon->amount);
         update_post_meta($coupon_id, 'individual_use', $coupon->individual == 0 ? 'no' : 'yes');
         update_post_meta($coupon_id, 'product_ids', $coupon->product_ids);
         update_post_meta($coupon_id, 'exclude_product_ids', $coupon->exclude_product_ids);
         update_post_meta($coupon_id, 'usage_limit', $coupon->usage_limit);
         update_post_meta($coupon_id, 'expiry_date', $expiry);
         update_post_meta($coupon_id, 'apply_before_tax', $coupon->before_tax == 0 ? 'no' : 'yes');
         update_post_meta($coupon_id, 'free_shipping', $coupon->free_shipping == 0 ? 'no' : 'yes');
         update_post_meta($coupon_id, 'product_categories', maybe_unserialize($coupon->product_categories));
         update_post_meta($coupon_id, 'exclude_product_categories', maybe_unserialize($coupon->exclude_product_categories));
         update_post_meta($coupon_id, 'minimum_amount', $coupon->minimum_amount);
         $product_categories = '';
         $exclude_product_categories = '';
         if (!empty($coupon->product_categories)) {
             $product_categories = unserialize($coupon->product_categories);
         }
         update_post_meta($coupon_id, 'product_categories', $product_categories);
         if (!empty($coupon->exclude_product_categories)) {
             $exclude_product_categories = unserialize($coupon->exclude_product_categories);
         }
         update_post_meta($coupon_id, 'exclude_product_categories', $exclude_product_categories);
         $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}followup_coupons SET `usage_count` = `usage_count` + 1 WHERE `id` = %d", $coupon->id));
         FUE_Coupons::coupon_log($coupon_id, $coupon->coupon_name, $email->name, $email_to, $coupon_code);
         // record into the email_orders table
         $wpdb->query($wpdb->prepare("UPDATE `{$wpdb->prefix}followup_email_order_coupons` SET `coupon_name` = %s, `coupon_code` = %s WHERE `email_order_id` = %d", $coupon->coupon_name, $coupon_code, $email_order->id));
         $message = str_replace('{coupon_code}', $coupon_code, $message);
     }
     return $message;
 }