• File: Styler.php
  • Full Path: /home/matthif/www/wp-content/plugins/wpforms-lite/src/Integrations/UsageTracking/Styler.php
  • Date Modified: 02/16/2024 11:45 AM
  • File size: 2.53 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace WPForms\Emails;

use 
WPForms\Vendor\TijsVerkoyen\CssToInlineStyles\CssToInlineStyles;
use 
WPForms\Helpers\Templates;

/**
 * Styler class inline style email templates.
 *
 * @since 1.5.4
 */
class Styler {

    
/**
     * Email message with no styles.
     *
     * @since 1.5.4
     *
     * @var string
     */
    
protected $email;

    
/**
     * Email style templates names.
     *
     * @since 1.5.4
     *
     * @var array
     */
    
protected $style_templates;

    
/**
     * Email style overrides.
     *
     * @since 1.5.4
     *
     * @var array
     */
    
protected $style_overrides;

    
/**
     * Email message with inline styles.
     *
     * @since 1.5.4
     *
     * @var string
     */
    
protected $styled_email;

    
/**
     * Constructor.
     *
     * @since 1.5.4
     *
     * @param string $email           Email with no styles.
     * @param array  $style_templates Email style templates.
     * @param array  $style_overrides Email style overrides.
     */
    
public function __construct$email$style_templates$style_overrides ) {

        
$this->email $email;

        
$this->style_templates is_array$style_templates ) ? $style_templates : [];
        
$this->style_overrides is_array$style_overrides ) ? $style_overrides : [];
    }

    
/**
     * Template style overrides.
     *
     * @since 1.5.4
     *
     * @return array
     */
    
protected function get_style_overrides() {

        
$defaults Helpers::get_current_template_style_overrides();

        
$overrides \wp_parse_args$this->style_overrides$defaults );

        return 
\apply_filters'wpforms_emails_mailer_get_style_overrides'$overrides$this );
    }

    
/**
     * Locate template name matching styles.
     *
     * @since 1.5.4
     *
     * @param string $name Template file name part.
     *
     * @return string
     */
    
protected function get_styles$name 'style' ) {

        if ( ! 
\array_key_exists$name$this->style_templates ) ) {
            return 
'';
        }

        return 
Templates::get_html(
            
$this->style_templates$name ],
            
$this->get_style_overrides(),
            
true
        
);
    }

    
/**
     * Final processing of the template markup.
     *
     * @since 1.5.4
     */
    
public function process_markup() {

        
$this->styled_email = ( new CssToInlineStyles() )->convert$this->email$this->get_styles() );

        
$queries '<style type="text/css">' $this->get_styles'queries' ) . "</style>\n</head>";

        
// Inject media queries, CssToInlineStyles strips them.
        
$this->styled_email \str_replace'</head>'$queries$this->styled_email );
    }

    
/**
     * Get an email with inline styles.
     *
     * @since 1.5.4
     *
     * @return string
     */
    
public function get() {

        if ( empty( 
$this->styled_email ) ) {
            
$this->process_markup();
        }

        return 
$this->styled_email;
    }
}