PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor / woocommerce / email-editor / src / Engine / Renderer / ContentRenderer / class-rendering-context.php
mailpoet / vendor / woocommerce / email-editor / src / Engine / Renderer / ContentRenderer Last commit date
Layout 5 days ago Postprocessors 11 months ago Preprocessors 2 weeks ago class-block-renderer.php 11 months ago class-blocks-parser.php 11 months ago class-content-renderer.php 5 days ago class-preset-variable-resolver.php 3 months ago class-process-manager.php 3 months ago class-rendering-context.php 3 months ago content.css 11 months ago index.php 11 months ago
class-rendering-context.php
127 lines
1 <?php
2 declare(strict_types = 1);
3 namespace Automattic\WooCommerce\EmailEditor\Engine\Renderer\ContentRenderer;
4 if (!defined('ABSPATH')) exit;
5 use Automattic\WooCommerce\EmailEditor\Integrations\Utils\Styles_Helper;
6 use WP_Theme_JSON;
7 class Rendering_Context {
8 private WP_Theme_JSON $theme_json;
9 private array $email_context;
10 private ?string $language;
11 public function __construct( WP_Theme_JSON $theme_json, array $email_context = array(), ?string $language = null ) {
12 $this->theme_json = $theme_json;
13 $this->email_context = $email_context;
14 $this->language = $language;
15 }
16 public function get_theme_json(): WP_Theme_JSON {
17 return $this->theme_json;
18 }
19 public function get_theme_styles(): array {
20 $theme = $this->get_theme_json();
21 return $theme->get_data()['styles'] ?? array();
22 }
23 public function get_theme_settings() {
24 return $this->get_theme_json()->get_settings();
25 }
26 public function get_layout_width_without_padding(): string {
27 $styles = $this->get_theme_styles();
28 $layout_settings = $this->get_theme_settings()['layout'] ?? array();
29 $width = Styles_Helper::parse_value( $layout_settings['contentSize'] ?? '0px' );
30 $padding = $styles['spacing']['padding'] ?? array();
31 $width -= Styles_Helper::parse_value( $padding['left'] ?? '0px' );
32 $width -= Styles_Helper::parse_value( $padding['right'] ?? '0px' );
33 return "{$width}px";
34 }
35 public function translate_slug_to_color( string $color_slug ): string {
36 $settings = $this->get_theme_settings();
37 $color_definitions = array_merge(
38 $settings['color']['palette']['theme'] ?? array(),
39 $settings['color']['palette']['default'] ?? array()
40 );
41 foreach ( $color_definitions as $color_definition ) {
42 if ( $color_definition['slug'] === $color_slug ) {
43 return strtolower( $color_definition['color'] );
44 }
45 }
46 return $color_slug;
47 }
48 public function get_email_context(): array {
49 return $this->email_context;
50 }
51 public function get_language(): ?string {
52 return $this->language;
53 }
54 public function get_user_id(): ?int {
55 return isset( $this->email_context['user_id'] ) && is_numeric( $this->email_context['user_id'] ) ? (int) $this->email_context['user_id'] : null;
56 }
57 public function get_recipient_email(): ?string {
58 return isset( $this->email_context['recipient_email'] ) && is_string( $this->email_context['recipient_email'] ) ? $this->email_context['recipient_email'] : null;
59 }
60 public function get( string $key, $default_value = null ) {
61 return $this->email_context[ $key ] ?? $default_value;
62 }
63 public function is_rtl(): bool {
64 if ( isset( $this->email_context['is_rtl'] ) && is_bool( $this->email_context['is_rtl'] ) ) {
65 return $this->email_context['is_rtl'];
66 }
67 $primary_language = $this->get_primary_language_subtag( $this->language );
68 if ( null === $primary_language ) {
69 return false;
70 }
71 return in_array(
72 $primary_language,
73 array(
74 'ar',
75 'arc',
76 'azb',
77 'ckb',
78 'dv',
79 'fa',
80 'he',
81 'ku',
82 'nqo',
83 'ps',
84 'sd',
85 'ug',
86 'ur',
87 'yi',
88 ),
89 true
90 );
91 }
92 public function get_text_direction(): string {
93 return $this->is_rtl() ? 'rtl' : 'ltr';
94 }
95 public function get_default_text_align(): string {
96 return $this->is_rtl() ? 'right' : 'left';
97 }
98 public function get_start_side(): string {
99 return $this->is_rtl() ? 'right' : 'left';
100 }
101 public function get_end_side(): string {
102 return $this->is_rtl() ? 'left' : 'right';
103 }
104 public function sanitize_text_align( $alignment ): ?string {
105 if ( ! is_string( $alignment ) ) {
106 return null;
107 }
108 return in_array( $alignment, array( 'left', 'center', 'right' ), true ) ? $alignment : null;
109 }
110 public function resolve_text_align( $alignment ): string {
111 return $this->sanitize_text_align( $alignment ) ?? $this->get_default_text_align();
112 }
113 private function get_primary_language_subtag( ?string $language ): ?string {
114 if ( null === $language || '' === trim( $language ) ) {
115 return null;
116 }
117 $language = strtolower( str_replace( '_', '-', trim( $language ) ) );
118 $parts = explode( '-', $language );
119 $primary = $parts[0] ?? '';
120 $length = strlen( $primary );
121 if ( $length < 2 || $length > 3 ) {
122 return null;
123 }
124 return strspn( $primary, 'abcdefghijklmnopqrstuvwxyz' ) === $length ? $primary : null;
125 }
126 }
127