/var/www/html_fr/wp-content/plugins/yaymail/src/Emails/EmailsLoader.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php

namespace YayMail\Emails;

use 
YayMail\Utils\SingletonTrait;
use 
YayMail\YayMailEmails;

/**
 * EmailsLoader Class
 *
 * @method static EmailsLoader get_instance()
 */
class EmailsLoader {

    use 
SingletonTrait;

    private function 
__construct() {
        
$this->init_hooks();
        
$this->load_emails();
    }

    private function 
init_hooks() {
        
add_action'yaymail_before_email_content', [ $this'before_email_content' ], 10);
        
add_action'yaymail_after_email_content', [ $this'after_email_content' ], 10);

        
/**
         * Email references hooks
         */
        
add_filter'safe_style_css', [ $this'filter_safe_style_css' ], 10);
        
add_filter'woocommerce_email_styles', [ $this'inject_custom_css' ] );
    }

    private function 
load_emails() {

        
$yaymail_emails YayMailEmails::get_instance();

        
$yaymail_emails->register\YayMail\Emails\NewOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CancelledOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerCancelledOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\FailedOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerFailedOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerOnHoldOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerProcessingOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerCompletedOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerRefundedOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerInvoice::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerNote::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerResetPassword::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerNewAccount::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\GlobalHeaderFooter::get_instance() );

        
/**
         * POS emails, WC 9.9.3
         *
         * @since 4.0.6
         */
        
$yaymail_emails->register\YayMail\Emails\CustomerPOSCompletedOrder::get_instance() );
        
$yaymail_emails->register\YayMail\Emails\CustomerPOSRefundedOrder::get_instance() );

        
do_action'yaymail_register_emails'$yaymail_emails );
    }

    public function 
before_email_content$template ) {
        include 
YAYMAIL_PLUGIN_PATH 'templates/emails/before-email-content.php';
    }

    public function 
after_email_content$template ) {
        include 
YAYMAIL_PLUGIN_PATH 'templates/emails/after-email-content.php';
    }

    public function 
filter_safe_style_css$default_array ) {
        
$additional_allowed_css_attributes = [ 'display''background-repeat''word-wrap' ];
        return 
array_merge$default_array$additional_allowed_css_attributes );
    }

    public function 
inject_custom_css$css '' ) {
        
$css             .= '.yaymail-element table { border-spacing: 0; }';
        
$yaymail_settings yaymail_settings();
        if ( ! 
boolval$yaymail_settings['enable_custom_css'] ?? false ) ) {
            return 
$css;
        }
        
$custom_css = isset( $yaymail_settings['custom_css'] ) ? $yaymail_settings['custom_css'] : '';
        
$css       .= $custom_css;
        
$css        apply_filters'yaymail_email_styles'$css );
        return 
$css;
    }
}