PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / inc / template-classes / currency-switcher / class-wcml-currency-switcher-template.php
woocommerce-multilingual / inc / template-classes / currency-switcher Last commit date
class-wcml-currency-switcher-options-dialog.php 1 month ago class-wcml-currency-switcher-template.php 1 month ago
class-wcml-currency-switcher-template.php
140 lines
1 <?php
2
3 use WCML\Multicurrency\CurrencySwitcher\CurrencySwitcherComponent;
4 use WCML\Multicurrency\CurrencySwitcher\CurrencySwitcherTemplateInterface;
5 use WPML\Core\Twig_SimpleFunction;
6
7 class WCML_Currency_Switcher_Template extends WCML_Templates_Factory implements CurrencySwitcherTemplateInterface {
8
9 const TEMPLATE_FILENAME_LEGACY_TWIG = 'template.twig';
10
11 const FILENAME = self::TEMPLATE_FILENAME_LEGACY_TWIG;
12
13 private $template;
14
15 private $prefix = 'wcml-cs-';
16
17 private $model;
18
19 public function __construct( $template_data ) {
20 $this->template = $this->format_data( $template_data );
21
22 if ( array_key_exists( 'template_string', $this->template ) ) {
23 $this->template_string = $this->template['template_string'];
24 }
25
26 $functions = [
27 new Twig_SimpleFunction( 'get_formatted_price', [ $this, 'get_formatted_price' ] ),
28 ];
29
30 parent::__construct( $functions );
31 }
32
33 public function set_model( $model ) {
34 $this->model = is_array( $model ) ? $model : [ $model ];
35 }
36
37 public function get_model() {
38 return $this->model;
39 }
40
41 public function render() {
42 echo $this->get_view();
43 }
44
45 protected function before_render() {
46 $templateSetup = $this->get_template_data();
47
48 do_action( 'wpml_currency_switcher_uses_twig_templates', $templateSetup['slug'] ?? '' );
49 }
50
51 static public function get_formatted_price( $currency, $format ) {
52 $wc_currencies = get_woocommerce_currencies();
53
54 $currency_format = preg_replace(
55 [ '#%name%#', '#%symbol%#', '#%code%#' ],
56 [
57 $wc_currencies[ $currency ],
58 get_woocommerce_currency_symbol( $currency ),
59 $currency,
60
61 ],
62 $format
63 );
64
65 return $currency_format;
66 }
67
68 private function format_data( $template_data ) {
69 foreach ( [ 'path', 'js', 'css' ] as $k ) {
70 $template_data[ $k ] = $template_data[ $k ] ?? [];
71 $template_data[ $k ] = is_array( $template_data[ $k ] ) ? $template_data[ $k ] : [ $template_data[ $k ] ];
72 }
73
74 return $template_data;
75 }
76
77 public function get_styles( bool $with_version = false ): array {
78 return $with_version
79 ? array_map( [ CurrencySwitcherComponent::class, 'addResourceVersion' ], $this->template['css'] )
80 : $this->template['css'];
81 }
82
83 public function has_styles(): bool {
84 return ! empty( $this->template['css'] );
85 }
86
87 public function get_scripts( bool $with_version = false ): array {
88 return $with_version
89 ? array_map( [ CurrencySwitcherComponent::class, 'addResourceVersion' ], $this->template['js'] )
90 : $this->template['js'];
91 }
92
93 public function get_resource_handler( string $index ): string {
94 $slug = $this->template['slug'] ?? '';
95 $prefix = $this->is_core() ? '' : $this->prefix;
96
97 return $prefix . $slug . '-' . $index;
98 }
99
100 public function get_inline_style_handler() {
101 $count = count( $this->template['css'] );
102
103 return $count > 0 ? $this->get_resource_handler( $count - 1 ) : null;
104 }
105
106 protected function init_template_base_dir() {
107 $this->template_paths = $this->template['path'];
108 }
109
110 public function get_template() {
111 $template = self::FILENAME;
112
113 if ( isset( $this->template_string ) ) {
114 $template = $this->template_string;
115 } elseif ( array_key_exists( 'filename', $this->template ) ) {
116 $template = $this->template['filename'];
117 }
118
119 return $template;
120 }
121
122 public function get_template_data(): array {
123 return $this->template;
124 }
125
126 public function is_core() {
127 return isset( $this->template['is_core'] ) ? (bool) $this->template['is_core'] : false;
128 }
129
130 public function is_path_valid(): bool {
131 foreach ( $this->template_paths as $path ) {
132 if ( ! file_exists( $path ) ) {
133 return false;
134 }
135 }
136
137 return true;
138 }
139 }
140