class-notification-take-month-off-email.php 5.26 KB
<?php

if (!defined('ABSPATH'))
    exit; // Exit if accessed directly

/**
 *  WooCommerce Email class
 *
 * @since 0.1
 * @extends \WC_Email
 */

class WC_Notification_Take_Month_Off_Email extends WC_Email {

    /**
     * Set email defaults
     *
     * @since 0.1
     */
    public function __construct() {

        // set ID, this simply needs to be a unique name
        $this->id = 'wc_notification_take_month_off_order';

        // this is the title in WooCommerce Email settings
        $this->title = '[REIZE] Subscription On Hold';

        // this is the description in WooCommerce email settings
        $this->description = 'Send WooCommerce notification email if a subscription has been set take month off.';

        // these are the default heading and subject lines that can be overridden using the settings
        $this->heading = '[REIZE] Subscription On Hold';
        $this->subject = '[REIZE] Subscription On Hold';

        // these define the locations of the templates that this email should use, we'll just use the new order template since this email is similar
        $this->template_html = 'emails/cancelled-subscription.php';
        $this->template_plain = 'emails/plain/cancelled-subscription.php';

        // Trigger on new paid orders
        add_action('fgc_set_take_month_off', array($this, 'trigger'));
        // Call parent constructor to load any other defaults not explicity defined here
        parent::__construct();

        // this sets the recipient to the settings defined below in init_form_fields()
        $this->recipient = $this->get_option('recipient');

        // if none was entered, just use the WP admin email as a fallback
        if (!$this->recipient)
            $this->recipient = get_option('admin_email');
    }

    /**
     * trigger function.
     *
     * @access public
     * @return void
     */
    function trigger($subscription) {
        $this->object = $subscription;

        if (!is_object($subscription)) {
            _deprecated_argument(__METHOD__, '2.0', 'The subscription key is deprecated. Use a subscription post ID');
            $subscription = wcs_get_subscription_from_key($subscription);
        }
        if (!$this->is_enabled() || !$this->get_recipient()) {
            return;
        }

        update_post_meta($subscription->id, '_take_month_off_email_sent', 'true');
        $this->send($this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments());
    }

    /**
     * get_content_html function.
     *
     * @access public
     * @return string
     */
    function get_content_html() {
        ob_start();
        wc_get_template(
                $this->template_html, array(
            'subscription' => $this->object,
            'email_heading' => $this->get_heading(),
                ), '', $this->template_base
        );
        return ob_get_clean();
    }

    /**
     * get_content_plain function.
     *
     * @access public
     * @return string
     */
    function get_content_plain() {
        ob_start();
        wc_get_template(
                $this->template_plain, array(
            'subscription' => $this->object,
            'email_heading' => $this->get_heading(),
                ), '', $this->template_base
        );
        return ob_get_clean();
    }

    /**
     * Initialize Settings Form Fields
     *
     * @since 0.1
     */
    public function init_form_fields() {

        $this->form_fields = array(
            'enabled' => array(
                'title' => 'Enable/Disable',
                'type' => 'checkbox',
                'label' => 'Enable this email notification',
                'default' => 'yes'
            ),
            'recipient' => array(
                'title' => 'Recipient(s)',
                'type' => 'text',
                'description' => sprintf('Enter recipients (comma separated) for this email. Defaults to <code>%s</code>.', esc_attr(get_option('admin_email'))),
                'placeholder' => '',
                'default' => ''
            ),
            'subject' => array(
                'title' => 'Subject',
                'type' => 'text',
                'description' => sprintf('This controls the email subject line. Leave blank to use the default subject: <code>%s</code>.', $this->subject),
                'placeholder' => '',
                'default' => ''
            ),
            'heading' => array(
                'title' => 'Email Heading',
                'type' => 'text',
                'description' => sprintf(__('This controls the main heading contained within the email notification. Leave blank to use the default heading: <code>%s</code>.'), $this->heading),
                'placeholder' => '',
                'default' => ''
            ),
            'email_type' => array(
                'title' => 'Email type',
                'type' => 'select',
                'description' => 'Choose which format of email to send.',
                'default' => 'html',
                'class' => 'email_type',
                'options' => array(
                    'plain' => 'Plain text',
                    'html' => 'HTML', 'woocommerce',
                    'multipart' => 'Multipart', 'woocommerce',
                )
            )
        );
    }

}

// end \WC_Non_Asia_Notification_Email class