PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 5.0
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v5.0
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | classes/models/FrmInbox.php +35 -131 6.45.0 View file →
@@ -11,27 +11,17 @@
11 11 protected $cache_key;
12 12
13 13 private $option = 'frm_inbox';
14 14
15 - private static $messages = false;
15 + private $messages = false;
16 16
17 - /**
18 - * @param array
19 - */
20 - private static $banner_messages;
21 -
22 17 public function __construct( $for_parent = null ) {
23 18 $this->set_cache_key();
24 -
25 - if ( false === self::$messages ) {
26 - $this->set_messages();
27 - }
19 + $this->set_messages();
28 20 }
29 21
30 22 /**
31 23 * @since 4.05
32 - *
33 - * @return void
34 24 */
35 25 protected function set_cache_key() {
36 26 $this->cache_key = 'frm_inbox_cache';
37 27 }
@@ -37,10 +27,8 @@
37 27 }
38 28
39 29 /**
40 30 * @since 4.05
41 - *
42 - * @return string
43 31 */
44 32 protected function api_url() {
45 33 return 'https://formidableforms.com/wp-json/inbox/v1/message/';
46 34 }
@@ -46,13 +34,11 @@
46 34 }
47 35
48 36 /**
49 37 * @since 4.05
50 - *
51 - * @param false|string $filter
52 38 */
53 39 public function get_messages( $filter = false ) {
54 - $messages = self::$messages;
40 + $messages = $this->messages;
55 41 if ( $filter === 'filter' ) {
56 42 $this->filter_messages( $messages );
57 43 }
58 44 return $messages;
@@ -59,15 +45,13 @@
59 45 }
60 46
61 47 /**
62 48 * @since 4.05
63 - *
64 - * @return void
65 49 */
66 50 public function set_messages() {
67 - self::$messages = get_option( $this->option );
68 - if ( ! is_array( self::$messages ) ) {
69 - self::$messages = array();
51 + $this->messages = get_option( $this->option );
52 + if ( empty( $this->messages ) ) {
53 + $this->messages = array();
70 54 }
71 55
72 56 $this->add_api_messages();
73 57
@@ -73,15 +57,13 @@
73 57
74 58 /**
75 59 * Messages are in an array.
76 60 */
77 - self::$messages = apply_filters( 'frm_inbox', self::$messages );
61 + $this->messages = apply_filters( 'frm_inbox', $this->messages );
78 62 }
79 63
80 64 /**
81 65 * @since 4.05
82 - *
83 - * @return void
84 66 */
85 67 private function add_api_messages() {
86 68 $api = $this->get_api_info();
87 69 if ( empty( $api ) ) {
@@ -94,19 +76,16 @@
94 76 }
95 77
96 78 /**
97 79 * @param array|string $message
98 - *
99 - * @return void
100 80 */
101 81 public function add_message( $message ) {
102 - if ( ! is_array( $message ) || ! isset( $message['key'] ) ) {
82 + if ( ! is_array( $message ) ) {
103 83 // if the API response is invalid, $message may not be an array.
104 - // if there are no messages from the API, it is returning a "No Entries Found" item with no key, so check for a key as well.
105 84 return;
106 85 }
107 86
108 - if ( isset( self::$messages[ $message['key'] ] ) && ! isset( $message['force'] ) ) {
87 + if ( isset( $this->messages[ $message['key'] ] ) && ! isset( $message['force'] ) ) {
109 88 // Don't replace messages unless required.
110 89 return;
111 90 }
112 91
@@ -113,15 +92,15 @@
113 92 if ( $this->is_expired( $message ) ) {
114 93 return;
115 94 }
116 95
117 - if ( isset( self::$messages[ $message['key'] ] ) ) {
96 + if ( isset( $this->messages[ $message['key'] ] ) ) {
118 97 // Move up and mark as new.
119 - unset( self::$messages[ $message['key'] ] );
98 + unset( $this->messages[ $message['key'] ] );
120 99 }
121 100
122 101 $this->fill_message( $message );
123 - self::$messages[ $message['key'] ] = $message;
102 + $this->messages[ $message['key'] ] = $message;
124 103
125 104 $this->update_list();
126 105
127 106 $this->clean_messages();
@@ -126,13 +105,8 @@
126 105
127 106 $this->clean_messages();
128 107 }
129 108
130 - /**
131 - * @param array $message
132 - *
133 - * @return void
134 - */
135 109 private function fill_message( &$message ) {
136 110 $defaults = array(
137 111 'time' => time(),
138 112 'message' => '',
@@ -149,19 +123,16 @@
149 123 $message['created'] = $message['time'];
150 124 unset( $message['time'] );
151 125 }
152 126
153 - /**
154 - * @return void
155 - */
156 127 private function clean_messages() {
157 - $removed = false;
158 - foreach ( self::$messages as $t => $message ) {
159 - $read = isset( $message['read'] ) && ! empty( $message['read'] ) && isset( $message['read'][ get_current_user_id() ] ) && $message['read'][ get_current_user_id() ] < strtotime( '-1 month' );
128 + $removed = false;
129 + foreach ( $this->messages as $t => $message ) {
130 + $read = isset( $message['read'] ) && ! empty( $message['read'] ) && isset( $message['read'][ get_current_user_id() ] ) && $message['read'][ get_current_user_id() ] < strtotime( '-1 month' );
160 131 $dismissed = isset( $message['dismissed'] ) && ! empty( $message['dismissed'] ) && isset( $message['dismissed'][ get_current_user_id() ] ) && $message['dismissed'][ get_current_user_id() ] < strtotime( '-1 week' );
161 - $expired = $this->is_expired( $message );
132 + $expired = $this->is_expired( $message );
162 133 if ( $read || $expired || $dismissed ) {
163 - unset( self::$messages[ $t ] );
134 + unset( $this->messages[ $t ] );
164 135 $removed = true;
165 136 }
166 137 }
167 138
@@ -169,11 +140,8 @@
169 140 $this->update_list();
170 141 }
171 142 }
172 143
173 - /**
174 - * @return void
175 - */
176 144 private function filter_messages( &$messages ) {
177 145 $user_id = get_current_user_id();
178 146 foreach ( $messages as $k => $message ) {
179 147 $dismissed = isset( $message['dismissed'] ) && isset( $message['dismissed'][ $user_id ] );
@@ -185,13 +153,8 @@
185 153 }
186 154 $messages = apply_filters( 'frm_filter_inbox', $messages );
187 155 }
188 156
189 - /**
190 - * @param array $message
191 - *
192 - * @return bool
193 - */
194 157 private function is_expired( $message ) {
195 158 return isset( $message['expires'] ) && ! empty( $message['expires'] ) && $message['expires'] < time();
196 159 }
197 160
@@ -196,21 +159,15 @@
196 159 }
197 160
198 161 /**
199 162 * Show different messages for different accounts.
200 - *
201 - * @param array $message
202 - * @return bool
203 163 */
204 164 private function is_for_user( $message ) {
205 165 if ( ! isset( $message['who'] ) || $message['who'] === 'all' ) {
206 166 return true;
207 167 }
208 - $who = (array) $message['who'];
209 - if ( in_array( 'all', $who, true ) || in_array( 'everyone', $who, true ) ) {
210 - return true;
211 - }
212 - return in_array( $this->get_user_type(), $who, true );
168 +
169 + return in_array( $this->get_user_type(), (array) $message['who'] );
213 170 }
214 171
215 172 private function get_user_type() {
216 173 if ( ! FrmAppHelper::pro_is_installed() ) {
@@ -221,20 +178,18 @@
221 178 }
222 179
223 180 /**
224 181 * @param string $key
225 - *
226 - * @return void
227 182 */
228 183 public function mark_read( $key ) {
229 - if ( ! $key || ! isset( self::$messages[ $key ] ) ) {
184 + if ( ! $key || ! isset( $this->messages[ $key ] ) ) {
230 185 return;
231 186 }
232 187
233 - if ( ! isset( self::$messages[ $key ]['read'] ) ) {
234 - self::$messages[ $key ]['read'] = array();
188 + if ( ! isset( $this->messages[ $key ]['read'] ) ) {
189 + $this->messages[ $key ]['read'] = array();
235 190 }
236 - self::$messages[ $key ]['read'][ get_current_user_id() ] = time();
191 + $this->messages[ $key ]['read'][ get_current_user_id() ] = time();
237 192
238 193 $this->update_list();
239 194 }
240 195
@@ -241,15 +196,13 @@
241 196 /**
242 197 * @param string $key
243 198 *
244 199 * @since 4.05.02
245 - *
246 - * @return void
247 200 */
248 201 public function mark_unread( $key ) {
249 - $is_read = isset( self::$messages[ $key ] ) && isset( self::$messages[ $key ]['read'] ) && isset( self::$messages[ $key ]['read'][ get_current_user_id() ] );
202 + $is_read = isset( $this->messages[ $key ] ) && isset( $this->messages[ $key ]['read'] ) && isset( $this->messages[ $key ]['read'][ get_current_user_id() ] );
250 203 if ( $is_read ) {
251 - unset( self::$messages[ $key ]['read'][ get_current_user_id() ] );
204 + unset( $this->messages[ $key ]['read'][ get_current_user_id() ] );
252 205 $this->update_list();
253 206 }
254 207 }
255 208
@@ -254,10 +207,8 @@
254 207 }
255 208
256 209 /**
257 210 * @param string $key
258 - *
259 - * @return void
260 211 */
261 212 public function dismiss( $key ) {
262 213 if ( $key === 'all' ) {
263 214 $this->dismiss_all();
@@ -263,16 +214,16 @@
263 214 $this->dismiss_all();
264 215 return;
265 216 }
266 217
267 - if ( ! isset( self::$messages[ $key ] ) ) {
218 + if ( ! isset( $this->messages[ $key ] ) ) {
268 219 return;
269 220 }
270 221
271 - if ( ! isset( self::$messages[ $key ]['dismissed'] ) ) {
272 - self::$messages[ $key ]['dismissed'] = array();
222 + if ( ! isset( $this->messages[ $key ]['dismissed'] ) ) {
223 + $this->messages[ $key ]['dismissed'] = array();
273 224 }
274 - self::$messages[ $key ]['dismissed'][ get_current_user_id() ] = time();
225 + $this->messages[ $key ]['dismissed'][ get_current_user_id() ] = time();
275 226
276 227 $this->update_list();
277 228 }
278 229
@@ -277,20 +228,18 @@
277 228 }
278 229
279 230 /**
280 231 * @since 4.06
281 - *
282 - * @return void
283 232 */
284 233 private function dismiss_all() {
285 234 $user_id = get_current_user_id();
286 - foreach ( self::$messages as $key => $message ) {
235 + foreach ( $this->messages as $key => $message ) {
287 236 if ( ! isset( $message['dismissed'] ) ) {
288 - self::$messages[ $key ]['dismissed'] = array();
237 + $this->messages[ $key ]['dismissed'] = array();
289 238 }
290 239
291 240 if ( ! isset( $message['dismissed'][ $user_id ] ) ) {
292 - self::$messages[ $key ]['dismissed'][ $user_id ] = time();
241 + $this->messages[ $key ]['dismissed'][ $user_id ] = time();
293 242 }
294 243 }
295 244 $this->update_list();
296 245 }
@@ -321,61 +270,16 @@
321 270 }
322 271
323 272 /**
324 273 * @since 4.05.02
325 - *
326 - * @param string $key
327 - *
328 - * @return void
329 274 */
330 275 public function remove( $key ) {
331 - if ( isset( self::$messages[ $key ] ) ) {
332 - unset( self::$messages[ $key ] );
276 + if ( isset( $this->messages[ $key ] ) ) {
277 + unset( $this->messages[ $key ] );
333 278 $this->update_list();
334 279 }
335 280 }
336 281
337 - /**
338 - * @return void
339 - */
340 282 private function update_list() {
341 - update_option( $this->option, self::$messages, 'no' );
342 - }
343 -
344 - /**
345 - * Show a banner message if one is available.
346 - *
347 - * @return bool True if a banner is available and shown.
348 - */
349 - public static function maybe_show_banner() {
350 - if ( empty( self::$banner_messages ) ) {
351 - return false;
352 - }
353 - $message = end( self::$banner_messages );
354 - require FrmAppHelper::plugin_path() . '/classes/views/inbox/banner.php';
355 - return true;
356 - }
357 -
358 - /**
359 - * @return void
360 - */
361 - public static function maybe_disable_screen_options() {
362 - self::$banner_messages = self::get_banner_messages();
363 - if ( self::$banner_messages ) {
364 - // disable screen options tab when displaying banner messages because it gets in the way of the banner.
365 - add_filter( 'screen_options_show_screen', '__return_false' );
366 - }
367 - }
368 -
369 - /**
370 - * @return array
371 - */
372 - private static function get_banner_messages() {
373 - $inbox = new self();
374 - return array_filter(
375 - $inbox->get_messages( 'filter' ),
376 - function( $message ) {
377 - return ! empty( $message['banner'] );
378 - }
379 - );
283 + update_option( $this->option, $this->messages, 'no' );
380 284 }
381 285 }