PluginProbe ʕ •ᴥ•ʔ
Essential Addons for Elementor – Popular Elementor Templates & Widgets / 6.2.3
Essential Addons for Elementor – Popular Elementor Templates & Widgets v6.2.3
6.6.9 6.6.8 6.6.7 6.6.6 6.6.5 6.6.4 6.6.3 5.7.3 5.7.4 5.8.0 5.8.1 5.8.10 5.8.11 5.8.12 5.8.13 5.8.14 5.8.15 5.8.16 5.8.18 5.8.2 5.8.3 5.8.4 5.8.5 5.8.6 5.8.7 5.8.8 5.8.9 5.9.0 5.9.1 5.9.10 5.9.11 5.9.12 5.9.13 5.9.14 5.9.15 5.9.16 5.9.17 5.9.18 5.9.19 5.9.2 5.9.20 5.9.21 5.9.22 5.9.23 5.9.24 5.9.25 5.9.26 5.9.27 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9 6.0.0 6.0.1 6.0.10 6.0.11 6.0.12 6.0.13 6.0.14 6.0.15 6.0.2 6.0.3 6.0.4 6.0.5 6.0.6 6.0.7 6.0.8 6.0.9 6.1.0 6.1.1 6.1.10 6.1.11 trunk 6.1.12 1.0.0 6.1.13 1.0.1 6.1.14 1.1.0 6.1.15 2.0 6.1.17 2.1 6.1.18 2.10.0 6.1.19 2.10.1 6.1.2 2.10.2 6.1.20 2.10.3 6.1.3 2.10.4 6.1.4 2.10.5 6.1.5 2.2.0 6.1.6 2.2.1 6.1.7 2.2.2 6.1.8 2.2.3 6.1.9 2.2.4 6.2.0 2.2.5 6.2.1 2.3.0 6.2.2 2.3.1 6.2.3 2.4.0 6.2.4 2.4.1 6.3.0 2.4.2 6.3.1 2.4.3 6.3.2 2.5.0 6.3.3 2.6.0 6.4.0 2.7.0 6.5.0 2.7.1 6.5.1 2.7.10 6.5.10 2.7.11 6.5.11 2.7.2 6.5.12 2.7.3 6.5.13 2.7.4 6.5.2 2.7.5 6.5.3 2.7.6 6.5.4 2.7.7 6.5.5 2.7.8 6.5.6 2.7.9 6.5.7 2.8.0 6.5.8 2.8.1 6.5.9 2.8.2 6.6.0 2.8.3 6.6.1 2.8.4 6.6.2 2.8.5 2.8.6 2.8.7 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8 2.9.9 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.4.1 3.1.5 3.2.0 3.3.0 3.3.1 3.3.2 3.3.3 3.4.0 3.5.0 3.5.1 3.5.2 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 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.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.3.0 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.8 4.3.9 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.8.0 4.8.1 4.8.2 4.8.3 4.8.4 4.9.0 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6 4.9.7 5.0.0 5.0.1 5.0.10 5.0.11 5.0.12 5.0.13 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.1.9 5.2.0 5.2.1 5.2.2 5.2.3 5.2.4 5.3.0 5.3.1 5.3.2 5.4.6 5.5.5 5.6.5 5.7.2
essential-addons-for-elementor-lite / vendor / priyomukul / wp-notice / src / Utils / CacheBank.php
essential-addons-for-elementor-lite / vendor / priyomukul / wp-notice / src / Utils Last commit date
Base.php 2 years ago CacheBank.php 2 years ago Helper.php 2 years ago NoticeRemover.php 2 years ago Storage.php 2 years ago
CacheBank.php
147 lines
1 <?php
2
3 namespace PriyoMukul\WPNotice\Utils;
4
5 use PriyoMukul\WPNotice\Notices;
6
7 #[\AllowDynamicProperties]
8 class CacheBank {
9 private static $instance;
10
11 private static $accounts = [];
12
13 private static $notices = [];
14
15 private $priority_key = 'wpnotice_priority_time_expired';
16
17 public static function get_instance() {
18 if ( self::$instance === null ) {
19 self::$instance = new self();
20 }
21
22 return self::$instance;
23 }
24
25 public function __construct() {
26 add_action( 'admin_notices', [ $this, 'notices' ] );
27 add_action( 'admin_footer', [ $this, 'scripts' ] );
28 }
29
30
31 public function create_account( $app ) {
32 $priority = isset( $app->options['priority'] ) ? $app->priority : count( self::$accounts );
33
34 if ( isset( $app->args['version'] ) && $app->args['version'] === '1.0.0' ) {
35 $priority = 999 + count( self::$accounts );
36 }
37
38 if ( isset( self::$accounts[ $priority ] ) ) {
39 return;
40 }
41
42 self::$accounts[ $priority ] = $app;
43
44 ksort( self::$accounts );
45 }
46
47 public function calculate_deposits( $app ) {
48 if ( ! $app instanceof Notices ) {
49 return;
50 }
51
52 foreach ( $app->notices as $id => $notice ) {
53 $this->deposit( $app->id, $id, $notice );
54 }
55 }
56
57 public function deposit( $account, $id, $value ) {
58 self::$notices[ $account ][ $id ] = $value;
59 }
60
61 private function get_current_account() {
62 if ( ! empty( self::$accounts ) ) {
63 /**
64 * @var Notices $account
65 */
66 foreach ( self::$accounts as $account ) {
67 $notices = $this->eligible_notices( $account->notices, $account->queue );
68
69 $notices = array_filter( $notices, function ( $notice_key ) use ( $account ) {
70 $notice = self::$notices[ $account->id ][ $notice_key ];
71
72 return $notice->show();
73 } );
74
75 if ( ! empty( $notices ) ) {
76 return $account;
77 }
78 }
79 }
80
81 return false;
82 }
83
84 /**
85 * @return Notices
86 */
87 public function get() {
88 /**
89 * @var Notices $current_notice ;
90 */
91 return $this->get_current_account();
92 }
93
94 public function notices() {
95 if ( get_transient( $this->priority_key ) ) {
96 return;
97 }
98
99 $notice = $this->get();
100
101 if ( $notice instanceof Notices ) {
102 $notice->notices();
103 }
104 }
105
106 public function scripts() {
107 if ( get_transient( $this->priority_key ) ) {
108 return;
109 }
110
111 $notice = $this->get();
112
113 if ( $notice instanceof Notices ) {
114 $notice->scripts();
115 }
116 }
117
118 /**
119 * This is a fallback method of Notices::eligible_notices.
120 * Please make sure changes are done in both classes.
121 *
122 * @param $notices
123 * @param $queue
124 *
125 * @return array
126 */
127 private function eligible_notices( $notices = [], $queue = [] ) {
128 $_sorted_queue = [];
129
130 if ( ! empty ( $queue ) ) {
131 array_walk( $queue, function ( $value, $key ) use ( &$_sorted_queue, $notices ) {
132 $notice = isset( $notices[ $key ] ) ? $notices[ $key ] : null;
133 if ( ! is_null( $notice ) ) {
134 if ( ! $notice->dismiss->is_dismissed() && ! $notice->is_expired() ) {
135 $_sorted_queue[ $notice->options( 'start' ) ] = $key;
136 }
137 }
138 } );
139 }
140
141 ksort( $_sorted_queue );
142
143 return $_sorted_queue;
144 }
145
146
147 }