<?php /** * functionality of the plugin. * @author Varun Sridharan <varunsridharan23@gmail.com> */ if ( ! defined( 'WPINC' ) ) { die; } class WooCommerce_Quick_Donation_Emails_Functions { public $remove_emails; private $remove_status; function __construct(){ add_action('woocommerce_order_status_on-hold',array($this,'check_order'),1); add_action('woocommerce_order_status_pending',array($this,'check_order'),1); add_action('woocommerce_order_status_processing',array($this,'check_order'),1); add_action('woocommerce_order_status_completed',array($this,'check_order'),1); add_action('woocommerce_order_status_failed',array($this,'check_order'),1); add_action( 'woocommerce_email',array($this,'remove_email_actions'),1); // Triggers for this email add_action( 'woocommerce_donation_email_header', array( $this, 'email_header' ) ); add_action( 'woocommerce_donation_email_footer', array( $this, 'email_footer' ) ); //add_filter( 'woocommerce_template_directory', array( $this, 'change_dir'),2,2); } /** * Get the email header. * * @param mixed $email_heading heading for the email */ public function email_header( $email_heading ) { wc_get_template( 'emails/donation-email-header.php', array( 'email_heading' => $email_heading ) ); } /** * Get the email footer. */ public function email_footer() { wc_get_template( 'emails/donation-email-footer.php'); } public function change_dir($dir,$emailtemplate){ $template = WC_QD()->f()->get_template_list(); foreach($template as $temp){ if(in_array($emailtemplate,$temp)){ $dir = $dir.'/donation'; } } return $dir; } public function remove_email_actions($e){ if($this->remove_emails){ $this->remove_default_new_email($e->emails); $this->remove_default_processing_email($e->emails); $this->add_donation_new_email($e->emails); $this->add_donation_processing_email($e->emails); } } public function check_order($order_id){ if(! WC_QD()->db()->_is_donation($order_id)){return;} $this->remove_emails = true; } private function remove_default_processing_email($email_class){ remove_action('woocommerce_order_status_pending_to_processing_notification', array( $email_class['WC_Email_Customer_Processing_Order'], 'trigger')); remove_action('woocommerce_order_status_pending_to_on-hold_notification', array( $email_class['WC_Email_Customer_Processing_Order'], 'trigger')); } private function remove_default_new_email($email_class){ remove_action('woocommerce_order_status_pending_to_processing_notification', array( $email_class['WC_Email_New_Order'],'trigger')); remove_action('woocommerce_order_status_pending_to_completed_notification', array( $email_class['WC_Email_New_Order'],'trigger')); remove_action('woocommerce_order_status_pending_to_on-hold_notification', array( $email_class['WC_Email_New_Order'],'trigger')); remove_action('woocommerce_order_status_failed_to_processing_notification', array( $email_class['WC_Email_New_Order'],'trigger')); remove_action('woocommerce_order_status_failed_to_completed_notification', array( $email_class['WC_Email_New_Order'],'trigger')); remove_action('woocommerce_order_status_failed_to_on-hold_notification', array( $email_class['WC_Email_New_Order'],'trigger')); } private function add_donation_new_email($email_class){ add_action('woocommerce_order_status_pending_to_processing_notification', array($email_class[WC_QD_DB.'new_donation_email'],'trigger')); add_action('woocommerce_order_status_pending_to_completed_notification', array($email_class[WC_QD_DB.'new_donation_email'],'trigger')); add_action('woocommerce_order_status_pending_to_on-hold_notification', array($email_class[WC_QD_DB.'new_donation_email'],'trigger')); add_action('woocommerce_order_status_failed_to_processing_notification', array($email_class[WC_QD_DB.'new_donation_email'],'trigger')); add_action('woocommerce_order_status_failed_to_completed_notification', array($email_class[WC_QD_DB.'new_donation_email'],'trigger')); add_action('woocommerce_order_status_failed_to_on-hold_notification', array($email_class[WC_QD_DB.'new_donation_email'],'trigger')); } private function add_donation_processing_email($email_class){ add_action('woocommerce_order_status_pending_to_processing_notification', array($email_class[WC_QD_DB.'donation_processing_email'], 'trigger')); add_action('woocommerce_order_status_pending_to_on-hold_notification', array($email_class[WC_QD_DB.'donation_processing_email'], 'trigger')); } }