woocommerce-subscriptions/includes/gifting/emails/class-wcsg-email-recipient-...

134 lines
3.9 KiB
PHP

<?php
/**
* E-mails: New initial order.
*
* @package WooCommerce Subscriptions Gifting/Emails
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
/**
* Handles e-mailing of the "New Initial Order" e-mail to recipients.
*/
class WCSG_Email_Recipient_New_Initial_Order extends WC_Email {
/**
* Subscription owner name.
*
* @var string
*/
public $subscription_owner;
/**
* Array of subscription post objects.
*
* @var WP_Post[]
*/
public $subscriptions;
/**
* Recipient user ID.
*
* @var int
*/
public $wcsg_sending_recipient_email;
/**
* Create an instance of the class.
*/
public function __construct() {
$this->id = 'recipient_completed_order';
$this->title = __( 'New Initial Order - Recipient', 'woocommerce-subscriptions' );
$this->description = __( 'This email is sent to recipients notifying them of subscriptions purchased for them.', 'woocommerce-subscriptions' );
$this->customer_email = true;
$this->heading = __( 'New Order', 'woocommerce-subscriptions' );
$this->subject = __( 'Your new subscriptions at {site_title}', 'woocommerce-subscriptions' );
$this->template_html = 'emails/recipient-new-initial-order.php';
$this->template_plain = 'emails/plain/recipient-new-initial-order.php';
$this->template_base = plugin_dir_path( WC_Subscriptions::$plugin_file ) . 'templates/gifting/';
// Trigger for this email.
add_action( 'wcsg_new_order_recipient_notification', array( $this, 'trigger' ), 10, 2 );
WC_Email::__construct();
}
/**
* Trigger function.
*
* @param int $recipient_user User ID.
* @param WP_Post[] $recipient_subscriptions Array of subscription post objects.
*/
public function trigger( $recipient_user, $recipient_subscriptions ) {
if ( $recipient_user ) {
$this->object = get_user_by( 'id', $recipient_user );
$this->recipient = stripslashes( $this->object->user_email );
$subscription = wcs_get_subscription( $recipient_subscriptions[0] );
$this->subscription_owner = WCS_Gifting::get_user_display_name( $subscription->get_user_id() );
$this->subscriptions = $recipient_subscriptions;
}
if ( ! $this->is_enabled() || ! $this->get_recipient() ) {
return;
}
$this->wcsg_sending_recipient_email = $recipient_user;
$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
unset( $this->wcsg_sending_recipient_email );
}
/**
* Returns the content for the HTML version of the e-mail.
*/
public function get_content_html() {
ob_start();
wc_get_template(
$this->template_html,
array(
'email_heading' => $this->get_heading(),
'blogname' => $this->get_blogname(),
'recipient_user' => $this->object,
'subscription_purchaser' => $this->subscription_owner,
'subscriptions' => $this->subscriptions,
'sent_to_admin' => false,
'plain_text' => false,
'email' => $this,
'additional_content' => $this->get_additional_content(),
),
'',
$this->template_base
);
return ob_get_clean();
}
/**
* Returns the content for the plain text version of the e-mail.
*/
public function get_content_plain() {
ob_start();
wc_get_template(
$this->template_plain,
array(
'email_heading' => $this->get_heading(),
'blogname' => $this->get_blogname(),
'recipient_user' => $this->object,
'subscription_purchaser' => $this->subscription_owner,
'subscriptions' => $this->subscriptions,
'sent_to_admin' => false,
'plain_text' => true,
'email' => $this,
'additional_content' => $this->get_additional_content(),
),
'',
$this->template_base
);
return ob_get_clean();
}
}