PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
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 / MultiCurrencyMissing.php
woocommerce-multilingual / classes / AdminNotices Last commit date
CachePlugins.php 1 month ago CurrencySwitcherUseTwigTemplate.php 1 month ago ExportImport.php 1 month ago MultiCurrencyMissing.php 1 month ago RestrictedScreens.php 1 month ago Review.php 1 month ago TranslationControlMovedNotice.php 1 month ago WizardNotice.php 1 month ago
MultiCurrencyMissing.php
64 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 MultiCurrencyMissing implements \IWPML_Backend_Action, \IWPML_DIC_Action {
10
11 const NOTICE_ID = 'wcml-multi-currency-missing';
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 = $this->hasOneUniqueCurrency();
31
32 if ( $needsNotice && ! $notice ) {
33 $this->addNotice();
34 } elseif ( ! $needsNotice && $notice ) {
35 $this->removeNotice();
36 }
37 }
38
39 private function addNotice() {
40 $text = '<h2>' . esc_html__( "You haven't added any secondary currencies", 'woocommerce-multilingual' ) . '</h2>';
41 $text .= '<p>' . esc_html__( "Please add another currency to fully utilize multicurrency mode. If you do not need multiple currencies, you can disable this setting to improve your site's performance.", 'woocommerce-multilingual' ) . '</p>';
42 $text .= sprintf('<a href="%s">%s</a>',
43 \WCML\Utilities\AdminUrl::getMultiCurrencyTab(),
44 esc_html__( 'Configure multicurrency mode', 'woocommerce-multilingual' )
45 );
46
47 $notice = $this->notices->create_notice( self::NOTICE_ID, $text );
48 $notice->set_css_class_types( 'notice-warning' );
49 $notice->set_restrict_to_screen_ids( RestrictedScreens::get() );
50 $notice->set_dismissible( true );
51
52 $this->notices->add_notice( $notice );
53 }
54
55 private function removeNotice() {
56 $notice = $this->notices->get_notice( self::NOTICE_ID );
57 $this->notices->remove_notice( $notice->get_group(), $notice->get_id() );
58 }
59
60 private function hasOneUniqueCurrency() {
61 return count( (array) Obj::path( [ 'settings', 'currency_options' ], $this->wcml ) ) <= 1;
62 }
63 }
64