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 / vendor / otgs / installer / includes / admin-notices / Dismissed.php
woocommerce-multilingual / vendor / otgs / installer / includes / admin-notices Last commit date
config 4 years ago notices 1 month ago Config.php 1 month ago Dismissed.php 1 month ago Display.php 1 month ago Loader.php 1 month ago MessageTexts.php 1 month ago PageConfig.php 1 month ago ScreenConfig.php 1 month ago Store.php 1 month ago
Dismissed.php
87 lines
1 <?php
2
3 namespace OTGS\Installer\AdminNotices;
4
5 use OTGS\Installer\FP\Obj;
6
7 class Dismissed {
8 const STORE_KEY = 'dismissed';
9
10 public static function isDismissed( array $dismissedNotices, $repo, $id ) {
11 return isset( $dismissedNotices['repo'][ $repo ][ $id ] );
12 }
13
14 public static function dismissNoticeOnPluginActivation( $plugin_slug, $network ) {
15 $repositoryRecommendations = Obj::propOr([], 'repo', apply_filters( 'otgs_installer_admin_notices', [] ) );
16
17 $isPluginRecommendation = function( $plugin_attrs ) use ( $plugin_slug ) {
18 return '' === $plugin_slug || strpos( $plugin_slug, $plugin_attrs['glue_plugin_slug'] ) !== false;
19 };
20 foreach( $repositoryRecommendations as $repository => $notices ) {
21 if ( ! isset( $notices['plugin-activated'] ) ) {
22 continue;
23 }
24 $pluginRecommendationsToDisable = array_filter( $notices['plugin-activated'], $isPluginRecommendation );
25
26 foreach ( $pluginRecommendationsToDisable as $plugin => $recommendation ) {
27 self::dismissNoticeByTypeAndRepository( $repository, 'plugin-activated', $plugin );
28 }
29 }
30 }
31
32 public static function clearExpired( array $dismissedNotices, callable $timeOut ) {
33 if ( isset( $dismissedNotices['repo'] ) ) {
34
35 foreach ( $dismissedNotices['repo'] as $repo => $ids ) {
36 foreach ( $ids as $id => $dismissedTimeStamp ) {
37 if ( $timeOut( $dismissedTimeStamp, $repo, $id ) ) {
38 unset ( $dismissedNotices['repo'][ $repo ][ $id ] );
39 }
40 }
41 }
42 }
43
44 return $dismissedNotices;
45 }
46
47 public static function dismissNotice() {
48 $rawData = filter_var_array( $_POST, [
49 'repository' => FILTER_SANITIZE_FULL_SPECIAL_CHARS,
50 'noticeType' => FILTER_SANITIZE_FULL_SPECIAL_CHARS,
51 'noticePluginSlug' => FILTER_SANITIZE_FULL_SPECIAL_CHARS,
52 ] );
53
54 self::dismissNoticeByTypeAndRepository(
55 Obj::propOr('', 'repository', $rawData ),
56 Obj::propOr('', 'noticeType', $rawData ),
57 Obj::propOr('', 'noticePluginSlug', $rawData )
58 );
59
60 wp_send_json_success( [] );
61 }
62
63 public static function dismissRecommendationNoticeByPluginSlug( $dismissed, $data ) {
64 $dismissed['repo'][ $data['repository'] ][ $data['noticePluginSlug'] ] = time();
65 return $dismissed;
66 }
67
68 private static function dismissNoticeByTypeAndRepository($dismissRepository, $dismissNoticeType, $dismissNoticePluginSlug) {
69 $dismissions = apply_filters('otgs_installer_admin_notices_dismissions', []);
70
71 $store = new Store();
72
73 $dismissed = $store->get(self::STORE_KEY, []);
74
75 $data = [
76 'repository' => $dismissRepository,
77 'noticeType' => $dismissNoticeType,
78 'noticePluginSlug' => $dismissNoticePluginSlug,
79 ];
80
81 $dismissed = $dismissions[$dismissNoticeType]($dismissed, $data);
82
83 $store->save(self::STORE_KEY, $dismissed);
84 }
85
86 }
87