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 / classes / AdminNotices / CurrencySwitcherUseTwigTemplate.php
woocommerce-multilingual / classes / AdminNotices Last commit date
CachePlugins.php 1 week ago CurrencySwitcherUseTwigTemplate.php 1 week ago ExportImport.php 1 week ago MultiCurrencyMissing.php 1 week ago RestrictedScreens.php 1 week ago Review.php 1 week ago TranslationControlMovedNotice.php 1 week ago WizardNotice.php 1 week ago
CurrencySwitcherUseTwigTemplate.php
85 lines
1 <?php
2
3 namespace WCML\AdminNotices;
4
5 use woocommerce_wpml;
6 use WPML\FP\Obj;
7 use WPML_Notices;
8
9 class CurrencySwitcherUseTwigTemplate implements \IWPML_Backend_Action, \IWPML_DIC_Action {
10
11 const NOTICE_ID = 'wcml-multi-currency-currency-switcher-php-template-missing4';
12
13 private $wcml;
14
15 private $notices;
16
17 public function __construct( woocommerce_wpml $wcml, WPML_Notices $notices ) {
18 $this->wcml = $wcml;
19 $this->notices = $notices;
20 }
21
22 public function add_hooks() {
23 if ( wcml_is_multi_currency_on() ) {
24 add_action( 'admin_init', [ $this, 'initNotice' ] );
25 }
26 }
27
28 public function initNotice() {
29 $notice = $this->notices->get_notice( self::NOTICE_ID );
30 $needsNotice = wcml_is_multi_currency_on() && $this->hasUniqueCurrency();
31
32 if ( $needsNotice && ! $notice ) {
33 add_action( 'wpml_currency_switcher_uses_twig_templates', [ $this, 'addNotice' ] );
34 } elseif ( ! $needsNotice && ( $notice instanceof \WPML_Notice ) ) {
35 $this->removeNotice( $notice );
36 }
37 }
38
39 public function addNotice( string $templateSlug ) {
40 $activeTemplateNames = array_keys( $this->wcml->cs_templates->get_active_templates() );
41 if ( ! in_array( $templateSlug, $activeTemplateNames, true ) ) {
42 return;
43 }
44
45 $text = '<h2>' . esc_html__( 'Important: Action Needed for Your Currency Switcher', 'woocommerce-multilingual' ) . '</h2>';
46 $text .= '<p>' . esc_html__( 'We detected that your site is using a Currency Switcher built with Twig templates. For security reasons, support for Twig-based templates will be discontinued in the upcoming version of WPML Multilingual & Multicurrency for WooCommerce 5.6.', 'woocommerce-multilingual' ) . '</p>';
47 $text .= '<p>' . esc_html__( 'To ensure your Currency Switcher continues working smoothly:', 'woocommerce-multilingual' ) . '</p>';
48
49 $text .= '<ul>';
50 $text .= '<li>';
51 $text .= sprintf(
52 /* translators: %1$s and %2$s are opening and closing HTML link tags */
53 esc_html__( '- Switch to a PHP-based template - you can select one from the %1$sconfiguration page%2$s.', 'woocommerce-multilingual' ),
54 '<a href="' . \WCML\Utilities\AdminUrl::getMultiCurrencyTab( 'currency-switcher-product' ) . '">',
55 '</a>'
56 );
57 $text .= '</li>';
58 $text .= '<li>';
59 $text .= sprintf(
60 /* translators: %1$s and %2$s are opening and closing HTML link tags */
61 esc_html__( '- Need a custom solution? %1$sContact our support%2$s - we’re here to help you migrate safely.', 'woocommerce-multilingual' ),
62 '<a href="' . \WCML_Tracking_Link::getWpmlSupport() . '">',
63 '</a>'
64 );
65 $text .= '</li>';
66 $text .= '</ul>';
67 $text .= '<p>' . esc_html__( 'We recommend updating your Currency Switcher as soon as possible to avoid disruptions when the new version of WPML Multilingual & Multicurrency for WooCommerce is released.', 'woocommerce-multilingual' ) . '</p>';
68
69 $notice = $this->notices->create_notice( self::NOTICE_ID, $text );
70 $notice->set_css_class_types( 'notice-warning' );
71 $notice->set_restrict_to_screen_ids( RestrictedScreens::get() );
72 $notice->set_dismissible( true );
73
74 $this->notices->add_notice( $notice );
75 }
76
77 private function removeNotice( \WPML_Notice $notice ) {
78 $this->notices->remove_notice( $notice->get_group(), $notice->get_id() );
79 }
80
81 private function hasUniqueCurrency(): bool {
82 return count( (array) Obj::path( [ 'settings', 'currency_options' ], $this->wcml ) ) >= 1;
83 }
84 }
85