automatewoo/includes/mailer-api.php
fei-source 47d3c9a8b6 Update to v6.2.2
Source: GrootMade/Festinger Vault
2026-03-15 08:31:15 +08:00

109 lines
2.2 KiB
PHP

<?php
/**
* Static mailer API.
*
* Used to display dynamic AW content in email template files.
*
* @class AW_Mailer_API
*/
class AW_Mailer_API {
/** @var AutomateWoo\Mailer */
public static $mailer;
/** @var AutomateWoo\Workflow*/
public static $workflow;
/**
* @param AutomateWoo\Mailer $mailer
* @param AutomateWoo\Workflow $workflow
*/
public static function setup( $mailer, $workflow ) {
self::$mailer = $mailer;
self::$workflow = $workflow;
}
/**
* Reset mailer and workflow.
*/
public static function cleanup() {
self::$mailer = false;
self::$workflow = false;
}
/**
* @return bool|string
*/
public static function email() {
if ( ! self::$mailer ) {
return false;
}
return self::$mailer->email;
}
/**
* @return bool|string
*/
public static function subject() {
if ( ! self::$mailer ) {
return false;
}
return self::$mailer->subject;
}
/**
* @return bool|string
*/
public static function unsubscribe_url() {
if ( ! self::$workflow ) {
return false;
}
$customer = AutomateWoo\Customer_Factory::get_by_email( self::email() );
return self::$workflow->get_unsubscribe_url( $customer );
}
/**
* $variable parameter doesn't need curly braces. E.g.
*
* "customer.email"
* "order.items | template: 'order-table'"
*
* @since 3.9
*
* @param string $variable
* @return bool|string
*/
public static function variable( $variable ) {
if ( ! self::$workflow ) {
return self::$workflow->process_variable( $variable );
}
return false;
}
/**
* @param WC_Product $product
* @param string $size
* @return array|false|string
*/
public static function get_product_image( $product, $size = 'woocommerce_thumbnail' ) {
$image_id = $product->get_image_id();
if ( $image_id ) {
$image_url = wp_get_attachment_image_url( $image_id, $size );
$image = '<img src="' . esc_url( $image_url ) . '" class="aw-product-image" alt="' . esc_attr( $product->get_name() ) . '">';
return apply_filters( 'automatewoo/email/product_image', $image, $size, $product );
} else {
return apply_filters( 'automatewoo/email/product_placeholder_image', wc_placeholder_img( $size ), $size, $product );
}
}
}