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