HEX
Server: Apache
System: Linux efa57bbe-abb1-400d-2985-3b056fbc2701.secureserver.net 6.1.147-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jul 24 12:33:32 EDT 2025 x86_64
User: root (0)
PHP: 8.0.30.4
Disabled: NONE
Upload Files
File: /var/www/wp-content/mu-plugins/vendor/godaddy/mwc-core/src/WooCommerce/Emails/ItemShippedEmail.php
<?php

namespace GoDaddy\WordPress\MWC\Core\WooCommerce\Emails;

use Exception;
use GoDaddy\WordPress\MWC\Common\Configuration\Configuration;
use GoDaddy\WordPress\MWC\Common\Register\Register;
use GoDaddy\WordPress\MWC\Common\Repositories\WooCommerce\OrdersRepository;
use WC_Email;
use WC_Order;

/**
 * Item Shipped Email class.
 */
class ItemShippedEmail extends WC_Email
{
    /** @var string the email ID */
    public $id = 'mwc_item_shipped_email';

    /** @var bool true when the email notification is sent to customers */
    protected $customer_email = true;

    /**
     * Item Shipped Email constructor.
     *
     * @throws Exception
     */
    public function __construct()
    {
        parent::__construct();

        $this->title = __('Item shipped', 'mwc-core');
        $this->description = __('Item shipped emails are sent to customers when tracking information is added for one or more items in their orders.', 'mwc-core');

        $this->addHooks();
    }

    /**
     * Adds the hook to trigger the email when tracking information is added.
     *
     * @throws Exception
     */
    protected function addHooks()
    {
        Register::action()
            ->setGroup('mwc_shipment_tracking_information_added')
            ->setHandler([$this, 'trigger'])
            ->execute();
    }

    /**
     * Gets the email default subject.
     */
    public function get_default_subject()
    {
        return __('An item from {site_title} order #{order_number} has shipped!', 'mwc-core');
    }

    /**
     * Gets the email default heading.
     */
    public function get_default_heading()
    {
        return __('Your package is on the way!', 'mwc-core');
    }

    /**
     * Gets the email default additional content.
     */
    public function get_default_additional_content()
    {
        return __('Please note that it may take some time for the carrier to update shipment tracking information.', 'mwc-core');
    }

    /**
     * Gets the content for the HTML version of the email.
     */
    public function get_content_html()
    {
        // allow merchants to overwrite the template by placing a copy of it the mwc subfolder inside their themes folder
        return wc_get_template_html('emails/customer-item-shipped.php', $this->getTemplateData(), 'mwc/', Configuration::get('mwc.directory').'/templates/woocommerce/');
    }

    /**
     * Gets the content for the plain version of the email.
     */
    public function get_content_plain()
    {
        // allow merchants to overwrite the template by placing a copy of it the mwc subfolder inside their themes folder
        return wc_get_template_html('emails/plain/customer-item-shipped.php', $this->getTemplateData(true), 'mwc/', Configuration::get('mwc.directory').'/templates/woocommerce/');
    }

    /**
     * Gets the data for the email templates.
     *
     * @param bool $plainText whether or not this the plain text version of the email
     * @return array
     */
    protected function getTemplateData(bool $plainText = false) : array
    {
        return [
            'order'              => $this->object,
            'email_heading'      => $this->get_heading(),
            'additional_content' => $this->get_additional_content(),
            'sent_to_admin'      => false,
            'plain_text'         => $plainText,
            'email'              => $this,
        ];
    }

    /**
     * Prepares the email and sends the message if enabled.
     *
     * @see WC_Email_Customer_Completed_Order::trigger()
     * @internal
     *
     * @param int $orderId the order ID
     * @param WC_Order|false $wcOrder WC order object
     * @throws Exception
     */
    public function trigger(int $orderId, $wcOrder = false)
    {
        $this->setup_locale();

        if ($orderId && (! $wcOrder || ! is_a($wcOrder, 'WC_Order'))) {
            $wcOrder = OrdersRepository::get($orderId);
        }

        if ($wcOrder && is_a($wcOrder, 'WC_Order')) {
            $this->object = $wcOrder;
            $this->recipient = $this->object->get_billing_email();
            $this->placeholders['{order_date}'] = wc_format_datetime($this->object->get_date_created());
            $this->placeholders['{order_number}'] = $this->object->get_order_number();
        }

        if ($this->is_enabled() && $this->get_recipient()) {
            $this->send($this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments());
        }

        $this->restore_locale();
    }
}