2012-09-17 00:53:17 +00:00
< ? php
2013-02-20 17:14:46 +00:00
2014-09-20 19:30:40 +00:00
if ( ! defined ( 'ABSPATH' ) ) {
exit ; // Exit if accessed directly
}
2013-02-20 17:14:46 +00:00
2017-02-16 11:46:01 +00:00
if ( ! class_exists ( 'WC_Email_Customer_Completed_Order' , false ) ) :
2013-08-02 10:17:56 +00:00
2012-09-17 00:53:17 +00:00
/**
2015-11-03 13:31:20 +00:00
* Customer Completed Order Email .
2012-09-17 00:53:17 +00:00
*
* Order complete emails are sent to the customer when the order is marked complete and usual indicates that the order has been shipped .
*
2015-03-27 15:15:40 +00:00
* @ class WC_Email_Customer_Completed_Order
* @ version 2.0 . 0
* @ package WooCommerce / Classes / Emails
* @ author WooThemes
* @ extends WC_Email
2012-09-17 00:53:17 +00:00
*/
class WC_Email_Customer_Completed_Order extends WC_Email {
/**
2015-11-03 13:31:20 +00:00
* Constructor .
2012-09-17 00:53:17 +00:00
*/
2016-04-26 16:26:17 +00:00
public function __construct () {
2012-11-27 16:22:47 +00:00
2015-03-27 15:15:40 +00:00
$this -> id = 'customer_completed_order' ;
2015-11-02 16:27:00 +00:00
$this -> customer_email = true ;
2017-05-15 21:34:37 +00:00
2015-03-27 15:15:40 +00:00
$this -> title = __ ( 'Completed order' , 'woocommerce' );
$this -> description = __ ( 'Order complete emails are sent to customers when their orders are marked completed and usually indicate that their orders have been shipped.' , 'woocommerce' );
2012-11-27 16:22:47 +00:00
2015-03-27 15:15:40 +00:00
$this -> template_html = 'emails/customer-completed-order.php' ;
$this -> template_plain = 'emails/plain/customer-completed-order.php' ;
2012-11-27 16:22:47 +00:00
2012-09-17 00:53:17 +00:00
// Triggers for this email
2017-02-01 16:54:47 +00:00
add_action ( 'woocommerce_order_status_completed_notification' , array ( $this , 'trigger' ), 10 , 2 );
2012-11-27 16:22:47 +00:00
2013-01-10 15:17:33 +00:00
// Call parent constuctor
parent :: __construct ();
2017-05-16 01:09:24 +00:00
}
2012-09-17 00:53:17 +00:00
/**
2017-02-10 13:09:37 +00:00
* Trigger the sending of this email .
2016-01-05 18:14:06 +00:00
*
2017-02-10 13:09:37 +00:00
* @ param int $order_id The order ID .
* @ param WC_Order $order Order object .
2012-09-17 00:53:17 +00:00
*/
2017-02-10 13:09:37 +00:00
public function trigger ( $order_id , $order = false ) {
2017-02-17 18:10:15 +00:00
if ( $order_id && ! is_a ( $order , 'WC_Order' ) ) {
2017-02-10 13:09:37 +00:00
$order = wc_get_order ( $order_id );
}
if ( is_a ( $order , 'WC_Order' ) ) {
2017-02-01 16:54:47 +00:00
$this -> object = $order ;
2016-08-05 15:11:23 +00:00
$this -> recipient = $this -> object -> get_billing_email ();
2012-11-27 16:22:47 +00:00
2014-05-30 09:42:47 +00:00
$this -> find [ 'order-date' ] = '{order_date}' ;
$this -> find [ 'order-number' ] = '{order_number}' ;
2014-09-20 19:30:40 +00:00
2017-03-10 16:29:15 +00:00
$this -> replace [ 'order-date' ] = wc_format_datetime ( $this -> object -> get_date_created () );
2014-05-30 09:42:47 +00:00
$this -> replace [ 'order-number' ] = $this -> object -> get_order_number ();
2012-09-17 00:53:17 +00:00
}
2012-11-27 16:22:47 +00:00
2014-05-30 09:42:47 +00:00
if ( ! $this -> is_enabled () || ! $this -> get_recipient () ) {
2012-09-17 00:53:17 +00:00
return ;
2014-05-30 09:42:47 +00:00
}
2012-11-27 16:22:47 +00:00
2017-06-02 17:25:05 +00:00
$this -> setup_locale ();
2012-09-17 00:53:17 +00:00
$this -> send ( $this -> get_recipient (), $this -> get_subject (), $this -> get_content (), $this -> get_headers (), $this -> get_attachments () );
2017-06-02 17:25:05 +00:00
$this -> restore_locale ();
2012-09-17 00:53:17 +00:00
}
2012-11-27 16:22:47 +00:00
2012-09-17 00:53:17 +00:00
/**
2016-01-05 18:14:06 +00:00
* Get email subject .
2012-11-27 16:22:47 +00:00
*
2017-06-02 17:25:05 +00:00
* @ since 3.1 . 0
2012-09-17 00:53:17 +00:00
* @ return string
*/
2017-06-02 17:25:05 +00:00
public function get_default_subject () {
return __ ( 'Your {site_title} order from {order_date} is complete' , 'woocommerce' );
2012-09-17 00:53:17 +00:00
}
/**
2016-01-05 18:14:06 +00:00
* Get email heading .
2012-11-27 16:22:47 +00:00
*
2017-06-02 17:25:05 +00:00
* @ since 3.1 . 0
2012-09-17 00:53:17 +00:00
* @ return string
*/
2017-06-02 17:25:05 +00:00
public function get_default_heading () {
return __ ( 'Your order is complete' , 'woocommerce' );
2012-09-17 00:53:17 +00:00
}
/**
2016-01-05 18:14:06 +00:00
* Get content html .
2012-11-27 16:22:47 +00:00
*
2012-09-17 00:53:17 +00:00
* @ access public
* @ return string
*/
2016-04-26 16:26:17 +00:00
public function get_content_html () {
2015-12-04 13:39:57 +00:00
return wc_get_template_html ( $this -> template_html , array (
2015-03-27 15:15:40 +00:00
'order' => $this -> object ,
2014-01-08 15:04:49 +00:00
'email_heading' => $this -> get_heading (),
'sent_to_admin' => false ,
2015-11-01 04:04:59 +00:00
'plain_text' => false ,
2016-08-27 01:46:45 +00:00
'email' => $this ,
2012-09-17 00:53:17 +00:00
) );
}
2012-11-27 16:22:47 +00:00
2012-09-17 00:53:17 +00:00
/**
2015-07-16 19:55:48 +00:00
* Get content plain .
2012-11-27 16:22:47 +00:00
*
2012-09-17 00:53:17 +00:00
* @ return string
*/
2016-04-26 16:26:17 +00:00
public function get_content_plain () {
2015-12-04 13:39:57 +00:00
return wc_get_template_html ( $this -> template_plain , array (
2015-03-27 15:15:40 +00:00
'order' => $this -> object ,
2014-01-08 15:04:49 +00:00
'email_heading' => $this -> get_heading (),
'sent_to_admin' => false ,
2015-11-30 15:16:23 +00:00
'plain_text' => true ,
2016-08-27 01:46:45 +00:00
'email' => $this ,
2012-09-17 00:53:17 +00:00
) );
}
2012-11-27 16:22:47 +00:00
2015-02-13 14:16:58 +00:00
/**
2015-07-16 19:55:48 +00:00
* Initialise settings form fields .
2015-02-13 14:16:58 +00:00
*/
2016-04-26 16:26:17 +00:00
public function init_form_fields () {
2015-02-13 14:16:58 +00:00
$this -> form_fields = array (
2012-09-17 00:53:17 +00:00
'enabled' => array (
2015-03-27 15:15:40 +00:00
'title' => __ ( 'Enable/Disable' , 'woocommerce' ),
'type' => 'checkbox' ,
'label' => __ ( 'Enable this email notification' , 'woocommerce' ),
2016-08-27 01:46:45 +00:00
'default' => 'yes' ,
2012-09-17 00:53:17 +00:00
),
'subject' => array (
2015-03-27 15:15:40 +00:00
'title' => __ ( 'Subject' , 'woocommerce' ),
'type' => 'text' ,
2017-06-14 16:50:17 +00:00
'desc_tip' => true ,
/* translators: %s: list of placeholders */
'description' => sprintf ( __ ( 'Available placeholders: %s' , 'woocommerce' ), '<code>{site_title}, {order_date}, {order_number}</code>' ),
2017-06-14 16:13:43 +00:00
'placeholder' => $this -> get_default_subject (),
2015-11-03 14:59:48 +00:00
'default' => '' ,
2012-09-17 00:53:17 +00:00
),
'heading' => array (
2016-10-12 10:16:30 +00:00
'title' => __ ( 'Email heading' , 'woocommerce' ),
2015-03-27 15:15:40 +00:00
'type' => 'text' ,
2017-06-14 16:50:17 +00:00
'desc_tip' => true ,
/* translators: %s: list of placeholders */
'description' => sprintf ( __ ( 'Available placeholders: %s' , 'woocommerce' ), '<code>{site_title}, {order_date}, {order_number}</code>' ),
2017-06-14 16:13:43 +00:00
'placeholder' => $this -> get_default_heading (),
2015-11-03 14:59:48 +00:00
'default' => '' ,
2012-09-17 00:53:17 +00:00
),
'email_type' => array (
2016-10-12 10:16:30 +00:00
'title' => __ ( 'Email type' , 'woocommerce' ),
2015-03-27 15:15:40 +00:00
'type' => 'select' ,
'description' => __ ( 'Choose which format of email to send.' , 'woocommerce' ),
'default' => 'html' ,
'class' => 'email_type wc-enhanced-select' ,
2015-11-03 14:59:48 +00:00
'options' => $this -> get_email_type_options (),
2016-08-27 01:46:45 +00:00
'desc_tip' => true ,
),
2012-09-17 00:53:17 +00:00
);
2015-02-13 14:16:58 +00:00
}
2013-08-02 10:17:56 +00:00
}
endif ;
2014-09-20 19:30:40 +00:00
return new WC_Email_Customer_Completed_Order ();