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 / CachePlugins.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
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