Passed
Push — master ( ec16eb...0357f3 )
by Stephanie
03:05
created

FrmAppHelper::insert_opt_html()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 11
nc 2
nop 1
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
1
<?php
2
if ( ! defined('ABSPATH') ) {
3
	die( 'You are not allowed to call this page directly.' );
4
}
5
6
class FrmAppHelper {
7
	public static $db_version = 79; //version of the database we are moving to
8
	public static $pro_db_version = 37; //deprecated
9
	public static $font_version = 3;
10
11
	/**
12
	 * @since 2.0
13
	 */
14
	public static $plug_version = '3.0.03';
15
16
    /**
17
     * @since 1.07.02
18
     *
19
     * @param none
20
     * @return string The version of this plugin
21
     */
22
    public static function plugin_version() {
23
        return self::$plug_version;
24
    }
25
26
    public static function plugin_folder() {
27
        return basename(self::plugin_path());
28
    }
29
30
    public static function plugin_path() {
31
        return dirname(dirname(dirname(__FILE__)));
32
    }
33
34
    public static function plugin_url() {
35
        //prevously FRM_URL constant
36
		return plugins_url( '', self::plugin_path() . '/formidable.php' );
0 ignored issues
show
Bug introduced by
The function plugins_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

36
		return /** @scrutinizer ignore-call */ plugins_url( '', self::plugin_path() . '/formidable.php' );
Loading history...
37
    }
38
39
	public static function relative_plugin_url() {
40
		return str_replace( array( 'https:', 'http:' ), '', self::plugin_url() );
41
	}
42
43
    /**
44
     * @return string Site URL
45
     */
46
    public static function site_url() {
47
        return site_url();
0 ignored issues
show
Bug introduced by
The function site_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

47
        return /** @scrutinizer ignore-call */ site_url();
Loading history...
48
    }
49
50
    /**
51
     * Get the name of this site
52
     * Used for [sitename] shortcode
53
     *
54
     * @since 2.0
55
     * @return string
56
     */
57
    public static function site_name() {
58
        return get_option('blogname');
0 ignored issues
show
Bug introduced by
The function get_option was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

58
        return /** @scrutinizer ignore-call */ get_option('blogname');
Loading history...
59
    }
60
61
	public static function make_affiliate_url( $url ) {
62
		$affiliate_id = self::get_affiliate();
63
		if ( ! empty( $affiliate_id ) ) {
64
			$url = str_replace( array( 'http://', 'https://' ), '', $url );
65
			$url = 'http://www.shareasale.com/r.cfm?u=' . absint( $affiliate_id ) . '&b=841990&m=64739&afftrack=plugin&urllink=' . urlencode( $url );
0 ignored issues
show
Bug introduced by
The function absint was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

65
			$url = 'http://www.shareasale.com/r.cfm?u=' . /** @scrutinizer ignore-call */ absint( $affiliate_id ) . '&b=841990&m=64739&afftrack=plugin&urllink=' . urlencode( $url );
Loading history...
66
		}
67
		return $url;
68
	}
69
70
	public static function get_affiliate() {
71
		return absint( apply_filters( 'frm_affiliate_id', 0 ) );
0 ignored issues
show
Bug introduced by
The function absint was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

71
		return /** @scrutinizer ignore-call */ absint( apply_filters( 'frm_affiliate_id', 0 ) );
Loading history...
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

71
		return absint( /** @scrutinizer ignore-call */ apply_filters( 'frm_affiliate_id', 0 ) );
Loading history...
72
	}
73
74
    /**
75
     * Get the Formidable settings
76
     *
77
     * @since 2.0
78
     *
79
     * @param None
80
     * @return FrmSettings $frm_setings
81
     */
82
    public static function get_settings() {
83
        global $frm_settings;
84
        if ( empty($frm_settings) ) {
85
            $frm_settings = new FrmSettings();
86
        }
87
        return $frm_settings;
88
    }
89
90
	public static function get_menu_name() {
91
		$frm_settings = FrmAppHelper::get_settings();
92
		return $frm_settings->menu;
93
	}
94
95
	/**
96
	 * @since 2.02.04
97
	 */
98
	public static function ips_saved() {
99
		$frm_settings = self::get_settings();
100
		return ! $frm_settings->no_ips;
101
	}
102
103
    public static function pro_is_installed() {
104
        return apply_filters('frm_pro_installed', false);
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

104
        return /** @scrutinizer ignore-call */ apply_filters('frm_pro_installed', false);
Loading history...
105
    }
106
107
	public static function is_formidable_admin() {
108
		$page = self::simple_get( 'page', 'sanitize_title' );
109
		$is_formidable = strpos( $page, 'formidable' ) !== false;
0 ignored issues
show
Bug introduced by
It seems like $page can also be of type array; however, parameter $haystack of strpos() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

109
		$is_formidable = strpos( /** @scrutinizer ignore-type */ $page, 'formidable' ) !== false;
Loading history...
110
		if ( empty( $page ) ) {
111
			global $pagenow;
112
			$post_type = self::simple_get( 'post_type', 'sanitize_title' );
113
			$is_formidable = ( $post_type == 'frm_display' );
114
			if ( empty( $post_type ) && $pagenow == 'post.php' ) {
115
				global $post;
116
				$is_formidable = ( $post && $post->post_type == 'frm_display' );
117
			}
118
		}
119
		return $is_formidable;
120
	}
121
122
    /**
123
     * Check for certain page in Formidable settings
124
     *
125
     * @since 2.0
126
     *
127
     * @param string $page The name of the page to check
128
     * @return boolean
129
     */
130
	public static function is_admin_page( $page = 'formidable' ) {
131
        global $pagenow;
132
		$get_page = self::simple_get( 'page', 'sanitize_title' );
133
        if ( $pagenow ) {
134
			// allow this to be true during ajax load i.e. ajax form builder loading
135
			return ( $pagenow == 'admin.php' || $pagenow == 'admin-ajax.php' ) && $get_page == $page;
136
        }
137
138
		return is_admin() && $get_page == $page;
0 ignored issues
show
Bug introduced by
The function is_admin was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

138
		return /** @scrutinizer ignore-call */ is_admin() && $get_page == $page;
Loading history...
139
    }
140
141
    /**
142
     * Check for the form preview page
143
     *
144
     * @since 2.0
145
     *
146
     * @param None
147
     * @return boolean
148
     */
149
    public static function is_preview_page() {
150
        global $pagenow;
151
		$action = FrmAppHelper::simple_get( 'action', 'sanitize_title' );
152
		return $pagenow && $pagenow == 'admin-ajax.php' && $action == 'frm_forms_preview';
153
    }
154
155
    /**
156
     * Check for ajax except the form preview page
157
     *
158
     * @since 2.0
159
     *
160
     * @param None
161
     * @return boolean
162
     */
163
    public static function doing_ajax() {
164
        return self::wp_doing_ajax() && ! self::is_preview_page();
165
    }
166
167
	public static function js_suffix() {
168
		return defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
0 ignored issues
show
Bug introduced by
The constant SCRIPT_DEBUG was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
169
	}
170
171
	/**
172
	 * Use the WP 4.7 wp_doing_ajax function
173
	 * @sine 2.05.07
174
	 */
175
	public static function wp_doing_ajax() {
176
		if ( function_exists( 'wp_doing_ajax' ) ) {
177
			$doing_ajax = wp_doing_ajax();
178
		} else {
179
			$doing_ajax = defined('DOING_AJAX') && DOING_AJAX;
0 ignored issues
show
Bug introduced by
The constant DOING_AJAX was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
180
		}
181
		return $doing_ajax;
182
	}
183
184
	/**
185
	 * @since 2.0.8
186
	 */
187
	public static function prevent_caching() {
188
		global $frm_vars;
189
		return isset( $frm_vars['prevent_caching'] ) && $frm_vars['prevent_caching'];
190
	}
191
192
    /**
193
     * Check if on an admin page
194
     *
195
     * @since 2.0
196
     *
197
     * @param None
198
     * @return boolean
199
     */
200
    public static function is_admin() {
201
        return is_admin() && ! self::wp_doing_ajax();
0 ignored issues
show
Bug introduced by
The function is_admin was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

201
        return /** @scrutinizer ignore-call */ is_admin() && ! self::wp_doing_ajax();
Loading history...
202
    }
203
204
    /**
205
     * Check if value contains blank value or empty array
206
     *
207
     * @since 2.0
208
     * @param mixed $value - value to check
209
	 * @param string
210
     * @return boolean
211
     */
212
    public static function is_empty_value( $value, $empty = '' ) {
213
        return ( is_array( $value ) && empty( $value ) ) || $value === $empty;
214
    }
215
216
    public static function is_not_empty_value( $value, $empty = '' ) {
217
        return ! self::is_empty_value( $value, $empty );
218
    }
219
220
    /**
221
     * Get any value from the $_SERVER
222
     *
223
     * @since 2.0
224
     * @param string $value
225
     * @return string
226
     */
227
	public static function get_server_value( $value ) {
228
        return isset( $_SERVER[ $value ] ) ? wp_strip_all_tags( $_SERVER[ $value ] ) : '';
0 ignored issues
show
Bug introduced by
The function wp_strip_all_tags was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

228
        return isset( $_SERVER[ $value ] ) ? /** @scrutinizer ignore-call */ wp_strip_all_tags( $_SERVER[ $value ] ) : '';
Loading history...
229
    }
230
231
    /**
232
     * Check for the IP address in several places
233
     * Used by [ip] shortcode
234
     *
235
     * @return string The IP address of the current user
236
     */
237
    public static function get_ip_address() {
238
		$ip = '';
239
		foreach ( array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ) as $key ) {
240
            if ( ! isset( $_SERVER[ $key ] ) ) {
241
                continue;
242
            }
243
244
            foreach ( explode( ',', $_SERVER[ $key ] ) as $ip ) {
245
                $ip = trim($ip); // just to be safe
246
247
                if ( filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false ) {
248
                    return sanitize_text_field( $ip );
0 ignored issues
show
Bug introduced by
The function sanitize_text_field was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

248
                    return /** @scrutinizer ignore-call */ sanitize_text_field( $ip );
Loading history...
249
                }
250
            }
251
        }
252
253
		return sanitize_text_field( $ip );
254
    }
255
256
    public static function get_param( $param, $default = '', $src = 'get', $sanitize = '' ) {
257
        if ( strpos($param, '[') ) {
258
            $params = explode('[', $param);
259
            $param = $params[0];
260
        }
261
262
		if ( $src == 'get' ) {
263
            $value = isset( $_POST[ $param ] ) ? stripslashes_deep( $_POST[ $param ] ) : ( isset( $_GET[ $param ] ) ? stripslashes_deep( $_GET[ $param ] ) : $default );
0 ignored issues
show
Bug introduced by
The function stripslashes_deep was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

263
            $value = isset( $_POST[ $param ] ) ? /** @scrutinizer ignore-call */ stripslashes_deep( $_POST[ $param ] ) : ( isset( $_GET[ $param ] ) ? stripslashes_deep( $_GET[ $param ] ) : $default );
Loading history...
264
            if ( ! isset( $_POST[ $param ] ) && isset( $_GET[ $param ] ) && ! is_array( $value ) ) {
265
                $value = stripslashes_deep( htmlspecialchars_decode( $_GET[ $param ] ) );
266
            }
267
			self::sanitize_value( $sanitize, $value );
268
		} else {
269
			$value = self::get_simple_request( array(
270
				'type'     => $src,
271
				'param'    => $param,
272
				'default'  => $default,
273
				'sanitize' => $sanitize,
274
			) );
275
		}
276
277
		if ( isset( $params ) && is_array( $value ) && ! empty( $value ) ) {
278
            foreach ( $params as $k => $p ) {
279
                if ( ! $k || ! is_array($value) ) {
280
                    continue;
281
                }
282
283
                $p = trim($p, ']');
284
                $value = isset( $value[ $p ] ) ? $value[ $p ] : $default;
285
            }
286
        }
287
288
        return $value;
289
    }
290
291
	public static function get_post_param( $param, $default = '', $sanitize = '' ) {
292
		return self::get_simple_request( array(
293
			'type'     => 'post',
294
			'param'    => $param,
295
			'default'  => $default,
296
			'sanitize' => $sanitize,
297
		) );
298
	}
299
300
	/**
301
	 * @since 2.0
302
	 *
303
	 * @param string $param
304
	 * @param string $sanitize
305
	 * @param string $default
306
	 * @return string|array
307
	 */
308
	public static function simple_get( $param, $sanitize = 'sanitize_text_field', $default = '' ) {
309
		return self::get_simple_request( array(
310
			'type'     => 'get',
311
			'param'    => $param,
312
			'default'  => $default,
313
			'sanitize' => $sanitize,
314
		) );
315
	}
316
317
	/**
318
	 * Get a GET/POST/REQUEST value and sanitize it
319
	 *
320
	 * @since 2.0.6
321
	 * @param array $args
322
	 * @return string|array
323
	 */
324
	public static function get_simple_request( $args ) {
325
		$defaults = array(
326
			'param'    => '',
327
			'default'  => '',
328
			'type'     => 'get',
329
			'sanitize' => 'sanitize_text_field',
330
		);
331
		$args = wp_parse_args( $args, $defaults );
0 ignored issues
show
Bug introduced by
The function wp_parse_args was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

331
		$args = /** @scrutinizer ignore-call */ wp_parse_args( $args, $defaults );
Loading history...
332
333
		$value = $args['default'];
334
		if ( $args['type'] == 'get' ) {
335
			if ( $_GET && isset( $_GET[ $args['param'] ] ) ) {
336
				$value = $_GET[ $args['param'] ];
337
			}
338
		} else if ( $args['type'] == 'post' ) {
339
			if ( isset( $_POST[ $args['param'] ] ) ) {
340
				$value = stripslashes_deep( maybe_unserialize( $_POST[ $args['param'] ] ) );
0 ignored issues
show
Bug introduced by
The function stripslashes_deep was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

340
				$value = /** @scrutinizer ignore-call */ stripslashes_deep( maybe_unserialize( $_POST[ $args['param'] ] ) );
Loading history...
Bug introduced by
The function maybe_unserialize was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

340
				$value = stripslashes_deep( /** @scrutinizer ignore-call */ maybe_unserialize( $_POST[ $args['param'] ] ) );
Loading history...
341
			}
342
		} else {
343
			if ( isset( $_REQUEST[ $args['param'] ] ) ) {
344
				$value = $_REQUEST[ $args['param'] ];
345
			}
346
		}
347
348
		self::sanitize_value( $args['sanitize'], $value );
349
		return $value;
350
	}
351
352
	/**
353
	* Preserve backslashes in a value, but make sure value doesn't get compounding slashes
354
	*
355
	* @since 2.0.8
356
	* @param string $value
357
	* @return string $value
358
	*/
359
	public static function preserve_backslashes( $value ) {
360
		// If backslashes have already been added, don't add them again
361
		if ( strpos( $value, '\\\\' ) === false ) {
362
			$value = addslashes( $value );
363
		}
364
		return $value;
365
	}
366
367
	public static function sanitize_value( $sanitize, &$value ) {
368
		if ( ! empty( $sanitize ) ) {
369
			if ( is_array( $value ) ) {
370
				$temp_values = $value;
371
				foreach ( $temp_values as $k => $v ) {
372
					FrmAppHelper::sanitize_value( $sanitize, $value[ $k ] );
373
				}
374
			} else {
375
				$value = call_user_func( $sanitize, $value );
376
			}
377
		}
378
	}
379
380
    public static function sanitize_request( $sanitize_method, &$values ) {
381
        $temp_values = $values;
382
        foreach ( $temp_values as $k => $val ) {
383
            if ( isset( $sanitize_method[ $k ] ) ) {
384
				$values[ $k ] = call_user_func( $sanitize_method[ $k ], $val );
385
            }
386
        }
387
    }
388
389
	public static function sanitize_array( &$values ) {
390
		$temp_values = $values;
391
		foreach ( $temp_values as $k => $val ) {
392
			$values[ $k ] = wp_kses_post( $val );
0 ignored issues
show
Bug introduced by
The function wp_kses_post was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

392
			$values[ $k ] = /** @scrutinizer ignore-call */ wp_kses_post( $val );
Loading history...
393
		}
394
	}
395
396
	/**
397
	 * Sanitize the value, and allow some HTML
398
	 * @since 2.0
399
	 * @param string $value
400
	 * @param array|string $allowed 'all' for everything included as defaults
401
	 * @return string
402
	 */
403
	public static function kses( $value, $allowed = array() ) {
404
		$allowed_html = self::allowed_html( $allowed );
405
406
		return wp_kses( $value, $allowed_html );
0 ignored issues
show
Bug introduced by
The function wp_kses was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

406
		return /** @scrutinizer ignore-call */ wp_kses( $value, $allowed_html );
Loading history...
407
	}
408
409
	/**
410
	 * @since 2.05.03
411
	 */
412
	private static function allowed_html( $allowed ) {
413
		$html = self::safe_html();
414
		$allowed_html = array();
415
		if ( $allowed == 'all' ) {
416
			$allowed_html = $html;
417
		} elseif ( ! empty( $allowed ) ) {
418
			foreach ( (array) $allowed as $a ) {
419
				$allowed_html[ $a ] = isset( $html[ $a ] ) ? $html[ $a ] : array();
420
			}
421
		}
422
423
		return apply_filters( 'frm_striphtml_allowed_tags', $allowed_html );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

423
		return /** @scrutinizer ignore-call */ apply_filters( 'frm_striphtml_allowed_tags', $allowed_html );
Loading history...
424
	}
425
426
	/**
427
	 * @since 2.05.03
428
	 */
429
	private static function safe_html() {
430
		return array(
431
			'a' => array(
432
				'class' => array(),
433
				'href'  => array(),
434
				'id'    => array(),
435
				'rel'   => array(),
436
				'target' => array(),
437
				'title' => array(),
438
			),
439
			'abbr' => array(
440
				'title' => array(),
441
			),
442
			'b' => array(),
443
			'blockquote' => array(
444
				'cite'  => array(),
445
			),
446
			'br'   => array(),
447
			'cite' => array(
448
				'title' => array(),
449
			),
450
			'code' => array(),
451
			'del'  => array(
452
				'datetime' => array(),
453
				'title' => array(),
454
			),
455
			'dd'  => array(),
456
			'div' => array(
457
				'class' => array(),
458
				'id'    => array(),
459
				'title' => array(),
460
				'style' => array(),
461
			),
462
			'dl'  => array(),
463
			'dt'  => array(),
464
			'em'  => array(),
465
			'h1'  => array(),
466
			'h2'  => array(),
467
			'h3'  => array(),
468
			'h4'  => array(),
469
			'h5'  => array(),
470
			'h6'  => array(),
471
			'i'   => array(
472
				'class' => array(),
473
				'id'    => array(),
474
			),
475
			'img' => array(
476
				'alt'    => array(),
477
				'class'  => array(),
478
				'height' => array(),
479
				'id'     => array(),
480
				'src'    => array(),
481
				'width'  => array(),
482
			),
483
			'li' => array(
484
				'class' => array(),
485
				'id'    => array(),
486
			),
487
			'ol' => array(
488
				'class' => array(),
489
				'id'    => array(),
490
			),
491
			'p'   => array(
492
				'class' => array(),
493
				'id'    => array(),
494
			),
495
			'pre' => array(),
496
			'q'   => array(
497
				'cite' => array(),
498
				'title' => array(),
499
			),
500
			'span' => array(
501
				'class' => array(),
502
				'id'    => array(),
503
				'title' => array(),
504
				'style' => array(),
505
			),
506
			'strike' => array(),
507
			'strong' => array(),
508
			'ul' => array(
509
				'class' => array(),
510
				'id'    => array(),
511
			),
512
		);
513
	}
514
515
    /**
516
     * Used when switching the action for a bulk action
517
     * @since 2.0
518
     */
519
    public static function remove_get_action() {
520
        if ( ! isset($_GET) ) {
521
            return;
522
        }
523
524
        $new_action = isset( $_GET['action'] ) ? sanitize_text_field( $_GET['action'] ) : ( isset( $_GET['action2'] ) ? sanitize_text_field( $_GET['action2'] ) : '' );
0 ignored issues
show
Bug introduced by
The function sanitize_text_field was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

524
        $new_action = isset( $_GET['action'] ) ? /** @scrutinizer ignore-call */ sanitize_text_field( $_GET['action'] ) : ( isset( $_GET['action2'] ) ? sanitize_text_field( $_GET['action2'] ) : '' );
Loading history...
525
        if ( ! empty( $new_action ) ) {
526
			$_SERVER['REQUEST_URI'] = str_replace( '&action=' . $new_action, '', FrmAppHelper::get_server_value( 'REQUEST_URI' ) );
527
        }
528
    }
529
530
    /**
531
     * Check the WP query for a parameter
532
     *
533
     * @since 2.0
534
     * @return string|array
535
     */
536
    public static function get_query_var( $value, $param ) {
537
        if ( $value != '' ) {
538
            return $value;
539
        }
540
541
        global $wp_query;
542
        if ( isset( $wp_query->query_vars[ $param ] ) ) {
543
            $value = $wp_query->query_vars[ $param ];
544
        }
545
546
        return $value;
547
    }
548
549
	/**
550
	 * @since 3.0
551
	 */
552
	public static function get_admin_header( $atts ) {
553
		$has_nav = ( isset( $atts['form'] ) && ! empty( $atts['form'] ) && ( ! isset( $atts['is_template'] ) || ! $atts['is_template'] ) );
554
		include( self::plugin_path() . '/classes/views/shared/admin-header.php' );
555
	}
556
557
	/**
558
	 * @since 3.0
559
	 */
560
	public static function add_new_item_link( $atts ) {
561
		if ( isset( $atts['new_link'] ) && ! empty( $atts['new_link'] ) ) { ?>
562
			<a href="<?php echo esc_url( $atts['new_link'] ) ?>" class="add-new-h2 frm_animate_bg"><?php esc_html_e( 'Add New', 'formidable' ); ?></a>
0 ignored issues
show
Bug introduced by
The function esc_html_e was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

562
			<a href="<?php echo esc_url( $atts['new_link'] ) ?>" class="add-new-h2 frm_animate_bg"><?php /** @scrutinizer ignore-call */ esc_html_e( 'Add New', 'formidable' ); ?></a>
Loading history...
Bug introduced by
The function esc_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

562
			<a href="<?php echo /** @scrutinizer ignore-call */ esc_url( $atts['new_link'] ) ?>" class="add-new-h2 frm_animate_bg"><?php esc_html_e( 'Add New', 'formidable' ); ?></a>
Loading history...
563
		<?php
564
		} elseif ( isset( $atts['link_hook'] ) ) {
565
			do_action( $atts['link_hook']['hook'], $atts['link_hook']['param'] );
0 ignored issues
show
Bug introduced by
The function do_action was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

565
			/** @scrutinizer ignore-call */ 
566
   do_action( $atts['link_hook']['hook'], $atts['link_hook']['param'] );
Loading history...
566
		}
567
	}
568
569
    /**
570
     * @param string $type
571
     */
572
    public static function trigger_hook_load( $type, $object = null ) {
573
        // only load the form hooks once
574
		$hooks_loaded = apply_filters( 'frm_' . $type . '_hooks_loaded', false, $object );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

574
		$hooks_loaded = /** @scrutinizer ignore-call */ apply_filters( 'frm_' . $type . '_hooks_loaded', false, $object );
Loading history...
575
        if ( ! $hooks_loaded ) {
576
			do_action( 'frm_load_' . $type . '_hooks' );
0 ignored issues
show
Bug introduced by
The function do_action was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

576
			/** @scrutinizer ignore-call */ 
577
   do_action( 'frm_load_' . $type . '_hooks' );
Loading history...
577
        }
578
    }
579
580
	/**
581
	 * Save all front-end js scripts into a single file
582
	 *
583
	 * @since 3.0
584
	 */
585
	public static function save_combined_js() {
586
		$file_atts = array(
587
			'file_name' => 'frm.min.js',
588
			'new_file_path' => FrmAppHelper::plugin_path() . '/js',
589
		);
590
		$new_file = new FrmCreateFile( $file_atts );
591
592
		$files = array(
593
			FrmAppHelper::plugin_path() . '/js/jquery/jquery.placeholder.min.js',
594
			FrmAppHelper::plugin_path() . '/js/formidable.min.js',
595
		);
596
		$files = apply_filters( 'frm_combined_js_files', $files );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

596
		$files = /** @scrutinizer ignore-call */ apply_filters( 'frm_combined_js_files', $files );
Loading history...
597
		$new_file->combine_files( $files );
598
	}
599
600
    /**
601
     * Check a value from a shortcode to see if true or false.
602
     * True when value is 1, true, 'true', 'yes'
603
     *
604
     * @since 1.07.10
605
     *
606
     * @param string $value The value to compare
607
     * @return boolean True or False
608
     */
609
	public static function is_true( $value ) {
610
        return ( true === $value || 1 == $value || 'true' == $value || 'yes' == $value );
611
    }
612
613
    /**
614
     * Used to filter shortcode in text widgets
615
     */
616
    public static function widget_text_filter_callback( $matches ) {
617
		_deprecated_function( __METHOD__, '2.5.4' );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

617
		/** @scrutinizer ignore-call */ 
618
  _deprecated_function( __METHOD__, '2.5.4' );
Loading history...
618
        return do_shortcode( $matches[0] );
0 ignored issues
show
Bug introduced by
The function do_shortcode was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

618
        return /** @scrutinizer ignore-call */ do_shortcode( $matches[0] );
Loading history...
619
    }
620
621
	public static function get_pages() {
622
		return get_posts( array(
0 ignored issues
show
Bug introduced by
The function get_posts was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

622
		return /** @scrutinizer ignore-call */ get_posts( array(
Loading history...
623
			'post_type'   => 'page',
624
			'post_status' => array( 'publish', 'private' ),
625
			'numberposts' => -1,
0 ignored issues
show
introduced by
Disabling pagination is prohibited in VIP context, do not set numberposts to -1 ever.
Loading history...
626
			'orderby'     => 'title',
627
			'order'       => 'ASC',
628
		) );
629
	}
630
631
    public static function wp_pages_dropdown( $field_name, $page_id, $truncate = false ) {
632
        $pages = self::get_pages();
633
		$selected = self::get_post_param( $field_name, $page_id, 'absint' );
634
    ?>
635
        <select name="<?php echo esc_attr($field_name); ?>" id="<?php echo esc_attr($field_name); ?>" class="frm-pages-dropdown">
0 ignored issues
show
Bug introduced by
The function esc_attr was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

635
        <select name="<?php echo /** @scrutinizer ignore-call */ esc_attr($field_name); ?>" id="<?php echo esc_attr($field_name); ?>" class="frm-pages-dropdown">
Loading history...
636
            <option value=""> </option>
637
            <?php foreach ( $pages as $page ) { ?>
638
				<option value="<?php echo esc_attr($page->ID); ?>" <?php selected( $selected, $page->ID ) ?>>
0 ignored issues
show
Bug introduced by
The function selected was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

638
				<option value="<?php echo esc_attr($page->ID); ?>" <?php /** @scrutinizer ignore-call */ selected( $selected, $page->ID ) ?>>
Loading history...
639
					<?php echo esc_html( $truncate ? self::truncate( $page->post_title, $truncate ) : $page->post_title ); ?>
0 ignored issues
show
Bug introduced by
The function esc_html was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

639
					<?php echo /** @scrutinizer ignore-call */ esc_html( $truncate ? self::truncate( $page->post_title, $truncate ) : $page->post_title ); ?>
Loading history...
640
				</option>
641
            <?php } ?>
642
        </select>
643
    <?php
644
    }
645
646
	public static function post_edit_link( $post_id ) {
647
        $post = get_post($post_id);
0 ignored issues
show
introduced by
Overridding WordPress globals is prohibited
Loading history...
Bug introduced by
The function get_post was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

647
        $post = /** @scrutinizer ignore-call */ get_post($post_id);
Loading history...
648
        if ( $post ) {
649
			$post_url = admin_url( 'post.php?post=' . $post_id . '&action=edit' );
0 ignored issues
show
Bug introduced by
The function admin_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

649
			$post_url = /** @scrutinizer ignore-call */ admin_url( 'post.php?post=' . $post_id . '&action=edit' );
Loading history...
650
			return '<a href="' . esc_url( $post_url ) . '">' . self::truncate( $post->post_title, 50 ) . '</a>';
0 ignored issues
show
Bug introduced by
The function esc_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

650
			return '<a href="' . /** @scrutinizer ignore-call */ esc_url( $post_url ) . '">' . self::truncate( $post->post_title, 50 ) . '</a>';
Loading history...
651
        }
652
        return '';
653
    }
654
655
	public static function wp_roles_dropdown( $field_name, $capability, $multiple = 'single' ) {
656
		?>
657
		<select name="<?php echo esc_attr($field_name); ?>" id="<?php echo esc_attr($field_name); ?>" <?php echo ( 'multiple' === $multiple ) ? 'multiple="multiple"' : ''; ?> class="frm_multiselect">
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '('
Loading history...
Bug introduced by
The function esc_attr was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

657
		<select name="<?php echo /** @scrutinizer ignore-call */ esc_attr($field_name); ?>" id="<?php echo esc_attr($field_name); ?>" <?php echo ( 'multiple' === $multiple ) ? 'multiple="multiple"' : ''; ?> class="frm_multiselect">
Loading history...
658
			<?php self::roles_options( $capability ); ?>
659
		</select>
660
		<?php
661
	}
662
663
	public static function roles_options( $capability ) {
664
        global $frm_vars;
665
        if ( isset($frm_vars['editable_roles']) ) {
666
            $editable_roles = $frm_vars['editable_roles'];
667
        } else {
668
            $editable_roles = get_editable_roles();
0 ignored issues
show
Bug introduced by
The function get_editable_roles was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

668
            $editable_roles = /** @scrutinizer ignore-call */ get_editable_roles();
Loading history...
669
            $frm_vars['editable_roles'] = $editable_roles;
670
        }
671
672
        foreach ( $editable_roles as $role => $details ) {
673
			$name = translate_user_role( $details['name'] );
0 ignored issues
show
Bug introduced by
The function translate_user_role was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

673
			$name = /** @scrutinizer ignore-call */ translate_user_role( $details['name'] );
Loading history...
674
			?>
675
        <option value="<?php echo esc_attr($role) ?>" <?php echo in_array($role, (array) $capability) ? ' selected="selected"' : ''; ?>><?php echo esc_attr($name) ?> </option>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'in_array'
Loading history...
Bug introduced by
The function esc_attr was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

675
        <option value="<?php echo /** @scrutinizer ignore-call */ esc_attr($role) ?>" <?php echo in_array($role, (array) $capability) ? ' selected="selected"' : ''; ?>><?php echo esc_attr($name) ?> </option>
Loading history...
676
<?php
677
            unset($role, $details);
678
        }
679
    }
680
681
	public static function frm_capabilities( $type = 'auto' ) {
682
        $cap = array(
683
            'frm_view_forms'        => __( 'View Forms and Templates', 'formidable' ),
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

683
            'frm_view_forms'        => /** @scrutinizer ignore-call */ __( 'View Forms and Templates', 'formidable' ),
Loading history...
684
            'frm_edit_forms'        => __( 'Add/Edit Forms and Templates', 'formidable' ),
685
            'frm_delete_forms'      => __( 'Delete Forms and Templates', 'formidable' ),
686
            'frm_change_settings'   => __( 'Access this Settings Page', 'formidable' ),
687
            'frm_view_entries'      => __( 'View Entries from Admin Area', 'formidable' ),
688
            'frm_delete_entries'    => __( 'Delete Entries from Admin Area', 'formidable' ),
689
        );
690
691
		if ( ! self::pro_is_installed() && 'pro' != $type ) {
692
            return $cap;
693
        }
694
695
        $cap['frm_create_entries'] = __( 'Add Entries from Admin Area', 'formidable' );
696
        $cap['frm_edit_entries'] = __( 'Edit Entries from Admin Area', 'formidable' );
697
        $cap['frm_view_reports'] = __( 'View Reports', 'formidable' );
698
        $cap['frm_edit_displays'] = __( 'Add/Edit Views', 'formidable' );
699
700
        return $cap;
701
    }
702
703
	public static function user_has_permission( $needed_role ) {
704
        if ( $needed_role == '-1' ) {
705
            return false;
706
		}
707
708
        // $needed_role will be equal to blank if "Logged-in users" is selected
709
        if ( ( $needed_role == '' && is_user_logged_in() ) || current_user_can( $needed_role ) ) {
0 ignored issues
show
Bug introduced by
The function current_user_can was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

709
        if ( ( $needed_role == '' && is_user_logged_in() ) || /** @scrutinizer ignore-call */ current_user_can( $needed_role ) ) {
Loading history...
Bug introduced by
The function is_user_logged_in was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

709
        if ( ( $needed_role == '' && /** @scrutinizer ignore-call */ is_user_logged_in() ) || current_user_can( $needed_role ) ) {
Loading history...
710
            return true;
711
        }
712
713
        $roles = array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' );
714
        foreach ( $roles as $role ) {
715
			if ( current_user_can( $role ) ) {
716
        		return true;
717
			}
718
        	if ( $role == $needed_role ) {
719
        		break;
720
			}
721
        }
722
        return false;
723
    }
724
725
    /**
726
     * Make sure administrators can see Formidable menu
727
     *
728
     * @since 2.0
729
     */
730
    public static function maybe_add_permissions() {
731
		self::force_capability( 'frm_view_entries' );
732
733
        if ( ! current_user_can('administrator') || current_user_can('frm_view_forms') ) {
0 ignored issues
show
Bug introduced by
The function current_user_can was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

733
        if ( ! /** @scrutinizer ignore-call */ current_user_can('administrator') || current_user_can('frm_view_forms') ) {
Loading history...
734
            return;
735
        }
736
737
		$user_id = get_current_user_id();
0 ignored issues
show
Bug introduced by
The function get_current_user_id was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

737
		$user_id = /** @scrutinizer ignore-call */ get_current_user_id();
Loading history...
738
		$user = new WP_User( $user_id );
0 ignored issues
show
Bug introduced by
The type WP_User was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
739
        $frm_roles = self::frm_capabilities();
740
        foreach ( $frm_roles as $frm_role => $frm_role_description ) {
741
			$user->add_cap( $frm_role );
742
            unset($frm_role, $frm_role_description);
743
        }
744
    }
745
746
	/**
747
	 * Make sure admins have permission to see the menu items
748
	 * @since 2.0.6
749
	 */
750
	public static function force_capability( $cap = 'frm_change_settings' ) {
751
		if ( current_user_can( 'administrator' ) && ! current_user_can( $cap ) ) {
0 ignored issues
show
Bug introduced by
The function current_user_can was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

751
		if ( /** @scrutinizer ignore-call */ current_user_can( 'administrator' ) && ! current_user_can( $cap ) ) {
Loading history...
752
			$role = get_role( 'administrator' );
0 ignored issues
show
Bug introduced by
The function get_role was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

752
			$role = /** @scrutinizer ignore-call */ get_role( 'administrator' );
Loading history...
753
			$frm_roles = self::frm_capabilities();
754
			foreach ( $frm_roles as $frm_role => $frm_role_description ) {
755
				$role->add_cap( $frm_role );
756
			}
757
		}
758
	}
759
760
    /**
761
     * Check if the user has permision for action.
762
     * Return permission message and stop the action if no permission
763
     * @since 2.0
764
     * @param string $permission
765
     */
766
	public static function permission_check( $permission, $show_message = 'show' ) {
767
        $permission_error = self::permission_nonce_error($permission);
768
        if ( $permission_error !== false ) {
0 ignored issues
show
introduced by
The condition $permission_error !== false can never be true.
Loading history...
769
            if ( 'hide' == $show_message ) {
770
                $permission_error = '';
771
            }
772
            wp_die($permission_error);
0 ignored issues
show
Bug introduced by
The function wp_die was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

772
            /** @scrutinizer ignore-call */ 
773
            wp_die($permission_error);
Loading history...
773
        }
774
    }
775
776
    /**
777
     * Check user permission and nonce
778
     * @since 2.0
779
     * @param string $permission
780
     * @return false|string The permission message or false if allowed
781
     */
782
	public static function permission_nonce_error( $permission, $nonce_name = '', $nonce = '' ) {
783
		if ( ! empty( $permission ) && ! current_user_can( $permission ) && ! current_user_can( 'administrator' ) ) {
0 ignored issues
show
Bug introduced by
The function current_user_can was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

783
		if ( ! empty( $permission ) && ! /** @scrutinizer ignore-call */ current_user_can( $permission ) && ! current_user_can( 'administrator' ) ) {
Loading history...
784
			$frm_settings = self::get_settings();
785
			return $frm_settings->admin_permission;
786
		}
787
788
		$error = false;
789
        if ( empty($nonce_name) ) {
790
            return $error;
791
        }
792
793
        if ( $_REQUEST && ( ! isset( $_REQUEST[ $nonce_name ] ) || ! wp_verify_nonce( $_REQUEST[ $nonce_name ], $nonce ) ) ) {
0 ignored issues
show
Bug introduced by
The function wp_verify_nonce was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

793
        if ( $_REQUEST && ( ! isset( $_REQUEST[ $nonce_name ] ) || ! /** @scrutinizer ignore-call */ wp_verify_nonce( $_REQUEST[ $nonce_name ], $nonce ) ) ) {
Loading history...
794
            $frm_settings = self::get_settings();
795
            $error = $frm_settings->admin_permission;
796
        }
797
798
        return $error;
799
    }
800
801
    public static function checked( $values, $current ) {
802
		if ( self::check_selected( $values, $current ) ) {
803
            echo ' checked="checked"';
804
		}
805
    }
806
807
	public static function check_selected( $values, $current ) {
808
		$values = self::recursive_function_map( $values, 'trim' );
809
		$values = self::recursive_function_map( $values, 'htmlspecialchars_decode' );
810
		$current = htmlspecialchars_decode( trim( $current ) );
811
812
		return ( is_array( $values ) && in_array( $current, $values ) ) || ( ! is_array( $values ) && $values == $current );
813
	}
814
815
	public static function recursive_function_map( $value, $function ) {
816
		if ( is_array( $value ) ) {
817
			$original_function = $function;
818
			if ( count( $value ) ) {
819
				$function = explode( ', ', FrmDb::prepare_array_values( $value, $function ) );
820
			} else {
821
				$function = array( $function );
822
			}
823
			if ( ! self::is_assoc( $value ) ) {
824
				$value = array_map( array( 'FrmAppHelper', 'recursive_function_map' ), $value, $function );
825
			} else {
826
				foreach ( $value as $k => $v ) {
827
					if ( ! is_array( $v ) ) {
828
						$value[ $k ] = call_user_func( $original_function, $v );
829
					}
830
				}
831
			}
832
		} else {
833
			$value = call_user_func( $function, $value );
834
		}
835
836
		return $value;
837
	}
838
839
	public static function is_assoc( $array ) {
840
		return (bool) count( array_filter( array_keys( $array ), 'is_string' ) );
841
	}
842
843
    /**
844
     * Flatten a multi-dimensional array
845
     */
846
	public static function array_flatten( $array, $keys = 'keep' ) {
847
        $return = array();
848
        foreach ( $array as $key => $value ) {
849
            if ( is_array($value) ) {
850
				$return = array_merge( $return, self::array_flatten( $value, $keys ) );
851
            } else {
852
				if ( $keys == 'keep' ) {
853
					$return[ $key ] = $value;
854
				} else {
855
					$return[] = $value;
856
				}
857
            }
858
        }
859
        return $return;
860
    }
861
862
	public static function esc_textarea( $text, $is_rich_text = false ) {
863
		$safe_text = str_replace( '&quot;', '"', $text );
864
		if ( ! $is_rich_text ) {
865
			$safe_text = htmlspecialchars( $safe_text, ENT_NOQUOTES );
866
		}
867
		$safe_text = str_replace( '&amp;', '&', $safe_text );
868
		return apply_filters( 'esc_textarea', $safe_text, $text );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

868
		return /** @scrutinizer ignore-call */ apply_filters( 'esc_textarea', $safe_text, $text );
Loading history...
869
	}
870
871
    /**
872
     * Add auto paragraphs to text areas
873
     * @since 2.0
874
     */
875
	public static function use_wpautop( $content ) {
876
        if ( apply_filters('frm_use_wpautop', true) ) {
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

876
        if ( /** @scrutinizer ignore-call */ apply_filters('frm_use_wpautop', true) ) {
Loading history...
877
            $content = wpautop(str_replace( '<br>', '<br />', $content));
0 ignored issues
show
Bug introduced by
The function wpautop was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

877
            $content = /** @scrutinizer ignore-call */ wpautop(str_replace( '<br>', '<br />', $content));
Loading history...
878
        }
879
        return $content;
880
    }
881
882
	public static function replace_quotes( $val ) {
883
        //Replace double quotes
884
		$val = str_replace( array( '&#8220;', '&#8221;', '&#8243;' ), '"', $val );
885
        //Replace single quotes
886
        $val = str_replace( array( '&#8216;', '&#8217;', '&#8242;', '&prime;', '&rsquo;', '&lsquo;' ), "'", $val );
887
        return $val;
888
    }
889
890
    /**
891
     * @since 2.0
892
     * @return string The base Google APIS url for the current version of jQuery UI
893
     */
894
    public static function jquery_ui_base_url() {
895
		$url = 'http' . ( is_ssl() ? 's' : '' ) . '://ajax.googleapis.com/ajax/libs/jqueryui/' . self::script_version( 'jquery-ui-core', '1.11.4' );
0 ignored issues
show
Bug introduced by
The function is_ssl was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

895
		$url = 'http' . ( /** @scrutinizer ignore-call */ is_ssl() ? 's' : '' ) . '://ajax.googleapis.com/ajax/libs/jqueryui/' . self::script_version( 'jquery-ui-core', '1.11.4' );
Loading history...
896
        $url = apply_filters('frm_jquery_ui_base_url', $url);
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

896
        $url = /** @scrutinizer ignore-call */ apply_filters('frm_jquery_ui_base_url', $url);
Loading history...
897
        return $url;
898
    }
899
900
    /**
901
     * @param string $handle
902
     */
903
	public static function script_version( $handle, $default = 0 ) {
904
		global $wp_scripts;
905
		if ( ! $wp_scripts ) {
906
			return $default;
907
		}
908
909
		$ver = $default;
910
		if ( ! isset( $wp_scripts->registered[ $handle ] ) ) {
911
			return $ver;
912
		}
913
914
		$query = $wp_scripts->registered[ $handle ];
915
		if ( is_object( $query ) && ! empty( $query->ver ) ) {
916
			$ver = $query->ver;
917
		}
918
919
		return $ver;
920
	}
921
922
	public static function js_redirect( $url ) {
923
		return '<script type="text/javascript">window.location="' . esc_url_raw( $url ) . '"</script>';
0 ignored issues
show
Bug introduced by
The function esc_url_raw was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

923
		return '<script type="text/javascript">window.location="' . /** @scrutinizer ignore-call */ esc_url_raw( $url ) . '"</script>';
Loading history...
924
    }
925
926
	public static function get_user_id_param( $user_id ) {
927
        if ( ! $user_id || empty($user_id) || is_numeric($user_id) ) {
928
            return $user_id;
929
        }
930
931
		$user_id = sanitize_text_field( $user_id );
0 ignored issues
show
Bug introduced by
The function sanitize_text_field was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

931
		$user_id = /** @scrutinizer ignore-call */ sanitize_text_field( $user_id );
Loading history...
932
		if ( $user_id == 'current' ) {
933
			$user_id = get_current_user_id();
0 ignored issues
show
Bug introduced by
The function get_current_user_id was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

933
			$user_id = /** @scrutinizer ignore-call */ get_current_user_id();
Loading history...
934
		} else {
935
            if ( is_email($user_id) ) {
0 ignored issues
show
Bug introduced by
The function is_email was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

935
            if ( /** @scrutinizer ignore-call */ is_email($user_id) ) {
Loading history...
936
                $user = get_user_by('email', $user_id);
0 ignored issues
show
Bug introduced by
The function get_user_by was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

936
                $user = /** @scrutinizer ignore-call */ get_user_by('email', $user_id);
Loading history...
937
            } else {
938
                $user = get_user_by('login', $user_id);
939
            }
940
941
            if ( $user ) {
942
                $user_id = $user->ID;
943
            }
944
            unset($user);
945
        }
946
947
        return $user_id;
948
    }
949
950
	public static function get_file_contents( $filename, $atts = array() ) {
951
        if ( ! is_file($filename) ) {
952
            return false;
953
        }
954
955
        extract($atts);
0 ignored issues
show
introduced by
extract() usage is highly discouraged, due to the complexity and unintended issues it might cause.
Loading history...
956
        ob_start();
957
        include($filename);
958
        $contents = ob_get_contents();
959
        ob_end_clean();
960
        return $contents;
961
    }
962
963
    /**
964
     * @param string $table_name
965
     * @param string $column
966
	 * @param int $id
967
	 * @param int $num_chars
968
     */
969
    public static function get_unique_key( $name = '', $table_name, $column, $id = 0, $num_chars = 5 ) {
970
        $key = '';
971
972
        if ( ! empty( $name ) ) {
973
            $key = sanitize_key($name);
0 ignored issues
show
Bug introduced by
The function sanitize_key was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

973
            $key = /** @scrutinizer ignore-call */ sanitize_key($name);
Loading history...
974
        }
975
976
		if ( empty( $key ) ) {
0 ignored issues
show
introduced by
The condition empty($key) can never be false.
Loading history...
977
            $max_slug_value = pow(36, $num_chars);
978
            $min_slug_value = 37; // we want to have at least 2 characters in the slug
979
            $key = base_convert( rand($min_slug_value, $max_slug_value), 10, 36 );
980
        }
981
982
		if ( is_numeric($key) || in_array( $key, array( 'id', 'key', 'created-at', 'detaillink', 'editlink', 'siteurl', 'evenodd' ) ) ) {
983
			$key = $key . 'a';
984
        }
985
986
		$key_check = FrmDb::get_var( $table_name, array(
987
			$column => $key,
988
			'ID !'  => $id,
989
		), $column );
990
991
        if ( $key_check || is_numeric($key_check) ) {
992
            $suffix = 2;
993
			do {
994
				$alt_post_name = substr( $key, 0, 200 - ( strlen( $suffix ) + 1 ) ) . $suffix;
995
				$key_check = FrmDb::get_var( $table_name, array(
996
					$column => $alt_post_name,
997
					'ID !'  => $id,
998
				), $column );
999
				$suffix++;
1000
			} while ( $key_check || is_numeric( $key_check ) );
1001
			$key = $alt_post_name;
1002
        }
1003
        return $key;
1004
    }
1005
1006
    /**
1007
     * Editing a Form or Entry
1008
     * @param string $table
1009
     * @return bool|array
1010
     */
1011
    public static function setup_edit_vars( $record, $table, $fields = '', $default = false, $post_values = array(), $args = array() ) {
1012
        if ( ! $record ) {
1013
            return false;
1014
        }
1015
1016
        if ( empty($post_values) ) {
1017
            $post_values = stripslashes_deep($_POST);
0 ignored issues
show
Bug introduced by
The function stripslashes_deep was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1017
            $post_values = /** @scrutinizer ignore-call */ stripslashes_deep($_POST);
Loading history...
1018
        }
1019
1020
		$values = array(
1021
			'id' => $record->id,
1022
			'fields' => array(),
1023
		);
1024
1025
		foreach ( array( 'name', 'description' ) as $var ) {
1026
            $default_val = isset($record->{$var}) ? $record->{$var} : '';
1027
			$values[ $var ] = self::get_param( $var, $default_val, 'get', 'wp_kses_post' );
1028
            unset($var, $default_val);
1029
        }
1030
1031
        $values['description'] = self::use_wpautop($values['description']);
1032
1033
        self::fill_form_opts($record, $table, $post_values, $values);
1034
1035
		self::prepare_field_arrays( $fields, $record, $values, array_merge( $args, compact( 'default', 'post_values' ) ) );
1036
1037
        if ( $table == 'entries' ) {
1038
            $values = FrmEntriesHelper::setup_edit_vars( $values, $record );
1039
        } else if ( $table == 'forms' ) {
1040
            $values = FrmFormsHelper::setup_edit_vars( $values, $record, $post_values );
1041
        }
1042
1043
        return $values;
1044
    }
1045
1046
	private static function prepare_field_arrays( $fields, $record, array &$values, $args ) {
1047
		if ( ! empty( $fields ) ) {
1048
			foreach ( (array) $fields as $field ) {
1049
				$field->default_value = apply_filters('frm_get_default_value', $field->default_value, $field, true );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1049
				$field->default_value = /** @scrutinizer ignore-call */ apply_filters('frm_get_default_value', $field->default_value, $field, true );
Loading history...
1050
				$args['parent_form_id'] = isset( $args['parent_form_id'] ) ? $args['parent_form_id'] : $field->form_id;
1051
				self::fill_field_defaults( $field, $record, $values, $args );
1052
			}
1053
		}
1054
	}
1055
1056
	private static function fill_field_defaults( $field, $record, array &$values, $args ) {
1057
        $post_values = $args['post_values'];
1058
1059
        if ( $args['default'] ) {
1060
            $meta_value = $field->default_value;
1061
        } else {
1062
            if ( $record->post_id && self::pro_is_installed() && isset($field->field_options['post_field']) && $field->field_options['post_field'] ) {
1063
                if ( ! isset($field->field_options['custom_field']) ) {
1064
                    $field->field_options['custom_field'] = '';
1065
                }
1066
				$meta_value = FrmProEntryMetaHelper::get_post_value( $record->post_id, $field->field_options['post_field'], $field->field_options['custom_field'], array(
0 ignored issues
show
Bug introduced by
The type FrmProEntryMetaHelper was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
1067
					'truncate' => false,
1068
					'type' => $field->type,
1069
					'form_id' => $field->form_id,
1070
					'field' => $field,
1071
				) );
1072
            } else {
1073
				$meta_value = FrmEntryMeta::get_meta_value( $record, $field->id );
1074
            }
1075
        }
1076
1077
		$field_type = isset( $post_values['field_options'][ 'type_' . $field->id ] ) ? $post_values['field_options'][ 'type_' . $field->id ] : $field->type;
1078
        $new_value = isset( $post_values['item_meta'][ $field->id ] ) ? maybe_unserialize( $post_values['item_meta'][ $field->id ] ) : $meta_value;
0 ignored issues
show
Bug introduced by
The function maybe_unserialize was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1078
        $new_value = isset( $post_values['item_meta'][ $field->id ] ) ? /** @scrutinizer ignore-call */ maybe_unserialize( $post_values['item_meta'][ $field->id ] ) : $meta_value;
Loading history...
1079
1080
		$field_array = self::start_field_array( $field );
1081
		$field_array['value'] = $new_value;
1082
		$field_array['type']  = apply_filters( 'frm_field_type', $field_type, $field, $new_value );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1082
		$field_array['type']  = /** @scrutinizer ignore-call */ apply_filters( 'frm_field_type', $field_type, $field, $new_value );
Loading history...
1083
		$field_array['parent_form_id'] = $args['parent_form_id'];
1084
1085
        $args['field_type'] = $field_type;
1086
1087
		FrmFieldsHelper::prepare_edit_front_field( $field_array, $field, $values['id'], $args );
1088
1089
        if ( ! isset($field_array['unique']) || ! $field_array['unique'] ) {
1090
            $field_array['unique_msg'] = '';
1091
        }
1092
1093
        $field_array = array_merge( $field->field_options, $field_array );
1094
1095
        $values['fields'][ $field->id ] = $field_array;
1096
    }
1097
1098
	/**
1099
	 * @since 3.0
1100
	 * @param object $field
1101
	 * @return array
1102
	 */
1103
	public static function start_field_array( $field ) {
1104
		return array(
1105
			'id'            => $field->id,
1106
			'default_value' => $field->default_value,
1107
			'name'          => $field->name,
1108
			'description'   => $field->description,
1109
			'options'       => $field->options,
1110
			'required'      => $field->required,
1111
			'field_key'     => $field->field_key,
1112
			'field_order'   => $field->field_order,
1113
			'form_id'       => $field->form_id,
1114
		);
1115
	}
1116
1117
    /**
1118
     * @param string $table
1119
     */
1120
	private static function fill_form_opts( $record, $table, $post_values, array &$values ) {
1121
        if ( $table == 'entries' ) {
1122
            $form = $record->form_id;
1123
			FrmForm::maybe_get_form( $form );
1124
        } else {
1125
            $form = $record;
1126
        }
1127
1128
        if ( ! $form ) {
1129
            return;
1130
        }
1131
1132
        $values['form_name'] = isset($record->form_id) ? $form->name : '';
1133
		$values['parent_form_id'] = isset( $record->form_id ) ? $form->parent_form_id : 0;
1134
1135
        if ( ! is_array($form->options) ) {
1136
            return;
1137
        }
1138
1139
        foreach ( $form->options as $opt => $value ) {
1140
            $values[ $opt ] = isset( $post_values[ $opt ] ) ? maybe_unserialize( $post_values[ $opt ] ) : $value;
0 ignored issues
show
Bug introduced by
The function maybe_unserialize was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1140
            $values[ $opt ] = isset( $post_values[ $opt ] ) ? /** @scrutinizer ignore-call */ maybe_unserialize( $post_values[ $opt ] ) : $value;
Loading history...
1141
        }
1142
1143
        self::fill_form_defaults($post_values, $values);
1144
    }
1145
1146
    /**
1147
     * Set to POST value or default
1148
     */
1149
	private static function fill_form_defaults( $post_values, array &$values ) {
1150
        $form_defaults = FrmFormsHelper::get_default_opts();
1151
1152
        foreach ( $form_defaults as $opt => $default ) {
1153
            if ( ! isset( $values[ $opt ] ) || $values[ $opt ] == '' ) {
1154
				$values[ $opt ] = ( $post_values && isset( $post_values['options'][ $opt ] ) ) ? $post_values['options'][ $opt ] : $default;
1155
            }
1156
1157
            unset($opt, $defaut);
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $defaut seems to be never defined.
Loading history...
1158
        }
1159
1160
		if ( ! isset( $values['custom_style'] ) ) {
1161
			$values['custom_style'] = self::custom_style_value( $post_values );
1162
		}
1163
1164
		foreach ( array( 'before', 'after', 'submit' ) as $h ) {
1165
			if ( ! isset( $values[ $h . '_html' ] ) ) {
1166
				$values[ $h . '_html' ] = ( isset( $post_values['options'][ $h . '_html' ] ) ? $post_values['options'][ $h . '_html' ] : FrmFormsHelper::get_default_html( $h ) );
1167
            }
1168
            unset($h);
1169
        }
1170
    }
1171
1172
	/**
1173
	 * @since 2.2.10
1174
	 * @param array $post_values
1175
	 * @return boolean|int
1176
	 */
1177
	public static function custom_style_value( $post_values ) {
1178
		if ( ! empty( $post_values ) && isset( $post_values['options']['custom_style'] ) ) {
1179
			$custom_style = absint( $post_values['options']['custom_style'] );
0 ignored issues
show
Bug introduced by
The function absint was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1179
			$custom_style = /** @scrutinizer ignore-call */ absint( $post_values['options']['custom_style'] );
Loading history...
1180
		} else {
1181
			$frm_settings = FrmAppHelper::get_settings();
1182
			$custom_style = ( $frm_settings->load_style != 'none' );
1183
		}
1184
		return $custom_style;
1185
	}
1186
1187
	public static function insert_opt_html( $args ) {
1188
		$class = '';
1189
		$possible_email_field = FrmFieldFactory::field_has_property( $args['type'], 'holds_email_values' );
1190
		if ( $possible_email_field ) {
1191
			$class .= 'show_frm_not_email_to';
1192
		}
1193
    ?>
1194
<li>
1195
    <a href="javascript:void(0)" class="frmids frm_insert_code alignright <?php echo esc_attr($class) ?>" data-code="<?php echo esc_attr($args['id']) ?>" >[<?php echo esc_attr( $args['id'] ) ?>]</a>
0 ignored issues
show
Bug introduced by
The function esc_attr was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1195
    <a href="javascript:void(0)" class="frmids frm_insert_code alignright <?php echo /** @scrutinizer ignore-call */ esc_attr($class) ?>" data-code="<?php echo esc_attr($args['id']) ?>" >[<?php echo esc_attr( $args['id'] ) ?>]</a>
Loading history...
1196
    <a href="javascript:void(0)" class="frmkeys frm_insert_code alignright <?php echo esc_attr($class) ?>" data-code="<?php echo esc_attr($args['key']) ?>" >[<?php echo esc_attr( self::truncate($args['key'], 10) ) ?>]</a>
1197
    <a href="javascript:void(0)" class="frm_insert_code <?php echo esc_attr( $class ) ?>" data-code="<?php echo esc_attr($args['id']) ?>" ><?php echo esc_attr( self::truncate($args['name'], 60) ) ?></a>
1198
</li>
1199
    <?php
1200
    }
1201
1202
	public static function truncate( $str, $length, $minword = 3, $continue = '...' ) {
1203
        if ( is_array( $str ) ) {
1204
            return '';
1205
		}
1206
1207
        $length = (int) $length;
1208
		$str = wp_strip_all_tags( $str );
0 ignored issues
show
Bug introduced by
The function wp_strip_all_tags was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1208
		$str = /** @scrutinizer ignore-call */ wp_strip_all_tags( $str );
Loading history...
1209
		$original_len = self::mb_function( array( 'mb_strlen', 'strlen' ), array( $str ) );
1210
1211
		if ( $length == 0 ) {
1212
            return '';
1213
        } else if ( $length <= 10 ) {
1214
			$sub = self::mb_function( array( 'mb_substr', 'substr' ), array( $str, 0, $length ) );
1215
			return $sub . ( ( $length < $original_len ) ? $continue : '' );
1216
        }
1217
1218
        $sub = '';
1219
        $len = 0;
1220
1221
		$words = self::mb_function( array( 'mb_split', 'explode' ), array( ' ', $str ) );
1222
1223
		foreach ( $words as $word ) {
1224
			$part = ( ( $sub != '' ) ? ' ' : '' ) . $word;
1225
			$total_len = self::mb_function( array( 'mb_strlen', 'strlen' ), array( $sub . $part ) );
1226
            if ( $total_len > $length && str_word_count($sub) ) {
1227
                break;
1228
            }
1229
1230
            $sub .= $part;
1231
			$len += self::mb_function( array( 'mb_strlen', 'strlen' ), array( $part ) );
1232
1233
            if ( str_word_count($sub) > $minword && $total_len >= $length ) {
1234
                break;
1235
            }
1236
1237
            unset($total_len, $word);
1238
        }
1239
1240
		return $sub . ( ( $len < $original_len ) ? $continue : '' );
1241
    }
1242
1243
	public static function mb_function( $function_names, $args ) {
1244
		$mb_function_name = $function_names[0];
1245
		$function_name = $function_names[1];
1246
		if ( function_exists( $mb_function_name ) ) {
1247
			$function_name = $mb_function_name;
1248
		}
1249
		return call_user_func_array( $function_name, $args );
1250
	}
1251
1252
	public static function get_formatted_time( $date, $date_format = '', $time_format = '' ) {
1253
        if ( empty($date) ) {
1254
            return $date;
1255
        }
1256
1257
        if ( empty($date_format) ) {
1258
            $date_format = get_option('date_format');
0 ignored issues
show
Bug introduced by
The function get_option was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1258
            $date_format = /** @scrutinizer ignore-call */ get_option('date_format');
Loading history...
1259
        }
1260
1261
        if ( preg_match('/^\d{1-2}\/\d{1-2}\/\d{4}$/', $date) && self::pro_is_installed() ) {
1262
            $frmpro_settings = new FrmProSettings();
0 ignored issues
show
Bug introduced by
The type FrmProSettings was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
1263
            $date = FrmProAppHelper::convert_date($date, $frmpro_settings->date_format, 'Y-m-d');
0 ignored issues
show
Bug introduced by
The type FrmProAppHelper was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
1264
        }
1265
1266
		$formatted = self::get_localized_date( $date_format, $date );
1267
1268
		$do_time = ( date( 'H:i:s', strtotime( $date ) ) != '00:00:00' );
1269
		if ( $do_time ) {
1270
			$formatted .= self::add_time_to_date( $time_format, $date );
1271
		}
1272
1273
        return $formatted;
1274
    }
1275
1276
	private static function add_time_to_date( $time_format, $date ) {
1277
		if ( empty( $time_format ) ) {
1278
			$time_format = get_option('time_format');
0 ignored issues
show
Bug introduced by
The function get_option was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1278
			$time_format = /** @scrutinizer ignore-call */ get_option('time_format');
Loading history...
1279
		}
1280
1281
		$trimmed_format = trim( $time_format );
1282
		$time = '';
1283
		if ( $time_format && ! empty( $trimmed_format ) ) {
1284
			$time = ' ' . __( 'at', 'formidable' ) . ' ' . self::get_localized_date( $time_format, $date );
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not 'self'
Loading history...
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1284
			$time = ' ' . /** @scrutinizer ignore-call */ __( 'at', 'formidable' ) . ' ' . self::get_localized_date( $time_format, $date );
Loading history...
1285
		}
1286
1287
		return $time;
1288
	}
1289
1290
	/**
1291
	 * @since 2.0.8
1292
	 */
1293
	public static function get_localized_date( $date_format, $date ) {
1294
		$date = get_date_from_gmt( $date );
0 ignored issues
show
Bug introduced by
The function get_date_from_gmt was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1294
		$date = /** @scrutinizer ignore-call */ get_date_from_gmt( $date );
Loading history...
1295
		return date_i18n( $date_format, strtotime( $date ) );
0 ignored issues
show
Bug introduced by
The function date_i18n was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1295
		return /** @scrutinizer ignore-call */ date_i18n( $date_format, strtotime( $date ) );
Loading history...
1296
	}
1297
1298
	/**
1299
	 * Gets the time ago in words
1300
	 *
1301
	 * @param int $from in seconds
1302
	 * @param int|string $to in seconds
1303
	 * @return string $time_ago
1304
	 */
1305
	public static function human_time_diff( $from, $to = '', $levels = 1 ) {
1306
		if ( empty( $to ) ) {
1307
			$now = new DateTime;
1308
		} else {
1309
			$now = new DateTime( '@' . $to );
1310
		}
1311
		$ago = new DateTime( '@' . $from );
1312
1313
		// Get the time difference
1314
		$diff_object = $now->diff( $ago );
1315
		$diff = get_object_vars( $diff_object );
0 ignored issues
show
Bug introduced by
It seems like $diff_object can also be of type false; however, parameter $object of get_object_vars() does only seem to accept object, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

1315
		$diff = get_object_vars( /** @scrutinizer ignore-type */ $diff_object );
Loading history...
1316
1317
		// Add week amount and update day amount
1318
		$diff['w'] = floor( $diff['d'] / 7 );
1319
		$diff['d'] -= $diff['w'] * 7;
1320
1321
		$time_strings = self::get_time_strings();
1322
1323
		foreach ( $time_strings as $k => $v ) {
1324
			if ( $diff[ $k ] ) {
1325
				$time_strings[ $k ] = $diff[ $k ] . ' ' . ( $diff[ $k ] > 1 ? $v[1] : $v[0] );
1326
			} else {
1327
				unset( $time_strings[ $k ] );
1328
			}
1329
		}
1330
1331
		$levels_deep = apply_filters( 'frm_time_ago_levels', $levels, compact( 'time_strings', 'from', 'to' ) );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1331
		$levels_deep = /** @scrutinizer ignore-call */ apply_filters( 'frm_time_ago_levels', $levels, compact( 'time_strings', 'from', 'to' ) );
Loading history...
1332
		$time_strings = array_slice( $time_strings, 0, $levels_deep );
1333
		$time_ago_string = $time_strings ? implode( ' ', $time_strings ) : '0 ' . __( 'seconds', 'formidable' );
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1333
		$time_ago_string = $time_strings ? implode( ' ', $time_strings ) : '0 ' . /** @scrutinizer ignore-call */ __( 'seconds', 'formidable' );
Loading history...
1334
1335
		return $time_ago_string;
1336
	}
1337
1338
	/**
1339
	 * Get the translatable time strings
1340
	 *
1341
	 * @since 2.0.20
1342
	 * @return array
1343
	 */
1344
	private static function get_time_strings() {
1345
		return array(
1346
			'y' => array( __( 'year', 'formidable' ), __( 'years', 'formidable' ) ),
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1346
			'y' => array( /** @scrutinizer ignore-call */ __( 'year', 'formidable' ), __( 'years', 'formidable' ) ),
Loading history...
1347
			'm' => array( __( 'month', 'formidable' ), __( 'months', 'formidable' ) ),
1348
			'w' => array( __( 'week', 'formidable' ), __( 'weeks', 'formidable' ) ),
1349
			'd' => array( __( 'day', 'formidable' ), __( 'days', 'formidable' ) ),
1350
			'h' => array( __( 'hour', 'formidable' ), __( 'hours', 'formidable' ) ),
1351
			'i' => array( __( 'minute', 'formidable' ), __( 'minutes', 'formidable' ) ),
1352
			's' => array( __( 'second', 'formidable' ), __( 'seconds', 'formidable' ) ),
1353
		);
1354
	}
1355
1356
    // Pagination Methods
1357
1358
    /**
1359
     * @param integer $current_p
1360
     */
1361
	public static function get_last_record_num( $r_count, $current_p, $p_size ) {
1362
		return ( ( $r_count < ( $current_p * $p_size ) ) ? $r_count : ( $current_p * $p_size ) );
1363
	}
1364
1365
    /**
1366
     * @param integer $current_p
1367
     */
1368
    public static function get_first_record_num( $r_count, $current_p, $p_size ) {
1369
        if ( $current_p == 1 ) {
1370
            return 1;
1371
        } else {
1372
            return ( self::get_last_record_num( $r_count, ( $current_p - 1 ), $p_size ) + 1 );
1373
        }
1374
    }
1375
1376
	/**
1377
	 * @return array
1378
	 */
1379
	public static function json_to_array( $json_vars ) {
1380
        $vars = array();
1381
        foreach ( $json_vars as $jv ) {
1382
            $jv_name = explode('[', $jv['name']);
1383
            $last = count($jv_name) - 1;
1384
            foreach ( $jv_name as $p => $n ) {
1385
                $name = trim($n, ']');
1386
                if ( ! isset($l1) ) {
1387
                    $l1 = $name;
1388
                }
1389
1390
                if ( ! isset($l2) ) {
1391
                    $l2 = $name;
1392
                }
1393
1394
                if ( ! isset($l3) ) {
1395
                    $l3 = $name;
1396
                }
1397
1398
                $this_val = ( $p == $last ) ? $jv['value'] : array();
1399
1400
                switch ( $p ) {
1401
                    case 0:
1402
                        $l1 = $name;
1403
                        self::add_value_to_array( $name, $l1, $this_val, $vars );
1404
						break;
1405
1406
                    case 1:
1407
                        $l2 = $name;
1408
                        self::add_value_to_array( $name, $l2, $this_val, $vars[ $l1 ] );
1409
						break;
1410
1411
                    case 2:
1412
                        $l3 = $name;
1413
                        self::add_value_to_array( $name, $l3, $this_val, $vars[ $l1 ][ $l2 ] );
1414
						break;
1415
1416
                    case 3:
1417
                        $l4 = $name;
1418
                        self::add_value_to_array( $name, $l4, $this_val, $vars[ $l1 ][ $l2 ][ $l3 ] );
1419
                }
1420
1421
                unset($this_val, $n);
1422
            }
1423
1424
            unset($last, $jv);
1425
        }
1426
1427
        return $vars;
1428
    }
1429
1430
    /**
1431
     * @param string $name
1432
     * @param string $l1
1433
     */
1434
    public static function add_value_to_array( $name, $l1, $val, &$vars ) {
1435
        if ( $name == '' ) {
1436
            $vars[] = $val;
1437
        } else if ( ! isset( $vars[ $l1 ] ) ) {
1438
            $vars[ $l1 ] = $val;
1439
        }
1440
    }
1441
1442
	public static function maybe_add_tooltip( $name, $class = 'closed', $form_name = '' ) {
1443
        $tooltips = array(
1444
            'action_title'  => __( 'Give this action a label for easy reference.', 'formidable' ),
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1444
            'action_title'  => /** @scrutinizer ignore-call */ __( 'Give this action a label for easy reference.', 'formidable' ),
Loading history...
1445
            'email_to'      => __( 'Add one or more recipient addresses separated by a ",".  FORMAT: Name <[email protected]> or [email protected].  [admin_email] is the address set in WP General Settings.', 'formidable' ),
1446
            'cc'            => __( 'Add CC addresses separated by a ",".  FORMAT: Name <[email protected]> or [email protected].', 'formidable' ),
1447
            'bcc'           => __( 'Add BCC addresses separated by a ",".  FORMAT: Name <[email protected]> or [email protected].', 'formidable' ),
1448
            'reply_to'      => __( 'If you would like a different reply to address than the "from" address, add a single address here.  FORMAT: Name <[email protected]> or [email protected].', 'formidable' ),
1449
            'from'          => __( 'Enter the name and/or email address of the sender. FORMAT: John Bates <[email protected]> or [email protected].', 'formidable' ),
1450
            'email_subject' => esc_attr( sprintf( __( 'If you leave the subject blank, the default will be used: %1$s Form submitted on %2$s', 'formidable' ), $form_name, self::site_name() ) ),
0 ignored issues
show
Bug introduced by
The function esc_attr was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1450
            'email_subject' => /** @scrutinizer ignore-call */ esc_attr( sprintf( __( 'If you leave the subject blank, the default will be used: %1$s Form submitted on %2$s', 'formidable' ), $form_name, self::site_name() ) ),
Loading history...
1451
        );
1452
1453
        if ( ! isset( $tooltips[ $name ] ) ) {
1454
            return;
1455
        }
1456
1457
        if ( 'open' == $class ) {
1458
            echo ' frm_help"';
1459
        } else {
1460
            echo ' class="frm_help"';
1461
        }
1462
1463
		echo ' title="' . esc_attr( $tooltips[ $name ] );
1464
1465
        if ( 'open' != $class ) {
1466
            echo '"';
1467
        }
1468
    }
1469
1470
	/**
1471
	 * Add the current_page class to that page in the form nav
1472
	 */
1473
	public static function select_current_page( $page, $current_page, $action = array() ) {
1474
		if ( $current_page != $page ) {
1475
			return;
1476
		}
1477
1478
		$frm_action = FrmAppHelper::simple_get( 'frm_action', 'sanitize_title' );
1479
		if ( empty( $action ) || ( ! empty( $frm_action ) && in_array( $frm_action, $action ) ) ) {
1480
			echo ' class="current_page"';
1481
		}
1482
	}
1483
1484
    /**
1485
     * Prepare and json_encode post content
1486
     *
1487
     * @since 2.0
1488
     *
1489
     * @param array $post_content
1490
     * @return string $post_content ( json encoded array )
1491
     */
1492
    public static function prepare_and_encode( $post_content ) {
1493
        //Loop through array to strip slashes and add only the needed ones
1494
		foreach ( $post_content as $key => $val ) {
1495
			// Replace problematic characters (like &quot;)
1496
			$val = str_replace( '&quot;', '"', $val );
1497
1498
			self::prepare_action_slashes( $val, $key, $post_content );
1499
            unset( $key, $val );
1500
        }
1501
1502
        // json_encode the array
1503
        $post_content = json_encode( $post_content );
1504
1505
	    // add extra slashes for \r\n since WP strips them
1506
		$post_content = str_replace( array( '\\r', '\\n', '\\u', '\\t' ), array( '\\\\r', '\\\\n', '\\\\u', '\\\\t' ), $post_content );
1507
1508
        // allow for &quot
1509
	    $post_content = str_replace( '&quot;', '\\"', $post_content );
1510
1511
        return $post_content;
1512
    }
1513
1514
	private static function prepare_action_slashes( $val, $key, &$post_content ) {
1515
		if ( ! isset( $post_content[ $key ] ) ) {
1516
			return;
1517
		}
1518
1519
		if ( is_array( $val ) ) {
1520
			foreach ( $val as $k1 => $v1 ) {
1521
				self::prepare_action_slashes( $v1, $k1, $post_content[ $key ] );
1522
				unset( $k1, $v1 );
1523
			}
1524
		} else {
1525
			// Strip all slashes so everything is the same, no matter where the value is coming from
1526
			$val = stripslashes( $val );
1527
1528
			// Add backslashes before double quotes and forward slashes only
1529
			$post_content[ $key ] = addcslashes( $val, '"\\/' );
1530
		}
1531
	}
1532
1533
	public static function maybe_json_decode( $string ) {
1534
        if ( is_array($string) ) {
1535
            return $string;
1536
        }
1537
1538
        $new_string = json_decode($string, true);
1539
        if ( function_exists('json_last_error') ) {
1540
			// php 5.3+
1541
            if ( json_last_error() == JSON_ERROR_NONE ) {
1542
                $string = $new_string;
1543
            }
1544
        } else if ( isset($new_string) ) {
1545
			// php < 5.3 fallback
1546
            $string = $new_string;
1547
        }
1548
        return $string;
1549
    }
1550
1551
    /**
1552
     * @since 1.07.10
1553
     *
1554
     * @param string $post_type The name of the post type that may need to be highlighted
1555
     * echo The javascript to open and highlight the Formidable menu
1556
     */
1557
	public static function maybe_highlight_menu( $post_type ) {
1558
        global $post;
1559
1560
        if ( isset($_REQUEST['post_type']) && $_REQUEST['post_type'] != $post_type ) {
1561
            return;
1562
        }
1563
1564
        if ( is_object($post) && $post->post_type != $post_type ) {
1565
            return;
1566
        }
1567
1568
        self::load_admin_wide_js();
1569
        echo '<script type="text/javascript">jQuery(document).ready(function(){frmSelectSubnav();});</script>';
1570
    }
1571
1572
    /**
1573
     * Load the JS file on non-Formidable pages in the admin area
1574
     * @since 2.0
1575
     */
1576
	public static function load_admin_wide_js( $load = true ) {
1577
        $version = FrmAppHelper::plugin_version();
1578
		wp_register_script( 'formidable_admin_global', FrmAppHelper::plugin_url() . '/js/formidable_admin_global.js', array( 'jquery' ), $version );
0 ignored issues
show
Bug introduced by
The function wp_register_script was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1578
		/** @scrutinizer ignore-call */ 
1579
  wp_register_script( 'formidable_admin_global', FrmAppHelper::plugin_url() . '/js/formidable_admin_global.js', array( 'jquery' ), $version );
Loading history...
1579
1580
        wp_localize_script( 'formidable_admin_global', 'frmGlobal', array(
0 ignored issues
show
Bug introduced by
The function wp_localize_script was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1580
        /** @scrutinizer ignore-call */ 
1581
        wp_localize_script( 'formidable_admin_global', 'frmGlobal', array(
Loading history...
1581
			'updating_msg' => __( 'Please wait while your site updates.', 'formidable' ),
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1581
			'updating_msg' => /** @scrutinizer ignore-call */ __( 'Please wait while your site updates.', 'formidable' ),
Loading history...
1582
            'deauthorize'  => __( 'Are you sure you want to deauthorize Formidable Forms on this site?', 'formidable' ),
1583
			'url'          => FrmAppHelper::plugin_url(),
1584
			'loading'      => __( 'Loading&hellip;' ),
1585
			'nonce'        => wp_create_nonce( 'frm_ajax' ),
0 ignored issues
show
Bug introduced by
The function wp_create_nonce was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1585
			'nonce'        => /** @scrutinizer ignore-call */ wp_create_nonce( 'frm_ajax' ),
Loading history...
1586
        ) );
1587
1588
		if ( $load ) {
1589
			wp_enqueue_script( 'formidable_admin_global' );
0 ignored issues
show
Bug introduced by
The function wp_enqueue_script was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1589
			/** @scrutinizer ignore-call */ 
1590
   wp_enqueue_script( 'formidable_admin_global' );
Loading history...
1590
		}
1591
    }
1592
1593
	/**
1594
	 * @since 2.0.9
1595
	 */
1596
	public static function load_font_style() {
1597
		wp_enqueue_style( 'frm_fonts', self::plugin_url() . '/css/frm_fonts.css', array(), self::plugin_version() );
0 ignored issues
show
Bug introduced by
The function wp_enqueue_style was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1597
		/** @scrutinizer ignore-call */ 
1598
  wp_enqueue_style( 'frm_fonts', self::plugin_url() . '/css/frm_fonts.css', array(), self::plugin_version() );
Loading history...
1598
	}
1599
1600
    /**
1601
     * @param string $location
1602
     */
1603
	public static function localize_script( $location ) {
1604
		$ajax_url = admin_url( 'admin-ajax.php', is_ssl() ? 'admin' : 'http' );
0 ignored issues
show
Bug introduced by
The function admin_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1604
		$ajax_url = /** @scrutinizer ignore-call */ admin_url( 'admin-ajax.php', is_ssl() ? 'admin' : 'http' );
Loading history...
Bug introduced by
The function is_ssl was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1604
		$ajax_url = admin_url( 'admin-ajax.php', /** @scrutinizer ignore-call */ is_ssl() ? 'admin' : 'http' );
Loading history...
1605
		$ajax_url = apply_filters( 'frm_ajax_url', $ajax_url );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1605
		$ajax_url = /** @scrutinizer ignore-call */ apply_filters( 'frm_ajax_url', $ajax_url );
Loading history...
1606
1607
		wp_localize_script( 'formidable', 'frm_js', array(
0 ignored issues
show
Bug introduced by
The function wp_localize_script was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1607
		/** @scrutinizer ignore-call */ 
1608
  wp_localize_script( 'formidable', 'frm_js', array(
Loading history...
1608
			'ajax_url'  => $ajax_url,
1609
			'images_url' => self::plugin_url() . '/images',
1610
			'loading'   => __( 'Loading&hellip;' ),
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1610
			'loading'   => /** @scrutinizer ignore-call */ __( 'Loading&hellip;' ),
Loading history...
1611
			'remove'    => __( 'Remove', 'formidable' ),
1612
			'offset'    => apply_filters( 'frm_scroll_offset', 4 ),
1613
			'nonce'     => wp_create_nonce( 'frm_ajax' ),
0 ignored issues
show
Bug introduced by
The function wp_create_nonce was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1613
			'nonce'     => /** @scrutinizer ignore-call */ wp_create_nonce( 'frm_ajax' ),
Loading history...
1614
			'id'        => __( 'ID', 'formidable' ),
1615
			'no_results' => __( 'No results match', 'formidable' ),
1616
			'file_spam' => __( 'That file looks like Spam.', 'formidable' ),
1617
			'empty_fields' => __( 'Please complete the preceding required fields before uploading a file.', 'formidable' ),
1618
		) );
1619
1620
		if ( $location == 'admin' ) {
1621
			$frm_settings = self::get_settings();
1622
			wp_localize_script( 'formidable_admin', 'frm_admin_js', array(
1623
				'confirm_uninstall' => __( 'Are you sure you want to do this? Clicking OK will delete all forms, form data, and all other Formidable data. There is no Undo.', 'formidable' ),
1624
				'desc'              => __( '(Click to add description)', 'formidable' ),
1625
				'blank'             => __( '(Blank)', 'formidable' ),
1626
				'no_label'          => __( '(no label)', 'formidable' ),
1627
				'saving'            => esc_attr( __( 'Saving', 'formidable' ) ),
0 ignored issues
show
Bug introduced by
The function esc_attr was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1627
				'saving'            => /** @scrutinizer ignore-call */ esc_attr( __( 'Saving', 'formidable' ) ),
Loading history...
1628
				'saved'             => esc_attr( __( 'Saved', 'formidable' ) ),
1629
				'ok'                => __( 'OK' ),
1630
				'cancel'            => __( 'Cancel', 'formidable' ),
1631
				'default'           => __( 'Default', 'formidable' ),
1632
				'clear_default'     => __( 'Clear default value when typing', 'formidable' ),
1633
				'no_clear_default'  => __( 'Do not clear default value when typing', 'formidable' ),
1634
				'valid_default'     => __( 'Default value will pass form validation', 'formidable' ),
1635
				'no_valid_default'  => __( 'Default value will NOT pass form validation', 'formidable' ),
1636
				'confirm'           => __( 'Are you sure?', 'formidable' ),
1637
				'conf_delete'       => __( 'Are you sure you want to delete this field and all data associated with it?', 'formidable' ),
1638
				'conf_delete_sec'   => __( 'WARNING: This will delete all fields inside of the section as well.', 'formidable' ),
1639
				'conf_no_repeat'    => __( 'Warning: If you have entries with multiple rows, all but the first row will be lost.', 'formidable' ),
1640
				'default_unique'    => $frm_settings->unique_msg,
1641
				'default_conf'      => __( 'The entered values do not match', 'formidable' ),
1642
				'enter_email'       => __( 'Enter Email', 'formidable' ),
1643
				'confirm_email'     => __( 'Confirm Email', 'formidable' ),
1644
				'css_invalid_size'  => __( 'In certain browsers (e.g. Firefox) text will not display correctly if the field height is too small relative to the field padding and text size. Please increase your field height or decrease your field padding.', 'formidable' ),
1645
				'enter_password'    => __( 'Enter Password', 'formidable' ),
1646
				'confirm_password'  => __( 'Confirm Password', 'formidable' ),
1647
				'import_complete'   => __( 'Import Complete', 'formidable' ),
1648
				'updating'          => __( 'Please wait while your site updates.', 'formidable' ),
1649
				'no_save_warning'   => __( 'Warning: There is no way to retrieve unsaved entries.', 'formidable' ),
1650
				'private'           => __( 'Private' ),
1651
				'jquery_ui_url'     => self::jquery_ui_base_url(),
1652
				'no_licenses'       => __( 'No new licenses were found', 'formidable' ),
1653
				'repeat_limit_min'  => __( 'Please enter a Repeat Limit that is greater than 1.', 'formidable' ),
1654
			) );
1655
		}
1656
	}
1657
1658
    /**
1659
	 * echo the message on the plugins listing page
1660
     * @since 1.07.10
1661
     *
1662
     * @param float $min_version The version the add-on requires
1663
     */
1664
	public static function min_version_notice( $min_version ) {
1665
        $frm_version = self::plugin_version();
1666
1667
        // check if Formidable meets minimum requirements
1668
        if ( version_compare($frm_version, $min_version, '>=') ) {
1669
            return;
1670
        }
1671
1672
        $wp_list_table = _get_list_table('WP_Plugins_List_Table');
0 ignored issues
show
Bug introduced by
The function _get_list_table was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1672
        $wp_list_table = /** @scrutinizer ignore-call */ _get_list_table('WP_Plugins_List_Table');
Loading history...
1673
		echo '<tr class="plugin-update-tr active"><th colspan="' . absint( $wp_list_table->get_column_count() ) . '" class="check-column plugin-update colspanchange"><div class="update-message">' .
0 ignored issues
show
Bug introduced by
The function absint was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1673
		echo '<tr class="plugin-update-tr active"><th colspan="' . /** @scrutinizer ignore-call */ absint( $wp_list_table->get_column_count() ) . '" class="check-column plugin-update colspanchange"><div class="update-message">' .
Loading history...
1674
        __( 'You are running an outdated version of Formidable. This plugin may not work correctly if you do not update Formidable.', 'formidable' ) .
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw '__'
Loading history...
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1674
        /** @scrutinizer ignore-call */ 
1675
        __( 'You are running an outdated version of Formidable. This plugin may not work correctly if you do not update Formidable.', 'formidable' ) .
Loading history...
1675
        '</div></td></tr>';
1676
    }
1677
1678
    public static function locales( $type = 'date' ) {
1679
		$locales = array(
1680
			'en' => __( 'English', 'formidable' ),
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1680
			'en' => /** @scrutinizer ignore-call */ __( 'English', 'formidable' ),
Loading history...
1681
			''   => __( 'English/Western', 'formidable' ),
1682
			'af' => __( 'Afrikaans', 'formidable' ),
1683
			'sq' => __( 'Albanian', 'formidable' ),
1684
			'ar' => __( 'Arabic', 'formidable' ),
1685
			'hy' => __( 'Armenian', 'formidable' ),
1686
			'az' => __( 'Azerbaijani', 'formidable' ),
1687
			'eu' => __( 'Basque', 'formidable' ),
1688
			'bs' => __( 'Bosnian', 'formidable' ),
1689
			'bg' => __( 'Bulgarian', 'formidable' ),
1690
			'ca' => __( 'Catalan', 'formidable' ),
1691
			'zh-HK' => __( 'Chinese Hong Kong', 'formidable' ),
1692
			'zh-CN' => __( 'Chinese Simplified', 'formidable' ),
1693
			'zh-TW' => __( 'Chinese Traditional', 'formidable' ),
1694
			'hr' => __( 'Croatian', 'formidable' ),
1695
			'cs' => __( 'Czech', 'formidable' ),
1696
			'da' => __( 'Danish', 'formidable' ),
1697
			'nl' => __( 'Dutch', 'formidable' ),
1698
			'en-GB' => __( 'English/UK', 'formidable' ),
1699
			'eo' => __( 'Esperanto', 'formidable' ),
1700
			'et' => __( 'Estonian', 'formidable' ),
1701
			'fo' => __( 'Faroese', 'formidable' ),
1702
			'fa' => __( 'Farsi/Persian', 'formidable' ),
1703
			'fil' => __( 'Filipino', 'formidable' ),
1704
			'fi' => __( 'Finnish', 'formidable' ),
1705
			'fr' => __( 'French', 'formidable' ),
1706
			'fr-CA' => __( 'French/Canadian', 'formidable' ),
1707
			'fr-CH' => __( 'French/Swiss', 'formidable' ),
1708
			'de' => __( 'German', 'formidable' ),
1709
			'de-AT' => __( 'German/Austria', 'formidable' ),
1710
			'de-CH' => __( 'German/Switzerland', 'formidable' ),
1711
			'el' => __( 'Greek', 'formidable' ),
1712
			'he' => __( 'Hebrew', 'formidable' ),
1713
			'iw' => __( 'Hebrew', 'formidable' ),
1714
			'hi' => __( 'Hindi', 'formidable' ),
1715
			'hu' => __( 'Hungarian', 'formidable' ),
1716
			'is' => __( 'Icelandic', 'formidable' ),
1717
			'id' => __( 'Indonesian', 'formidable' ),
1718
			'it' => __( 'Italian', 'formidable' ),
1719
			'ja' => __( 'Japanese', 'formidable' ),
1720
			'ko' => __( 'Korean', 'formidable' ),
1721
			'lv' => __( 'Latvian', 'formidable' ),
1722
			'lt' => __( 'Lithuanian', 'formidable' ),
1723
			'ms' => __( 'Malaysian', 'formidable' ),
1724
			'no' => __( 'Norwegian', 'formidable' ),
1725
			'pl' => __( 'Polish', 'formidable' ),
1726
			'pt' => __( 'Portuguese', 'formidable' ),
1727
			'pt-BR' => __( 'Portuguese/Brazilian', 'formidable' ),
1728
			'pt-PT' => __( 'Portuguese/Portugal', 'formidable' ),
1729
			'ro' => __( 'Romanian', 'formidable' ),
1730
			'ru' => __( 'Russian', 'formidable' ),
1731
			'sr' => __( 'Serbian', 'formidable' ),
1732
			'sr-SR' => __( 'Serbian', 'formidable' ),
1733
			'sk' => __( 'Slovak', 'formidable' ),
1734
			'sl' => __( 'Slovenian', 'formidable' ),
1735
			'es' => __( 'Spanish', 'formidable' ),
1736
			'es-419' => __( 'Spanish/Latin America', 'formidable' ),
1737
			'sv' => __( 'Swedish', 'formidable' ),
1738
			'ta' => __( 'Tamil', 'formidable' ),
1739
			'th' => __( 'Thai', 'formidable' ),
1740
			'tu' => __( 'Turkish', 'formidable' ),
1741
			'tr' => __( 'Turkish', 'formidable' ),
1742
			'uk' => __( 'Ukranian', 'formidable' ),
1743
			'vi' => __( 'Vietnamese', 'formidable' ),
1744
		);
1745
1746
		if ( $type === 'captcha' ) {
1747
			// remove the languages unavailable for the captcha
1748
			$unset = array( '', 'af', 'sq', 'hy', 'az', 'eu', 'bs', 'zh-HK', 'eo', 'et', 'fo', 'fr-CH', 'he', 'is', 'ms', 'sr-SR', 'ta', 'tu' );
1749
		} else {
1750
			// remove the languages unavailable for the datepicker
1751
			$unset = array( 'en', 'fil', 'fr-CA', 'de-AT', 'de-AT', 'de-CH', 'iw', 'hi', 'pt', 'pt-PT', 'es-419', 'tr' );
1752
		}
1753
1754
        $locales = array_diff_key($locales, array_flip($unset));
1755
        $locales = apply_filters('frm_locales', $locales);
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1755
        $locales = /** @scrutinizer ignore-call */ apply_filters('frm_locales', $locales);
Loading history...
1756
1757
        return $locales;
1758
    }
1759
1760
	/**
1761
	 * Prepare and save settings in styles and actions
1762
	 *
1763
	 * @param array $settings
1764
	 * @param string $group
1765
	 *
1766
	 * @since 2.0.6
1767
	 * @deprecated 2.05.06
1768
	 */
1769
	public static function save_settings( $settings, $group ) {
1770
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1770
		/** @scrutinizer ignore-call */ 
1771
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1771
		return FrmDb::save_settings( $settings, $group );
1772
	}
1773
1774
	/**
1775
	 * Since actions are JSON encoded, we don't want any filters messing with it.
1776
	 * Remove the filters and then add them back in case any posts or views are
1777
	 * also being imported.
1778
	 *
1779
	 * Used when saving form actions and styles
1780
	 *
1781
	 * @since 2.0.4
1782
	 * @deprecated 2.05.06
1783
	 */
1784
	public static function save_json_post( $settings ) {
1785
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1785
		/** @scrutinizer ignore-call */ 
1786
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1786
		return FrmDb::save_json_post( $settings );
1787
	}
1788
1789
	/**
1790
	 * Check cache before fetching values and saving to cache
1791
	 *
1792
	 * @since 2.0
1793
	 * @deprecated 2.05.06
1794
	 *
1795
	 * @param string $cache_key The unique name for this cache
1796
	 * @param string $group The name of the cache group
1797
	 * @param string $query If blank, don't run a db call
1798
	 * @param string $type The wpdb function to use with this query
1799
	 * @return mixed $results The cache or query results
1800
	 */
1801
	public static function check_cache( $cache_key, $group = '', $query = '', $type = 'get_var', $time = 300 ) {
1802
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1802
		/** @scrutinizer ignore-call */ 
1803
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1803
		return FrmDb::check_cache( $cache_key, $group, $query, $type, $time );
1804
	}
1805
1806
	/**
1807
	 * @deprecated 2.05.06
1808
	 */
1809
	public static function set_cache( $cache_key, $results, $group = '', $time = 300 ) {
1810
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1810
		/** @scrutinizer ignore-call */ 
1811
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1811
		FrmDb::set_cache( $cache_key, $results, $group, $time );
1812
	}
1813
1814
	/**
1815
	 * Keep track of the keys cached in each group so they can be deleted
1816
	 * in Redis and Memcache
1817
	 * @deprecated 2.05.06
1818
	 */
1819
	public static function add_key_to_group_cache( $key, $group ) {
1820
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1820
		/** @scrutinizer ignore-call */ 
1821
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1821
		FrmDb::add_key_to_group_cache( $key, $group );
1822
	}
1823
1824
	public static function get_group_cached_keys( $group ) {
1825
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1825
		/** @scrutinizer ignore-call */ 
1826
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1826
		return FrmDb::get_group_cached_keys( $group );
1827
	}
1828
1829
	/**
1830
	 * @since 2.0
1831
	 * @deprecated 2.05.06
1832
	 * @return mixed The cached value or false
1833
	 */
1834
	public static function check_cache_and_transient( $cache_key ) {
1835
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1835
		/** @scrutinizer ignore-call */ 
1836
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1836
		return FrmDb::check_cache( $cache_key );
1837
	}
1838
1839
	/**
1840
	 * @since 2.0
1841
	 * @deprecated 2.05.06
1842
	 * @param string $cache_key
1843
	 */
1844
	public static function delete_cache_and_transient( $cache_key, $group = 'default' ) {
1845
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1845
		/** @scrutinizer ignore-call */ 
1846
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1846
		FrmDb::delete_cache_and_transient( $cache_key, $group );
1847
	}
1848
1849
	/**
1850
	 * @since 2.0
1851
	 * @deprecated 2.05.06
1852
	 *
1853
	 * @param string $group The name of the cache group
1854
	 */
1855
	public static function cache_delete_group( $group ) {
1856
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1856
		/** @scrutinizer ignore-call */ 
1857
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1857
		FrmDb::cache_delete_group( $group );
1858
	}
1859
1860
	/**
1861
	 * Added for < WP 4.0 compatability
1862
	 *
1863
	 * @since 1.07.10
1864
	 * @deprecated 2.05.06
1865
	 *
1866
	 * @param string $term The value to escape
1867
	 * @return string The escaped value
1868
	 */
1869
	public static function esc_like( $term ) {
1870
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1870
		/** @scrutinizer ignore-call */ 
1871
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1871
		return FrmDb::esc_like( $term );
1872
	}
1873
1874
	/**
1875
	 * @param string $order_query
1876
	 * @deprecated 2.05.06
1877
	 */
1878
	public static function esc_order( $order_query ) {
1879
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1879
		/** @scrutinizer ignore-call */ 
1880
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1880
		return FrmDb::esc_order( $order_query );
1881
	}
1882
1883
	/**
1884
	 * Make sure this is ordering by either ASC or DESC
1885
	 * @deprecated 2.05.06
1886
	 */
1887
	public static function esc_order_by( &$order_by ) {
1888
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1888
		/** @scrutinizer ignore-call */ 
1889
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1889
		FrmDb::esc_order_by( $order_by );
1890
	}
1891
1892
	/**
1893
	 * @param string $limit
1894
	 * @deprecated 2.05.06
1895
	 */
1896
	public static function esc_limit( $limit ) {
1897
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1897
		/** @scrutinizer ignore-call */ 
1898
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1898
		return FrmDb::esc_limit( $limit );
1899
	}
1900
1901
	/**
1902
	 * Get an array of values ready to go through $wpdb->prepare
1903
	 * @since 2.0
1904
	 * @deprecated 2.05.06
1905
	 */
1906
	public static function prepare_array_values( $array, $type = '%s' ) {
1907
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1907
		/** @scrutinizer ignore-call */ 
1908
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1908
		return FrmDb::prepare_array_values( $array, $type );
1909
	}
1910
1911
	/**
1912
	 * @deprecated 2.05.06
1913
	 */
1914
	public static function prepend_and_or_where( $starts_with = ' WHERE ', $where = '' ) {
1915
		_deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
0 ignored issues
show
Bug introduced by
The function _deprecated_function was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1915
		/** @scrutinizer ignore-call */ 
1916
  _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
Loading history...
1916
		return FrmDb::prepend_and_or_where( $starts_with, $where );
1917
	}
1918
}
1919