PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.24
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.24
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 +7 -72 6.276.24 View file →
@@ -9,16 +9,10 @@
9 9 class FrmInbox extends FrmFormApi {
10 10
11 11 protected $cache_key;
12 12
13 - /**
14 - * @var string
15 - */
16 13 private $option = 'frm_inbox';
17 14
18 - /**
19 - * @var array|false
20 - */
21 15 private static $messages = false;
22 16
23 17 /**
24 18 * @var array
@@ -54,18 +48,14 @@
54 48 /**
55 49 * @since 4.05
56 50 *
57 51 * @param array|false $filter
58 - *
59 - * @return array
60 52 */
61 53 public function get_messages( $filter = false ) {
62 54 $messages = self::$messages;
63 -
64 55 if ( $filter === 'filter' ) {
65 56 $this->filter_messages( $messages );
66 57 }
67 -
68 58 return $messages;
69 59 }
70 60
71 61 /**
@@ -74,9 +64,8 @@
74 64 * @return void
75 65 */
76 66 public function set_messages() {
77 67 self::$messages = get_option( $this->option );
78 -
79 68 if ( ! is_array( self::$messages ) ) {
80 69 self::$messages = array();
81 70 }
82 71
@@ -94,10 +83,9 @@
94 83 * @return void
95 84 */
96 85 private function add_api_messages() {
97 86 $api = $this->get_api_info();
98 -
99 - if ( ! $api ) {
87 + if ( empty( $api ) ) {
100 88 return;
101 89 }
102 90
103 91 foreach ( $api as $message ) {
@@ -121,9 +109,9 @@
121 109 // Don't replace messages unless required.
122 110 return;
123 111 }
124 112
125 - if ( ! $this->within_valid_timeframe( $message ) ) {
113 + if ( $this->is_expired( $message ) ) {
126 114 return;
127 115 }
128 116
129 117 if ( isset( self::$messages[ $message['key'] ] ) ) {
@@ -167,14 +155,13 @@
167 155 * @return void
168 156 */
169 157 private function clean_messages() {
170 158 $removed = false;
171 -
172 159 foreach ( self::$messages as $t => $message ) {
173 160 $read = ! empty( $message['read'] ) && isset( $message['read'][ get_current_user_id() ] ) && $message['read'][ get_current_user_id() ] < strtotime( '-1 month' );
174 - $dismissed = ! empty( $message['dismissed'] ) && isset( $message['dismissed'][ get_current_user_id() ] ) && $message['dismissed'][ get_current_user_id() ] < strtotime( '-1 week' ); // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
175 -
176 - if ( $read || $dismissed || ! $this->within_valid_timeframe( $message ) ) {
161 + $dismissed = ! empty( $message['dismissed'] ) && isset( $message['dismissed'][ get_current_user_id() ] ) && $message['dismissed'][ get_current_user_id() ] < strtotime( '-1 week' );
162 + $expired = $this->is_expired( $message );
163 + if ( $read || $expired || $dismissed ) {
177 164 unset( self::$messages[ $t ] );
178 165 $removed = true;
179 166 }
180 167 }
@@ -186,58 +173,28 @@
186 173
187 174 /**
188 175 * @param array $messages
189 176 * @param string $type
190 - *
191 177 * @return void
192 178 */
193 179 public function filter_messages( &$messages, $type = 'unread' ) {
194 180 $user_id = get_current_user_id();
195 -
196 181 foreach ( $messages as $k => $message ) {
197 182 $dismissed = isset( $message['dismissed'] ) && isset( $message['dismissed'][ $user_id ] );
198 -
199 - if ( empty( $k ) || ! $this->within_valid_timeframe( $message ) || ( $type === 'dismissed' ) !== $dismissed ) {
183 + if ( empty( $k ) || $this->is_expired( $message ) || ( $type === 'dismissed' ) !== $dismissed ) {
200 184 unset( $messages[ $k ] );
201 185 } elseif ( ! $this->is_for_user( $message ) ) {
202 186 unset( $messages[ $k ] );
203 187 }
204 188 }
205 -
206 189 $messages = apply_filters( 'frm_filter_inbox', $messages );
207 190 }
208 191
209 192 /**
210 - * Check if a message has started and is not expired.
211 - *
212 - * @since 6.25
213 - *
214 193 * @param array $message
215 194 *
216 195 * @return bool
217 196 */
218 - private function within_valid_timeframe( $message ) {
219 - return $this->has_started( $message ) && ! $this->is_expired( $message );
220 - }
221 -
222 - /**
223 - * Check if a message has actually started, so we can prevent showing something that is queued up early.
224 - *
225 - * @since 6.25
226 - *
227 - * @param array $message
228 - *
229 - * @return bool
230 - */
231 - private function has_started( $message ) {
232 - return empty( $message['starts'] ) ? true : $message['starts'] <= time();
233 - }
234 -
235 - /**
236 - * @param array $message
237 - *
238 - * @return bool
239 - */
240 197 private function is_expired( $message ) {
241 198 return ! empty( $message['expires'] ) && $message['expires'] < time();
242 199 }
243 200
@@ -244,9 +201,8 @@
244 201 /**
245 202 * Show different messages for different accounts.
246 203 *
247 204 * @param array $message
248 - *
249 205 * @return bool
250 206 */
251 207 private function is_for_user( $message ) {
252 208 if ( FrmApiHelper::is_for_user( $message ) ) {
@@ -288,14 +244,12 @@
288 244 /**
289 245 * @since 4.05.02
290 246 *
291 247 * @param string $key
292 - *
293 248 * @return void
294 249 */
295 250 public function mark_unread( $key ) {
296 251 $is_read = isset( self::$messages[ $key ] ) && isset( self::$messages[ $key ]['read'] ) && isset( self::$messages[ $key ]['read'][ get_current_user_id() ] );
297 -
298 252 if ( $is_read ) {
299 253 unset( self::$messages[ $key ]['read'][ get_current_user_id() ] );
300 254 $this->update_list();
301 255 }
@@ -330,9 +284,8 @@
330 284 * @return void
331 285 */
332 286 private function dismiss_all() {
333 287 $user_id = get_current_user_id();
334 -
335 288 foreach ( self::$messages as $key => $message ) {
336 289 if ( ! isset( $message['dismissed'] ) ) {
337 290 self::$messages[ $key ]['dismissed'] = array();
338 291 }
@@ -343,21 +296,16 @@
343 296 }
344 297 $this->update_list();
345 298 }
346 299
347 - /**
348 - * @return array
349 - */
350 300 public function unread() {
351 301 $messages = $this->get_messages( 'filter' );
352 302 $user_id = get_current_user_id();
353 -
354 303 foreach ( $messages as $t => $message ) {
355 304 if ( isset( $message['read'] ) && isset( $message['read'][ $user_id ] ) ) {
356 305 unset( $messages[ $t ] );
357 306 }
358 307 }
359 -
360 308 return $messages;
361 309 }
362 310
363 311 /**
@@ -363,14 +311,12 @@
363 311 /**
364 312 * @since 6.8.4 The $filtered parameter was added.
365 313 *
366 314 * @param bool $filtered
367 - *
368 315 * @return string
369 316 */
370 317 public function unread_html( $filtered = true ) {
371 318 $count = count( $this->unread() );
372 -
373 319 if ( ! $count ) {
374 320 return '';
375 321 }
376 322
@@ -391,9 +337,8 @@
391 337 /**
392 338 * @since 4.05.02
393 339 *
394 340 * @param string $key
395 - *
396 341 * @return void
397 342 */
398 343 public function remove( $key ) {
399 344 if ( isset( self::$messages[ $key ] ) ) {
@@ -417,9 +362,8 @@
417 362 public static function maybe_show_banner() {
418 363 if ( empty( self::$banner_messages ) ) {
419 364 return false;
420 365 }
421 -
422 366 $message = end( self::$banner_messages );
423 367 $cta = self::get_prepared_banner_cta( $message['cta'] );
424 368
425 369 require FrmAppHelper::plugin_path() . '/classes/views/inbox/banner.php';
@@ -431,9 +375,8 @@
431 375 *
432 376 * @since 6.8.4
433 377 *
434 378 * @param string $cta
435 - *
436 379 * @return string
437 380 */
438 381 private static function get_prepared_banner_cta( $cta ) {
439 382 $cta = str_replace( 'button-secondary', 'button-primary', $cta );
@@ -442,9 +385,8 @@
442 385 /**
443 386 * Replace a single href attribute in the CTA.
444 387 *
445 388 * @param array $matches The regex results for a single match.
446 - *
447 389 * @return string
448 390 */
449 391 function ( $matches ) {
450 392 $url = $matches[2];
@@ -454,13 +396,11 @@
454 396 return 'href="#"';
455 397 }
456 398
457 399 $query = array();
458 -
459 400 if ( isset( $parts['query'] ) ) {
460 401 parse_str( $parts['query'], $query );
461 402 }
462 -
463 403 $query['utm_medium'] = 'banner';
464 404 $parts['query'] = http_build_query( $query );
465 405 return 'href="' . $parts['scheme'] . '://' . $parts['host'] . $parts['path'] . '?' . $parts['query'] . '"';
466 406 },
@@ -472,9 +412,8 @@
472 412 * @return void
473 413 */
474 414 public static function maybe_disable_screen_options() {
475 415 self::$banner_messages = self::get_banner_messages();
476 -
477 416 if ( self::$banner_messages ) {
478 417 // disable screen options tab when displaying banner messages because it gets in the way of the banner.
479 418 add_filter( 'screen_options_show_screen', '__return_false' );
480 419 }
@@ -505,9 +444,8 @@
505 444 *
506 445 * @since 6.8.4
507 446 *
508 447 * @param string $key The key we are checking for (ie. banner or slidein).
509 - *
510 448 * @return array
511 449 */
512 450 private static function get_messages_with_key( $key ) {
513 451 $inbox = new self();
@@ -538,9 +476,8 @@
538 476 * @return array|false
539 477 */
540 478 public static function get_inbox_slide_in_value_for_js() {
541 479 $messages = self::get_slidein_messages();
542 -
543 480 if ( ! $messages ) {
544 481 return false;
545 482 }
546 483
@@ -561,9 +498,9 @@
561 498
562 499 return array_reduce(
563 500 $keys_to_return,
564 501 function ( $total, $key ) use ( $message ) {
565 - $total[ $key ] = $message[ $key ] ?? '';
502 + $total[ $key ] = isset( $message[ $key ] ) ? $message[ $key ] : '';
566 503 return $total;
567 504 },
568 505 array()
569 506 );
@@ -589,14 +526,12 @@
589 526 */
590 527 public static function check_for_error() {
591 528 $inbox = new self();
592 529 $messages = $inbox->get_messages( 'filter' );
593 -
594 530 foreach ( $messages as $message ) {
595 531 if ( is_array( $message ) && isset( $message['type'] ) && 'error' === $message['type'] ) {
596 532 return $message;
597 533 }
598 534 }
599 -
600 535 return false;
601 536 }
602 537 }