File Manager

Current Path : /webspace/www.beetasty.be/html/wp-content/plugins/rac/inc/emails/
Upload File :
Current File : //webspace/www.beetasty.be/html/wp-content/plugins/rac/inc/emails/class-fp-rac-manual-mail.php

<?php

if (!defined('ABSPATH')) {
	exit; // Exit if accessed directly.
}
if (!class_exists('FP_RAC_Manual_Mail')) {

	/**
	 * FP_RAC_Manual_Mail Class.
	 */
	class FP_RAC_Manual_Mail {

		public static function init() {
			add_action('wp_ajax_rac_manual_mail_ajax', array( __CLASS__, 'rac_send_manual_mail' ));
		}

		public static function rac_send_manual_mail() {

			check_ajax_referer('manual-send-email-template', 'rac_security');

			global $woocommerce, $to, $fp_rac_lang;

			$mail_template_post = isset($_POST['rac_template_mail']) ? wc_clean(wp_unslash($_POST['rac_template_mail'])) : '';  // mail plain or html
			$mail_logo_added = isset($_POST['rac_template_link']) ? wc_clean(wp_unslash($_POST['rac_template_link'])) : '';  // mail logo uploaded
			$sender_option_post = isset($_POST['rac_template_sender_opt']) ? wc_clean(wp_unslash($_POST['rac_template_sender_opt'])) : '';
			$from_name_post = isset($_POST['rac_template_from_name']) ? wc_clean(wp_unslash($_POST['rac_template_from_name'])) : '';
			$from_email_post = isset($_POST['rac_template_from_email']) ? wc_clean(wp_unslash($_POST['rac_template_from_email'])) : '';
			$bcc_post = isset($_POST['rac_template_blind_carbon_copy']) ? wc_clean(wp_unslash($_POST['rac_template_blind_carbon_copy'])) : '';
			$subject_post = isset($_POST['rac_template_subject']) ? wc_clean(wp_unslash($_POST['rac_template_subject'])) : '';
			$anchor_text_post = isset($_POST['rac_template_anchor_text']) ? wc_clean(wp_unslash($_POST['rac_template_anchor_text'])) : '';
			$custom_css_post = isset($_POST['rac_template_custom_css']) ? wc_clean(wp_unslash($_POST['rac_template_custom_css'])) : '';
			$message_post = isset($_POST['rac_content']) ? wp_unslash($_POST['rac_content']) : ''; //remove backslashes when data retrieved from a database or from an HTML form.
			$message_post = wpautop($message_post); //add HTML P tag on message for Email to create Empty Sapce.
			$post_array_ids = isset($_POST['rac_email_row_ids']) ? wc_clean(wp_unslash($_POST['rac_email_row_ids'])) : '';
			$template_coupon = isset($_POST['rac_template_coupon']) ? wc_clean(wp_unslash($_POST['rac_template_coupon'])) : '';
			$template_coupon_mode = isset($_POST['rac_template_coupon_mode']) ? wc_clean(wp_unslash($_POST['rac_template_coupon_mode'])) : '';
			$row_id_array = array_filter(explode(',', $post_array_ids));
			$mail_template_id_post = isset($_POST['post_ID']) ? wc_clean(wp_unslash(( $_POST['post_ID'] ))) : '';
			if (rac_check_is_array($row_id_array)) {
				foreach ($row_id_array as $row_id) {
					$each_cart = fp_rac_create_cart_list_obj($row_id);
					$email_old_template_id = get_post_meta($mail_template_id_post, 'rac_old_template_id', true);
					$fp_rac_lang = $each_cart->wpml_lang;
					fp_rac_wpml_switch_lang($fp_rac_lang);
					//For Member
					if (is_object($each_cart)) {
						$cart_array = fp_rac_format_cart_details($each_cart->cart_details, $each_cart);
						$cart_url = rac_get_page_permalink_dependencies('cart');
						if ('0' != $each_cart->user_id && 'old_order' != $each_cart->user_id) {
							$urltoclick = esc_url_raw(add_query_arg(array( 'abandon_cart' => $each_cart->id, 'email_template' => $mail_template_id_post ), $cart_url));
							$user = get_userdata($each_cart->user_id);
							$to = $user->user_email;
							$firstname = $user->user_firstname;
							$lastname = $user->user_lastname;
						} elseif ('0' == $each_cart->user_id && empty($each_cart->ip_address)) {
							$urltoclick = esc_url_raw(add_query_arg(array( 'abandon_cart' => $each_cart->id, 'email_template' => $mail_template_id_post, 'guest' => 'yes' ), $cart_url));
							$order_object = fp_rac_format_cart_details($each_cart->cart_details, $each_cart);
							$to = $order_object->billing_email;
							$firstname = $order_object->billing_firstname;
							$lastname = $order_object->billing_lastname;
						} elseif ('0' == $each_cart->user_id && !empty($each_cart->ip_address)) {
							$urltoclick = esc_url_raw(add_query_arg(array( 'abandon_cart' => $each_cart->id, 'email_template' => $mail_template_id_post, 'guest' => 'yes' ), $cart_url));
							$order_object = fp_rac_format_cart_details($each_cart->cart_details, $each_cart);
							$to = $order_object['visitor_mail'];
							$firstname = $order_object['first_name'];
							$lastname = $order_object['last_name'];
						} elseif ('old_order' == $each_cart->user_id && empty($each_cart->ip_address)) {
							$urltoclick = esc_url_raw(add_query_arg(array( 'abandon_cart' => $each_cart->id, 'email_template' => $mail_template_id_post, 'old_order' => 'yes' ), $cart_url));
							$old_order_obj = new FP_RAC_Previous_Order_Data($each_cart);
							$to = $old_order_obj->get_billing_email();
							$firstname = $old_order_obj->get_billing_firstname();
							$lastname = $old_order_obj->get_billing_lastname();
						}

						$check_email_restrict = fp_rac_common_custom_restrict($to, 'email');
						$check_unsub_restrict = fp_rac_check_email_subscribed($to);

						if ($check_email_restrict && $check_unsub_restrict) {
							$sent_mail_templates = maybe_unserialize($each_cart->mail_template_id);
							if (!is_array($sent_mail_templates)) {
								$sent_mail_templates = array(); // to avoid mail sent/not sent problem for serialization on store
							}
							/*
							 * Start create message for email.
							 *
							 */
							$message = fp_get_wpml_text('rac_template_' . $email_old_template_id . '_message', $each_cart->wpml_lang, $message_post);

							if (strpos($message, '{rac.coupon}')) {
								require_once RAC_PLUGIN_PATH . '/inc/fp-rac-coupon.php';
								$coupon_details = FP_RAC_Coupon::get_coupon_details($to, $each_cart->cart_abandon_time, $mail_template_id_post, $template_coupon, $template_coupon_mode);
								update_post_meta($each_cart->id, 'rac_cart_coupon_code', $coupon_details['code']);

								$message = str_replace('{rac.coupon}', $coupon_details['code'], $message); //replacing shortcode with coupon code
								$message = str_replace('{rac.coupon_expired_date}', $coupon_details['expiry_date'], $message); //replacing shortcode with coupon expiry date

								$urltoclick = esc_url_raw(add_query_arg(array( 'auto_apply_coupon' => 'yes' ), $urltoclick));
							}

							/**
							 * This hook is used alter the redirect URL.
							 * 
							 * @since 1.0.0
							 */
							$url_to_click = apply_filters('fp_rac_redirect_url', $urltoclick, $each_cart->id, $each_cart);
							$url_to_click = fp_rac_wpml_convert_url($url_to_click, $each_cart->wpml_lang);
							$link_options = get_option('rac_cart_link_options');
							if ('1' == $link_options) {
								$url_to_click = '<a class="fp-rac-email-cart-link"  href="' . $url_to_click . '">' . fp_get_wpml_text('rac_template_' . $email_old_template_id . '_anchor_text', $each_cart->wpml_lang, $anchor_text_post) . '</a>';
							} elseif ('2' == $link_options) {
								$url_to_click = $url_to_click;
							} elseif ('3' == $link_options) {
								$cart_Text = fp_get_wpml_text('rac_template_' . $email_old_template_id . '_anchor_text', $each_cart->wpml_lang, $anchor_text_post);
								$url_to_click = rac_cart_link_button_mode($url_to_click, $cart_Text);
							} else {
								$cart_Text = fp_get_wpml_text('rac_template_' . $email_old_template_id . '_anchor_text', $each_cart->wpml_lang, $anchor_text_post);
								$url_to_click = rac_cart_link_image_mode($url_to_click, $cart_Text);
							}

							$unsublink = fp_rac_get_unsubscribe($to, $fp_rac_lang);
							$date = date_i18n(rac_date_format(), $each_cart->cart_abandon_time);
							$time = date_i18n(rac_time_format(), $each_cart->cart_abandon_time);
							$tablecheckproduct = FP_RAC_Polish_Product_Info::fp_rac_extract_cart_details($each_cart, true);

							$find_array = array( '{rac.cartlink}', '{rac.date}', '{rac.time}', '{rac.firstname}', '{rac.lastname}', '{rac.Productinfo}', '{rac_unsubscribe}' );
							/**
							 * This hook is used alter the find manual email short codes.
							 * 
							 * @since 1.0.0
							 */
							$find_array = apply_filters('rac_find_manual_email_shortcodes_array', $find_array);
							$replace_array = array( $url_to_click, $date, $time, $firstname, $lastname, $tablecheckproduct, $unsublink );
							/**
							 * This hook is used alter the replace manual email short codes.
							 * 
							 * @since 1.0.0
							 */
							$replace_array = apply_filters('rac_replace_manual_email_shortcodes_array', $replace_array);

							$message = str_replace($find_array, $replace_array, $message);
							$message = rac_shortcode_in_subject($firstname, $lastname, $message, $each_cart); // added shortcode replacing from subject content to message content
							$message = rac_unsubscription_shortcode($to, $message, $each_cart->wpml_lang);
							add_filter('woocommerce_email_footer_text', 'rac_footer_email_customization');
							$message = do_shortcode($message); //shortcode feature
							/*
							 * End create message for email.
							 *
							 */
							$current_time = current_time('timestamp');
							if ('' == $mail_logo_added) {
								$logo = '';
							} else {
								$logo = '<table><tr><td align="center" valign="top"><p class="fp-rac-email-logo-wrapper"><img class="fp-rac-email-logo" src="' . esc_url($mail_logo_added) . '" /></p></td></tr></table>'; // mail uploaded
							}
							$subject = fp_get_wpml_text('rac_template_' . $email_old_template_id . '_subject', $each_cart->wpml_lang, $subject_post);
							$subject = rac_shortcode_in_subject($firstname, $lastname, $subject, $each_cart);
							// mail send plain or html
							$woo_temp_msg = rac_email_woocommerce_html($mail_template_post, $subject, $message, $logo);
							// mail send plain or html
							$compact = array( $sender_option_post, $from_name_post, $from_email_post, $each_cart->wpml_lang );
							$headers = rac_format_email_headers($compact, $bcc_post);

							$custom_css_post .= fp_rac_get_template_html('email-abandoned-cart-css.php');
							$woo_temp_msg = rac_email_inline_style($woo_temp_msg, $custom_css_post);
							/**
							 * This hook is used to do extra action before send abandoned cart email.
							 * 
							 * @since 1.0.0
							 */
							do_action('rac_before_send_abandoned_cart_email', $woo_temp_msg, $each_cart, $mail_template_id_post);

							if (rac_send_mail($to, $subject, $woo_temp_msg, $headers, $mail_template_post, $compact)) {
								$sent_mail_templates[] = $email_old_template_id;
								$store_template_id = maybe_serialize(array_filter($sent_mail_templates));
								update_post_meta($row_id, 'rac_cart_email_template_id', $store_template_id);
								//add to mail log
								$template_used = $mail_template_id_post . '- Manual';
								$args = array(
									'rac_email_id' => $to,
									'rac_date_time' => $current_time,
									'rac_template_used' => $template_used,
									'rac_cart_id' => $each_cart->id,
								);
								//insert emaillog post
								fp_rac_insert_emaillog_post($args);
								//count mail count
								FP_RAC_Counter::rac_do_mail_count();
								//count of sending each mail template count
								FP_RAC_Counter::email_count_by_template($mail_template_id_post);
							}
						}
					}
					fp_rac_wpml_switch_lang();
				}
			}
			echo 'sent';
			exit();
		}
	}

	FP_RAC_Manual_Mail::init();
}

File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com