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 / CachePlugins.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
CachePlugins.php
79 lines
1 <?php
2
3 namespace WCML\AdminNotices;
4
5 use WPML\FP\Fns;
6 use WPML\FP\Logic;
7 use WPML\FP\Obj;
8 use WPML\FP\Str;
9 use function WPML\FP\pipe;
10
11 class CachePlugins implements \IWPML_Backend_Action, \IWPML_DIC_Action {
12
13 const NOTICE_ID = 'wcml-cache-plugins';
14
15 private $notices;
16
17 public function __construct( \WPML_Notices $notices ) {
18 $this->notices = $notices;
19 }
20
21 public function add_hooks() {
22 if (
23 wcml_is_multi_currency_on()
24 && ! $this->notices->get_notice( self::NOTICE_ID )
25 && self::hasActiveCachePlugin()
26 ) {
27 add_action( 'admin_init', [ $this, 'addNotice' ] );
28 }
29 }
30
31 public function addNotice() {
32 $text = '<h2>' . esc_html__( 'WPML Multilingual & Multicurrency for WooCommerce detected an active cache plugin on your site.', 'woocommerce-multilingual' ) . '</h2>';
33 $text .= '<p>' . esc_html__( 'Caching may cause currency display issues for your customers if you are using the multicurrency feature.', 'woocommerce-multilingual' ) . '</p>';
34 $text .= '<p>' . esc_html__( 'To avoid this, set your cache plugin to not cache pages for visitors that have a cookie set in their browser.', 'woocommerce-multilingual' ) . '</p>';
35
36 $notice = $this->notices->create_notice( self::NOTICE_ID, $text );
37 $notice->set_css_class_types( 'notice-warning' );
38 $notice->set_restrict_to_screen_ids( RestrictedScreens::get() );
39 $notice->set_dismissible( true );
40
41 $this->notices->add_notice( $notice );
42 }
43
44 private static function hasActiveCachePlugin() {
45 if ( ! function_exists( 'is_plugin_active' ) ) {
46 include_once ABSPATH . 'wp-admin/includes/plugin.php';
47 }
48
49 $isActive = pipe(
50 Fns::nthArg( 1 ),
51 'is_plugin_active'
52 );
53
54 $isAboutCaching = pipe(
55 Obj::prop( 'Description' ),
56 Logic::anyPass(
57 [
58 Str::includes( 'cache' ),
59 Str::includes( 'caching' ),
60 ]
61 )
62 );
63
64 $isHandled = function( $plugin ) {
65 return in_array(
66 $plugin['Name'],
67 apply_filters( 'wcml_multicurrency_supported_cache_plugins', [] ),
68 true
69 );
70 };
71
72 return (bool) wpml_collect( get_plugins() )
73 ->filter( $isActive )
74 ->filter( $isAboutCaching )
75 ->reject( $isHandled )
76 ->first();
77 }
78 }
79