2012-09-17 00:53:17 +00:00
< ? php
2018-03-07 17:27:43 +00:00
/**
* Class WC_Email_New_Order file
*
* @ package WooCommerce\Emails
*/
2013-02-20 17:14:46 +00:00
2014-09-20 19:30:40 +00:00
if ( ! defined ( 'ABSPATH' ) ) {
2015-11-02 14:45:24 +00:00
exit ;
2014-09-20 19:30:40 +00:00
}
2013-02-20 17:14:46 +00:00
2013-08-02 10:17:56 +00:00
if ( ! class_exists ( 'WC_Email_New_Order' ) ) :
2017-06-02 17:25:05 +00:00
/**
2018-03-07 14:15:17 +00:00
* New Order Email .
2017-06-02 17:25:05 +00:00
*
2018-03-07 14:15:17 +00:00
* An email sent to the admin when a new order is received / paid for .
2016-01-05 18:38:19 +00:00
*
2018-03-07 14:15:17 +00:00
* @ class WC_Email_New_Order
* @ version 2.0 . 0
2020-08-05 16:36:24 +00:00
* @ package WooCommerce\Classes\Emails
2018-03-07 14:15:17 +00:00
* @ extends WC_Email
2012-09-17 00:53:17 +00:00
*/
2018-03-07 14:15:17 +00:00
class WC_Email_New_Order extends WC_Email {
/**
* Constructor .
*/
public function __construct () {
$this -> id = 'new_order' ;
$this -> title = __ ( 'New order' , 'woocommerce' );
$this -> description = __ ( 'New order emails are sent to chosen recipient(s) when a new order is received.' , 'woocommerce' );
$this -> template_html = 'emails/admin-new-order.php' ;
$this -> template_plain = 'emails/plain/admin-new-order.php' ;
$this -> placeholders = array (
'{order_date}' => '' ,
'{order_number}' => '' ,
);
// Triggers for this email.
add_action ( 'woocommerce_order_status_pending_to_processing_notification' , array ( $this , 'trigger' ), 10 , 2 );
add_action ( 'woocommerce_order_status_pending_to_completed_notification' , array ( $this , 'trigger' ), 10 , 2 );
add_action ( 'woocommerce_order_status_pending_to_on-hold_notification' , array ( $this , 'trigger' ), 10 , 2 );
add_action ( 'woocommerce_order_status_failed_to_processing_notification' , array ( $this , 'trigger' ), 10 , 2 );
add_action ( 'woocommerce_order_status_failed_to_completed_notification' , array ( $this , 'trigger' ), 10 , 2 );
add_action ( 'woocommerce_order_status_failed_to_on-hold_notification' , array ( $this , 'trigger' ), 10 , 2 );
2018-08-31 16:31:16 +00:00
add_action ( 'woocommerce_order_status_cancelled_to_processing_notification' , array ( $this , 'trigger' ), 10 , 2 );
add_action ( 'woocommerce_order_status_cancelled_to_completed_notification' , array ( $this , 'trigger' ), 10 , 2 );
add_action ( 'woocommerce_order_status_cancelled_to_on-hold_notification' , array ( $this , 'trigger' ), 10 , 2 );
2018-03-07 14:15:17 +00:00
// Call parent constructor.
parent :: __construct ();
// Other settings.
$this -> recipient = $this -> get_option ( 'recipient' , get_option ( 'admin_email' ) );
2017-02-10 13:09:37 +00:00
}
2018-03-07 14:15:17 +00:00
/**
* Get email subject .
*
* @ since 3.1 . 0
* @ return string
*/
public function get_default_subject () {
2018-09-12 09:30:53 +00:00
return __ ( '[{site_title}]: New order #{order_number}' , 'woocommerce' );
2012-09-17 00:53:17 +00:00
}
2012-11-27 16:22:47 +00:00
2018-03-07 14:15:17 +00:00
/**
* Get email heading .
*
* @ since 3.1 . 0
* @ return string
*/
public function get_default_heading () {
2018-09-12 09:30:53 +00:00
return __ ( 'New Order: #{order_number}' , 'woocommerce' );
2014-05-30 09:42:47 +00:00
}
2012-09-17 00:53:17 +00:00
2018-03-07 14:15:17 +00:00
/**
* Trigger the sending of this email .
*
2018-03-07 17:27:43 +00:00
* @ param int $order_id The order ID .
* @ param WC_Order | false $order Order object .
2018-03-07 14:15:17 +00:00
*/
2021-01-19 20:51:31 +00:00
public function trigger ( $order_id , $order = false ) {
2018-03-07 14:15:17 +00:00
$this -> setup_locale ();
if ( $order_id && ! is_a ( $order , 'WC_Order' ) ) {
$order = wc_get_order ( $order_id );
}
if ( is_a ( $order , 'WC_Order' ) ) {
$this -> object = $order ;
$this -> placeholders [ '{order_date}' ] = wc_format_datetime ( $this -> object -> get_date_created () );
$this -> placeholders [ '{order_number}' ] = $this -> object -> get_order_number ();
2021-01-13 22:13:57 +00:00
$email_already_sent = $order -> get_meta ( '_new_order_email_sent' );
}
2021-01-19 21:07:52 +00:00
/**
* Controls if new order emails can be resend multiple times .
*
* @ since 5.0 . 0
2021-03-12 19:59:18 +00:00
* @ param bool $allows Defaults to false .
2021-01-19 21:07:52 +00:00
*/
2021-01-19 20:51:31 +00:00
if ( 'true' === $email_already_sent && ! apply_filters ( 'woocommerce_new_order_email_allows_resend' , false ) ) {
2021-01-13 22:13:57 +00:00
return ;
2018-03-07 14:15:17 +00:00
}
if ( $this -> is_enabled () && $this -> get_recipient () ) {
$this -> send ( $this -> get_recipient (), $this -> get_subject (), $this -> get_content (), $this -> get_headers (), $this -> get_attachments () );
2021-01-13 22:13:57 +00:00
$order -> update_meta_data ( '_new_order_email_sent' , 'true' );
$order -> save ();
2018-03-07 14:15:17 +00:00
}
$this -> restore_locale ();
}
2012-09-17 00:53:17 +00:00
2018-03-07 14:15:17 +00:00
/**
* Get content html .
*
* @ return string
*/
public function get_content_html () {
return wc_get_template_html (
2019-03-04 16:38:18 +00:00
$this -> template_html ,
array (
'order' => $this -> object ,
'email_heading' => $this -> get_heading (),
'additional_content' => $this -> get_additional_content (),
'sent_to_admin' => true ,
'plain_text' => false ,
'email' => $this ,
2018-03-07 14:15:17 +00:00
)
);
}
2012-11-27 16:22:47 +00:00
2018-03-07 14:15:17 +00:00
/**
* Get content plain .
*
* @ return string
*/
public function get_content_plain () {
return wc_get_template_html (
2019-03-04 16:38:18 +00:00
$this -> template_plain ,
array (
'order' => $this -> object ,
'email_heading' => $this -> get_heading (),
'additional_content' => $this -> get_additional_content (),
'sent_to_admin' => true ,
'plain_text' => true ,
'email' => $this ,
2018-03-07 14:15:17 +00:00
)
);
}
2012-11-27 16:22:47 +00:00
2019-03-04 16:56:40 +00:00
/**
* Default content to show below main email content .
*
2019-05-21 20:53:03 +00:00
* @ since 3.7 . 0
2019-03-04 16:56:40 +00:00
* @ return string
*/
public function get_default_additional_content () {
2019-08-20 14:54:21 +00:00
return __ ( 'Congratulations on the sale.' , 'woocommerce' );
2019-03-04 16:56:40 +00:00
}
2018-03-07 14:15:17 +00:00
/**
* Initialise settings form fields .
*/
public function init_form_fields () {
2019-03-04 16:39:49 +00:00
/* translators: %s: list of placeholders */
2019-07-04 09:33:05 +00:00
$placeholder_text = sprintf ( __ ( 'Available placeholders: %s' , 'woocommerce' ), '<code>' . implode ( '</code>, <code>' , array_keys ( $this -> placeholders ) ) . '</code>' );
2018-03-07 14:15:17 +00:00
$this -> form_fields = array (
2019-12-20 16:51:26 +00:00
'enabled' => array (
2018-03-07 14:15:17 +00:00
'title' => __ ( 'Enable/Disable' , 'woocommerce' ),
'type' => 'checkbox' ,
'label' => __ ( 'Enable this email notification' , 'woocommerce' ),
'default' => 'yes' ,
),
2019-12-20 16:51:26 +00:00
'recipient' => array (
2018-03-07 14:15:17 +00:00
'title' => __ ( 'Recipient(s)' , 'woocommerce' ),
'type' => 'text' ,
2018-03-07 17:27:43 +00:00
/* translators: %s: WP admin email */
2018-03-07 14:15:17 +00:00
'description' => sprintf ( __ ( 'Enter recipients (comma separated) for this email. Defaults to %s.' , 'woocommerce' ), '<code>' . esc_attr ( get_option ( 'admin_email' ) ) . '</code>' ),
'placeholder' => '' ,
'default' => '' ,
'desc_tip' => true ,
),
2019-12-20 16:51:26 +00:00
'subject' => array (
2018-03-07 14:15:17 +00:00
'title' => __ ( 'Subject' , 'woocommerce' ),
'type' => 'text' ,
'desc_tip' => true ,
2019-03-04 16:39:49 +00:00
'description' => $placeholder_text ,
2018-03-07 14:15:17 +00:00
'placeholder' => $this -> get_default_subject (),
'default' => '' ,
),
2019-12-20 16:51:26 +00:00
'heading' => array (
2018-03-07 14:15:17 +00:00
'title' => __ ( 'Email heading' , 'woocommerce' ),
'type' => 'text' ,
'desc_tip' => true ,
2019-03-04 16:39:49 +00:00
'description' => $placeholder_text ,
2018-03-07 14:15:17 +00:00
'placeholder' => $this -> get_default_heading (),
'default' => '' ,
),
2019-03-04 16:39:49 +00:00
'additional_content' => array (
'title' => __ ( 'Additional content' , 'woocommerce' ),
2019-08-07 15:49:38 +00:00
'description' => __ ( 'Text to appear below the main email content.' , 'woocommerce' ) . ' ' . $placeholder_text ,
2019-03-04 16:39:49 +00:00
'css' => 'width:400px; height: 75px;' ,
'placeholder' => __ ( 'N/A' , 'woocommerce' ),
'type' => 'textarea' ,
'default' => $this -> get_default_additional_content (),
'desc_tip' => true ,
),
2019-12-20 16:51:26 +00:00
'email_type' => array (
2018-03-07 14:15:17 +00:00
'title' => __ ( 'Email type' , 'woocommerce' ),
'type' => 'select' ,
'description' => __ ( 'Choose which format of email to send.' , 'woocommerce' ),
'default' => 'html' ,
'class' => 'email_type wc-enhanced-select' ,
'options' => $this -> get_email_type_options (),
'desc_tip' => true ,
),
);
}
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_New_Order ();