PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 4.07.01
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v4.07.01
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 +36 -141 6.54.07.01 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 ) ) {
@@ -93,35 +75,23 @@
93 75 }
94 76 }
95 77
96 78 /**
97 - * @param array|string $message
98 - *
99 - * @return void
79 + * @param array $message
100 80 */
101 81 public function add_message( $message ) {
102 - if ( ! is_array( $message ) || ! isset( $message['key'] ) ) {
103 - // 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 - return;
106 - }
107 -
108 - if ( isset( self::$messages[ $message['key'] ] ) && ! isset( $message['force'] ) ) {
82 + if ( isset( $this->messages[ $message['key'] ] ) && ! isset( $message['force'] ) ) {
109 83 // Don't replace messages unless required.
110 84 return;
111 85 }
112 86
113 - if ( $this->is_expired( $message ) ) {
114 - return;
115 - }
116 -
117 - if ( isset( self::$messages[ $message['key'] ] ) ) {
87 + if ( isset( $this->messages[ $message['key'] ] ) ) {
118 88 // Move up and mark as new.
119 - unset( self::$messages[ $message['key'] ] );
89 + unset( $this->messages[ $message['key'] ] );
120 90 }
121 91
122 92 $this->fill_message( $message );
123 - self::$messages[ $message['key'] ] = $message;
93 + $this->messages[ $message['key'] ] = $message;
124 94
125 95 $this->update_list();
126 96
127 97 $this->clean_messages();
@@ -126,13 +96,8 @@
126 96
127 97 $this->clean_messages();
128 98 }
129 99
130 - /**
131 - * @param array $message
132 - *
133 - * @return void
134 - */
135 100 private function fill_message( &$message ) {
136 101 $defaults = array(
137 102 'time' => time(),
138 103 'message' => '',
@@ -149,19 +114,16 @@
149 114 $message['created'] = $message['time'];
150 115 unset( $message['time'] );
151 116 }
152 117
153 - /**
154 - * @return void
155 - */
156 118 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' );
119 + $removed = false;
120 + foreach ( $this->messages as $t => $message ) {
121 + $read = isset( $message['read'] ) && ! empty( $message['read'] ) && isset( $message['read'][ get_current_user_id() ] ) && $message['read'][ get_current_user_id() ] < strtotime( '-1 month' );
160 122 $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 );
123 + $expired = $this->is_expired( $message );
162 124 if ( $read || $expired || $dismissed ) {
163 - unset( self::$messages[ $t ] );
125 + unset( $this->messages[ $t ] );
164 126 $removed = true;
165 127 }
166 128 }
167 129
@@ -169,16 +131,13 @@
169 131 $this->update_list();
170 132 }
171 133 }
172 134
173 - /**
174 - * @return void
175 - */
176 135 private function filter_messages( &$messages ) {
177 136 $user_id = get_current_user_id();
178 137 foreach ( $messages as $k => $message ) {
179 138 $dismissed = isset( $message['dismissed'] ) && isset( $message['dismissed'][ $user_id ] );
180 - if ( empty( $k ) || $this->is_expired( $message ) || $dismissed ) {
139 + if ( $this->is_expired( $message ) || $dismissed ) {
181 140 unset( $messages[ $k ] );
182 141 } elseif ( ! $this->is_for_user( $message ) ) {
183 142 unset( $messages[ $k ] );
184 143 }
@@ -185,13 +144,8 @@
185 144 }
186 145 $messages = apply_filters( 'frm_filter_inbox', $messages );
187 146 }
188 147
189 - /**
190 - * @param array $message
191 - *
192 - * @return bool
193 - */
194 148 private function is_expired( $message ) {
195 149 return isset( $message['expires'] ) && ! empty( $message['expires'] ) && $message['expires'] < time();
196 150 }
197 151
@@ -196,21 +150,15 @@
196 150 }
197 151
198 152 /**
199 153 * Show different messages for different accounts.
200 - *
201 - * @param array $message
202 - * @return bool
203 154 */
204 155 private function is_for_user( $message ) {
205 156 if ( ! isset( $message['who'] ) || $message['who'] === 'all' ) {
206 157 return true;
207 158 }
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 );
159 +
160 + return in_array( $this->get_user_type(), (array) $message['who'] );
213 161 }
214 162
215 163 private function get_user_type() {
216 164 if ( ! FrmAppHelper::pro_is_installed() ) {
@@ -221,20 +169,18 @@
221 169 }
222 170
223 171 /**
224 172 * @param string $key
225 - *
226 - * @return void
227 173 */
228 174 public function mark_read( $key ) {
229 - if ( ! $key || ! isset( self::$messages[ $key ] ) ) {
175 + if ( ! isset( $this->messages[ $key ] ) ) {
230 176 return;
231 177 }
232 178
233 - if ( ! isset( self::$messages[ $key ]['read'] ) ) {
234 - self::$messages[ $key ]['read'] = array();
179 + if ( ! isset( $this->messages[ $key ]['read'] ) ) {
180 + $this->messages[ $key ]['read'] = array();
235 181 }
236 - self::$messages[ $key ]['read'][ get_current_user_id() ] = time();
182 + $this->messages[ $key ]['read'][ get_current_user_id() ] = time();
237 183
238 184 $this->update_list();
239 185 }
240 186
@@ -241,15 +187,13 @@
241 187 /**
242 188 * @param string $key
243 189 *
244 190 * @since 4.05.02
245 - *
246 - * @return void
247 191 */
248 192 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() ] );
193 + $is_read = isset( $this->messages[ $key ] ) && isset( $this->messages[ $key ]['read'] ) && isset( $this->messages[ $key ]['read'][ get_current_user_id() ] );
250 194 if ( $is_read ) {
251 - unset( self::$messages[ $key ]['read'][ get_current_user_id() ] );
195 + unset( $this->messages[ $key ]['read'][ get_current_user_id() ] );
252 196 $this->update_list();
253 197 }
254 198 }
255 199
@@ -254,10 +198,8 @@
254 198 }
255 199
256 200 /**
257 201 * @param string $key
258 - *
259 - * @return void
260 202 */
261 203 public function dismiss( $key ) {
262 204 if ( $key === 'all' ) {
263 205 $this->dismiss_all();
@@ -263,16 +205,16 @@
263 205 $this->dismiss_all();
264 206 return;
265 207 }
266 208
267 - if ( ! isset( self::$messages[ $key ] ) ) {
209 + if ( ! isset( $this->messages[ $key ] ) ) {
268 210 return;
269 211 }
270 212
271 - if ( ! isset( self::$messages[ $key ]['dismissed'] ) ) {
272 - self::$messages[ $key ]['dismissed'] = array();
213 + if ( ! isset( $this->messages[ $key ]['dismissed'] ) ) {
214 + $this->messages[ $key ]['dismissed'] = array();
273 215 }
274 - self::$messages[ $key ]['dismissed'][ get_current_user_id() ] = time();
216 + $this->messages[ $key ]['dismissed'][ get_current_user_id() ] = time();
275 217
276 218 $this->update_list();
277 219 }
278 220
@@ -277,20 +219,18 @@
277 219 }
278 220
279 221 /**
280 222 * @since 4.06
281 - *
282 - * @return void
283 223 */
284 224 private function dismiss_all() {
285 225 $user_id = get_current_user_id();
286 - foreach ( self::$messages as $key => $message ) {
226 + foreach ( $this->messages as $key => $message ) {
287 227 if ( ! isset( $message['dismissed'] ) ) {
288 - self::$messages[ $key ]['dismissed'] = array();
228 + $this->messages[ $key ]['dismissed'] = array();
289 229 }
290 230
291 231 if ( ! isset( $message['dismissed'][ $user_id ] ) ) {
292 - self::$messages[ $key ]['dismissed'][ $user_id ] = time();
232 + $this->messages[ $key ]['dismissed'][ $user_id ] = time();
293 233 }
294 234 }
295 235 $this->update_list();
296 236 }
@@ -321,61 +261,16 @@
321 261 }
322 262
323 263 /**
324 264 * @since 4.05.02
325 - *
326 - * @param string $key
327 - *
328 - * @return void
329 265 */
330 266 public function remove( $key ) {
331 - if ( isset( self::$messages[ $key ] ) ) {
332 - unset( self::$messages[ $key ] );
267 + if ( isset( $this->messages[ $key ] ) ) {
268 + unset( $this->messages[ $key ] );
333 269 $this->update_list();
334 270 }
335 271 }
336 272
337 - /**
338 - * @return void
339 - */
340 273 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 - );
274 + update_option( $this->option, $this->messages, 'no' );
380 275 }
381 276 }