Completed
Push — master ( ea743b...5a0830 )
by Stephanie
03:02
created

FrmAppController   F

Complexity

Total Complexity 92

Size/Duplication

Total Lines 567
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9

Importance

Changes 0
Metric Value
dl 0
loc 567
rs 2
c 0
b 0
f 0
wmc 92
lcom 1
cbo 9

37 Methods

Rating   Name   Duplication   Size   Complexity  
A menu() 0 9 2
A get_menu_position() 0 3 1
A add_admin_class() 0 6 2
A load_wp_admin_style() 0 3 1
A get_form_nav() 0 17 4
A get_current_page() 0 12 4
A get_form_nav_items() 0 33 2
A settings_link() 0 6 1
A is_white_page() 0 9 6
B pro_get_started_headline() 0 49 7
A maybe_show_upgrade_bar() 0 18 4
A review_request() 0 4 1
A dismiss_review() 0 7 1
A include_upgrade_overlay() 0 6 1
A remove_upsells() 0 4 1
A remove_wpforms_nag() 0 10 4
A install_js_fallback() 0 4 1
A needs_update() 0 14 2
A compare_for_update() 0 14 3
A admin_init() 0 13 5
C admin_js() 0 77 16
A load_lang() 0 3 1
A maybe_update_styles() 0 5 2
A create_rest_routes() 0 7 1
A network_upgrade_site() 0 17 3
A api_install() 0 11 4
A ajax_install() 0 4 1
A install() 0 4 1
A uninstall() 0 13 1
A drop_tables() 0 8 1
A deauthorize() 0 10 1
A set_footer_text() 0 15 2
A get_form_shortcode() 0 3 1
A widget_text_filter() 0 3 1
A front_head() 0 3 1
A activation_install() 0 3 1
A page_route() 0 3 1

How to fix   Complexity   

Complex Class

Complex classes like FrmAppController often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use FrmAppController, and based on these observations, apply Extract Interface, too.

1
<?php
2
3
class FrmAppController {
4
5
	public static function menu() {
6
        FrmAppHelper::maybe_add_permissions();
7
        if ( ! current_user_can( 'frm_view_forms' ) ) {
8
            return;
9
        }
10
11
		$menu_name = FrmAppHelper::get_menu_name();
12
		add_menu_page( 'Formidable', $menu_name, 'frm_view_forms', 'formidable', 'FrmFormsController::route', '', self::get_menu_position() );
13
    }
14
15
	private static function get_menu_position() {
16
		return apply_filters( 'frm_menu_position', '29.3' );
17
	}
18
19
	/**
20
	 * @since 3.0
21
	 */
22
	public static function add_admin_class( $classes ) {
23
		if ( self::is_white_page() ) {
24
			$classes .= ' frm-white-body ';
25
		}
26
		return $classes;
27
	}
28
29
	/**
30
	 * @since 3.0
31
	 */
32
	private static function is_white_page() {
33
		$is_white_page = ( FrmAppHelper::is_admin_page( 'formidable' ) || FrmAppHelper::is_admin_page( 'formidable-entries' ) || FrmAppHelper::is_admin_page( 'formidable-pro-upgrade' ) || FrmAppHelper::is_admin_page( 'formidable-addons' ) );
34
		if ( ! $is_white_page ) {
35
			$screen = get_current_screen();
36
			$is_white_page = ( $screen && $screen->id === 'edit-frm_display' );
37
		}
38
39
		return $is_white_page;
40
	}
41
42
    public static function load_wp_admin_style() {
43
        FrmAppHelper::load_font_style();
44
    }
45
46
	public static function get_form_nav( $form, $show_nav = false, $title = 'show' ) {
47
		$show_nav = FrmAppHelper::get_param( 'show_nav', $show_nav, 'get', 'absint' );
48
        if ( empty( $show_nav ) || ! $form ) {
49
            return;
50
        }
51
52
		FrmForm::maybe_get_form( $form );
53
		if ( ! is_object( $form ) ) {
54
			return;
55
		}
56
57
		$id = $form->id;
58
		$current_page = self::get_current_page();
59
		$nav_items = self::get_form_nav_items( $form );
60
61
		include( FrmAppHelper::plugin_path() . '/classes/views/shared/form-nav.php' );
62
	}
63
64
	private static function get_current_page() {
65
		global $pagenow;
66
67
		$page = FrmAppHelper::simple_get( 'page', 'sanitize_title' );
68
		$post_type = FrmAppHelper::simple_get( 'post_type', 'sanitize_title', 'None' );
69
		$current_page = isset( $_GET['page'] ) ? $page : $post_type;
70
		if ( $pagenow == 'post.php' || $pagenow == 'post-new.php' ) {
71
			$current_page = 'frm_display';
72
		}
73
74
		return $current_page;
75
	}
76
77
	private static function get_form_nav_items( $form ) {
78
		$id = $form->parent_form_id ? $form->parent_form_id : $form->id;
79
80
		$nav_items = array(
81
			array(
82
				'link'    => admin_url( 'admin.php?page=formidable&frm_action=edit&id=' . absint( $id ) ),
83
				'label'   => __( 'Build', 'formidable' ),
84
				'current' => array( 'edit', 'new', 'duplicate' ),
85
				'page'    => 'formidable',
86
				'permission' => 'frm_edit_forms',
87
			),
88
			array(
89
				'link'    => admin_url( 'admin.php?page=formidable&frm_action=settings&id=' . absint( $id ) ),
90
				'label'   => __( 'Settings', 'formidable' ),
91
				'current' => array( 'settings' ),
92
				'page'    => 'formidable',
93
				'permission' => 'frm_edit_forms',
94
			),
95
			array(
96
				'link'    => admin_url( 'admin.php?page=formidable-entries&frm_action=list&form=' . absint( $id ) ),
97
				'label'   => __( 'Entries', 'formidable' ),
98
				'current' => array(),
99
				'page'    => 'formidable-entries',
100
				'permission' => 'frm_view_entries',
101
			),
102
		);
103
104
		$nav_args = array(
105
			'form_id' => $id,
106
			'form'    => $form,
107
		);
108
		return apply_filters( 'frm_form_nav_list', $nav_items, $nav_args );
109
	}
110
111
    // Adds a settings link to the plugins page
112
    public static function settings_link( $links ) {
113
		$settings = '<a href="' . esc_url( admin_url( 'admin.php?page=formidable' ) ) . '">' . __( 'Build a Form', 'formidable' ) . '</a>';
114
        array_unshift( $links, $settings );
115
116
        return $links;
117
    }
118
119
    public static function pro_get_started_headline() {
120
		self::maybe_show_upgrade_bar();
121
		self::review_request();
122
123
        // Don't display this error as we're upgrading the thing, or if the user shouldn't see the message
124
        if ( 'upgrade-plugin' == FrmAppHelper::simple_get( 'action', 'sanitize_title' ) || ! current_user_can( 'update_plugins' ) ) {
125
            return;
126
        }
127
128
		$pro_installed = is_dir( WP_PLUGIN_DIR . '/formidable-pro' );
129
		$authorized    = get_site_option( 'frmpro-authorized' ) && ! is_callable( 'load_formidable_pro' );
130
		if ( ! $authorized ) {
131
			return;
132
		}
133
134
		FrmAppHelper::load_admin_wide_js();
135
136
		// user is authorized, but running free version
137
		$download_url = '';
138
		if ( $pro_installed ) {
139
			// if pro version is installed, include link to activate it
140
			$inst_install_url = wp_nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=formidable-pro/formidable-pro.php' ), 'activate-plugin_formidable-pro/formidable-pro.php' );
141
		} else {
142
			$inst_install_url = '#';
143
			$download_url = FrmAddonsController::get_pro_download_url();
144
145
			if ( empty( $download_url ) ) {
146
				$inst_install_url = 'https://formidableforms.com/knowledgebase/install-formidable-forms/?utm_source=WordPress&utm_medium=get-started&utm_campaign=liteplugin';
147
			}
148
		}
149
        ?>
150
<div class="error frm_previous_install">
151
		<?php
152
		echo apply_filters( // WPCS: XSS ok.
153
			'frm_pro_update_msg',
154
			sprintf(
155
				esc_html__( 'This site has been previously authorized to run Formidable Forms. %1$sInstall Formidable Pro%2$s or %3$sdeauthorize%4$s this site to continue running the free version and remove this message.', 'formidable' ),
156
				'<br/><a href="' . esc_url( $inst_install_url ) . '" id="frm_install_link" target="_blank" data-prourl="' . esc_url( $download_url ) . '">',
157
				'</a>',
158
				'<a href="#" class="frm_deauthorize_link">',
159
				'</a>'
160
			),
161
			esc_url( $inst_install_url )
162
		);
163
		?>
164
	<div id="frm_install_message" class="hidden frm_hidden"></div>
165
</div>
166
<?php
167
    }
168
169
	private static function maybe_show_upgrade_bar() {
170
		if ( ! FrmAppHelper::is_formidable_admin() || FrmAppHelper::pro_is_installed() ) {
171
			return;
172
		}
173
174
		$affiliate = FrmAppHelper::get_affiliate();
175
		if ( ! empty( $affiliate ) ) {
176
			$tip = FrmTipsHelper::get_banner_tip();
177
			$link = FrmAppHelper::admin_upgrade_link( 'banner' );
178
?>
179
<div class="update-nag frm-update-to-pro">
180
	<?php echo FrmAppHelper::kses( $tip['tip'] ); // WPCS: XSS ok. ?>
181
	<span><?php echo FrmAppHelper::kses( $tip['call'] ); // WPCS: XSS ok. ?></span>
182
	<a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( $link ) ); ?>" class="button">Upgrade to Pro</a>
183
</div>
184
<?php
185
		}
186
	}
187
188
	/**
189
	 * Add admin notices as needed for reviews
190
	 *
191
	 * @since 3.04.03
192
	 */
193
	private static function review_request() {
194
		$reviews = new FrmReviews();
195
		$reviews->review_request();
196
	}
197
198
	/**
199
	 * Save the request to hide the review
200
	 *
201
	 * @since 3.04.03
202
	 */
203
	public static function dismiss_review() {
204
		FrmAppHelper::permission_check( 'frm_change_settings' );
205
		check_ajax_referer( 'frm_ajax', 'nonce' );
206
207
		$reviews = new FrmReviews();
208
		$reviews->dismiss_review();
209
	}
210
211
	/**
212
	 * @since 3.04.02
213
	 */
214
	public static function include_upgrade_overlay() {
215
		$is_pro = FrmAppHelper::pro_is_installed();
216
		wp_enqueue_script( 'jquery-ui-dialog' );
217
		wp_enqueue_style( 'jquery-ui-dialog' );
218
		include( FrmAppHelper::plugin_path() . '/classes/views/shared/upgrade_overlay.php' );
219
	}
220
221
	/**
222
	 * @since 3.04.02
223
	 */
224
	public static function remove_upsells() {
225
		remove_action( 'frm_before_settings', 'FrmSettingsController::license_box' );
226
		remove_action( 'frm_after_settings', 'FrmSettingsController::settings_cta' );
227
	}
228
229
	/**
230
	 * Don't nag people to install WPForms
231
	 *
232
	 * @since 3.04.04
233
	 */
234
	public static function remove_wpforms_nag( $upsell ) {
235
		if ( is_array( $upsell ) ) {
236
			foreach ( $upsell as $k => $plugin ) {
237
				if ( strpos( $plugin['slug'], 'wpforms' ) !== false ) {
238
					unset( $upsell[ $k ] );
239
				}
240
			}
241
		}
242
		return $upsell;
243
	}
244
245
	/**
246
	 * If there are CURL problems on this server, wp_remote_post won't work for installing
247
	 * Use a javascript fallback instead.
248
	 *
249
	 * @since 2.0.3
250
	 */
251
	public static function install_js_fallback() {
252
		FrmAppHelper::load_admin_wide_js();
253
		echo '<div id="hidden frm_install_message"></div><script type="text/javascript">jQuery(document).ready(function(){frm_install_now();});</script>';
254
	}
255
256
	/**
257
	 * Check if the database is outdated
258
	 *
259
	 * @since 2.0.1
260
	 * @return boolean
261
	 */
262
	public static function needs_update() {
263
		$needs_upgrade = self::compare_for_update(
264
			array(
265
				'option'             => 'frm_db_version',
266
				'new_db_version'     => FrmAppHelper::$db_version,
267
				'new_plugin_version' => FrmAppHelper::plugin_version(),
268
			)
269
		);
270
271
		if ( ! $needs_upgrade ) {
272
			$needs_upgrade = apply_filters( 'frm_db_needs_upgrade', $needs_upgrade );
273
		}
274
		return $needs_upgrade;
275
	}
276
277
	/**
278
	 * Check both version number and DB number for changes
279
	 *
280
	 * @since 3.0.04
281
	 */
282
	public static function compare_for_update( $atts ) {
283
		$db_version = get_option( $atts['option'] );
284
285
		if ( strpos( $db_version, '-' ) === false ) {
286
			$needs_upgrade = true;
287
		} else {
288
			$last_upgrade = explode( '-', $db_version );
289
			$needs_db_upgrade = (int) $last_upgrade[1] < (int) $atts['new_db_version'];
290
			$new_version = version_compare( $last_upgrade[0], $atts['new_plugin_version'], '<' );
291
			$needs_upgrade = $needs_db_upgrade || $new_version;
292
		}
293
294
		return $needs_upgrade;
295
	}
296
297
	/**
298
	 * Check for database update and trigger js loading
299
	 *
300
	 * @since 2.0.1
301
	 */
302
	public static function admin_init() {
303
		new FrmPersonalData(); // register personal data hooks
304
305
		if ( ! FrmAppHelper::doing_ajax() && self::needs_update() ) {
306
			self::network_upgrade_site();
307
		}
308
309
		$action = FrmAppHelper::simple_get( 'action', 'sanitize_title' );
310
		if ( ! FrmAppHelper::doing_ajax() || $action == 'frm_import_choices' ) {
311
			// don't continue during ajax calls
312
			self::admin_js();
313
		}
314
	}
315
316
    public static function admin_js() {
317
		$version = FrmAppHelper::plugin_version();
318
		FrmAppHelper::load_admin_wide_js( false );
319
320
		$dependecies = array(
321
			'formidable_admin_global',
322
			'formidable',
323
			'jquery',
324
			'jquery-ui-core',
325
			'jquery-ui-draggable',
326
			'jquery-ui-sortable',
327
			'bootstrap_tooltip',
328
			'bootstrap-multiselect',
329
		);
330
331
		if ( FrmAppHelper::is_admin_page( 'formidable-styles' ) ) {
332
			$dependecies[] = 'wp-color-picker';
333
		}
334
335
		wp_register_script( 'formidable_admin', FrmAppHelper::plugin_url() . '/js/formidable_admin.js', $dependecies, $version, true );
336
		wp_register_style( 'formidable-admin', FrmAppHelper::plugin_url() . '/css/frm_admin.css', array(), $version );
337
        wp_register_script( 'bootstrap_tooltip', FrmAppHelper::plugin_url() . '/js/bootstrap.min.js', array( 'jquery' ), '3.3.4' );
338
		wp_register_style( 'formidable-grids', FrmAppHelper::plugin_url() . '/css/frm_grids.css', array(), $version );
339
340
		// load multselect js
341
		wp_register_script( 'bootstrap-multiselect', FrmAppHelper::plugin_url() . '/js/bootstrap-multiselect.js', array( 'jquery', 'bootstrap_tooltip' ), '0.9.8', true );
342
343
		$page = FrmAppHelper::simple_get( 'page', 'sanitize_title' );
344
		$post_type = FrmAppHelper::simple_get( 'post_type', 'sanitize_title' );
345
346
		global $pagenow;
347
		if ( strpos( $page, 'formidable' ) === 0 || ( $pagenow == 'edit.php' && $post_type == 'frm_display' ) ) {
348
349
            wp_enqueue_script( 'admin-widgets' );
350
            wp_enqueue_style( 'widgets' );
351
            wp_enqueue_script( 'formidable' );
352
            wp_enqueue_script( 'formidable_admin' );
353
			FrmAppHelper::localize_script( 'admin' );
354
355
			wp_enqueue_style( 'formidable-admin' );
356
			if ( 'formidable-styles' !== $page ) {
357
				wp_enqueue_style( 'formidable-grids' );
358
				wp_enqueue_style( 'formidable-dropzone' );
359
				add_thickbox();
360
			} else {
361
				$settings = FrmAppHelper::get_settings();
362
				if ( empty( $settings->old_css ) ) {
363
					wp_enqueue_style( 'formidable-grids' );
364
				}
365
			}
366
367
            wp_register_script( 'formidable-editinplace', FrmAppHelper::plugin_url() . '/js/jquery/jquery.editinplace.packed.js', array( 'jquery' ), '2.3.0' );
368
369
			do_action( 'frm_enqueue_builder_scripts' );
370
        } else if ( $pagenow == 'post.php' || ( $pagenow == 'post-new.php' && $post_type == 'frm_display' ) ) {
371
            if ( isset( $_REQUEST['post_type'] ) ) {
372
                $post_type = sanitize_title( $_REQUEST['post_type'] );
373
			} else if ( isset( $_REQUEST['post'] ) && absint( $_REQUEST['post'] ) ) {
374
				$post = get_post( absint( $_REQUEST['post'] ) );
375
                if ( ! $post ) {
376
                    return;
377
                }
378
                $post_type = $post->post_type;
379
            } else {
380
                return;
381
            }
382
383
            if ( $post_type == 'frm_display' ) {
384
                wp_enqueue_script( 'jquery-ui-draggable' );
385
                wp_enqueue_script( 'formidable_admin' );
386
                wp_enqueue_style( 'formidable-admin' );
387
				FrmAppHelper::localize_script( 'admin' );
388
            }
389
        } else if ( $pagenow == 'widgets.php' ) {
390
            FrmAppHelper::load_admin_wide_js();
391
        }
392
    }
393
394
    public static function load_lang() {
395
        load_plugin_textdomain( 'formidable', false, FrmAppHelper::plugin_folder() . '/languages/' );
396
    }
397
398
	/**
399
	 * Check if the styles are updated when a form is loaded on the front-end
400
	 *
401
	 * @since 3.0.1
402
	 */
403
	public static function maybe_update_styles() {
404
		if ( self::needs_update() ) {
405
			self::network_upgrade_site();
406
		}
407
	}
408
409
	/**
410
	 * @since 3.0
411
	 */
412
	public static function create_rest_routes() {
413
		$args = array(
414
			'methods'  => 'GET',
415
			'callback' => 'FrmAppController::api_install',
416
		);
417
		register_rest_route( 'frm-admin/v1', '/install', $args );
418
	}
419
420
	/**
421
	 * Run silent upgrade on each site in the network during a network upgrade.
422
	 * Update database settings for all sites in a network during network upgrade process.
423
	 *
424
	 * @since 2.0.1
425
	 *
426
	 * @param int $blog_id Blog ID.
427
	 */
428
	public static function network_upgrade_site( $blog_id = 0 ) {
429
430
		$request = new WP_REST_Request( 'GET', '/frm-admin/v1/install' );
431
432
		if ( $blog_id ) {
433
			switch_to_blog( $blog_id );
0 ignored issues
show
introduced by
switch_to_blog is not something you should ever need to do in a VIP theme context. Instead use an API (XML-RPC, REST) to interact with other sites if needed.
Loading history...
434
			$response = rest_do_request( $request );
435
			restore_current_blog();
436
		} else {
437
			$response = rest_do_request( $request );
438
		}
439
440
		if ( $response->is_error() ) {
441
			// if the remove post fails, use javascript instead
442
			add_action( 'admin_notices', 'FrmAppController::install_js_fallback' );
443
		}
444
	}
445
446
	/**
447
	 * @since 3.0
448
	 */
449
	public static function api_install() {
450
		if ( self::needs_update() ) {
451
			$running = get_option( 'frm_install_running' );
452
			if ( false === $running || $running < strtotime( '-5 minutes' ) ) {
453
				update_option( 'frm_install_running', time(), 'no' );
454
				self::install();
455
				delete_option( 'frm_install_running' );
456
			}
457
		}
458
		return true;
459
	}
460
461
	/**
462
	 * Silent database upgrade (no redirect).
463
	 * Called via ajax request during network upgrade process.
464
	 *
465
	 * @since 2.0.1
466
	 */
467
	public static function ajax_install() {
468
		self::api_install();
469
		wp_die();
470
	}
471
472
    public static function install() {
473
        $frmdb = new FrmMigrate();
474
        $frmdb->upgrade();
475
    }
476
477
    public static function uninstall() {
478
		FrmAppHelper::permission_check( 'administrator' );
479
        check_ajax_referer( 'frm_ajax', 'nonce' );
480
481
		$frmdb = new FrmMigrate();
482
		$frmdb->uninstall();
483
484
		//disable the plugin and redirect after uninstall so the tables don't get added right back
485
		deactivate_plugins( FrmAppHelper::plugin_folder() . '/formidable.php', false, false );
486
		echo esc_url_raw( admin_url( 'plugins.php?deactivate=true' ) );
487
488
        wp_die();
489
    }
490
491
    public static function drop_tables( $tables ) {
492
        global $wpdb;
493
        $tables[] = $wpdb->prefix . 'frm_fields';
494
        $tables[] = $wpdb->prefix . 'frm_forms';
495
        $tables[] = $wpdb->prefix . 'frm_items';
496
        $tables[] = $wpdb->prefix . 'frm_item_metas';
497
        return $tables;
498
    }
499
500
    public static function deauthorize() {
501
		FrmAppHelper::permission_check( 'frm_change_settings' );
502
        check_ajax_referer( 'frm_ajax', 'nonce' );
503
504
        delete_option( 'frmpro-credentials' );
505
        delete_option( 'frmpro-authorized' );
506
        delete_site_option( 'frmpro-credentials' );
507
        delete_site_option( 'frmpro-authorized' );
508
        wp_die();
509
    }
510
511
	public static function set_footer_text( $text ) {
512
		if ( FrmAppHelper::is_formidable_admin() ) {
513
			$link = FrmAppHelper::admin_upgrade_link( 'footer' );
514
			$text = sprintf(
515
				__( 'Help us spread the %1$sFormidable Forms%2$s love with %3$s %5$s on WordPress.org%4$s. Thank you heaps!', 'formidable' ),
516
				'<a href="' . esc_url( FrmAppHelper::make_affiliate_url( $link ) ) . '" target="_blank">',
517
				'</a>',
518
				'<a href="https://wordpress.org/support/plugin/formidable/reviews/?filter=5#new-post" target="_blank">',
519
				'</a>',
520
				'&#9733;&#9733;&#9733;&#9733;&#9733;'
521
			);
522
			$text = '<span id="footer-thankyou">' . $text . '</span>';
523
		}
524
		return $text;
525
	}
526
527
	/**
528
	 * @deprecated 1.07.05
529
	 * @codeCoverageIgnore
530
	 */
531
    public static function get_form_shortcode( $atts ) {
532
        return FrmDeprecated::get_form_shortcode( $atts );
1 ignored issue
show
Deprecated Code introduced by
The method FrmDeprecated::get_form_shortcode() has been deprecated with message: 1.07.05

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
533
    }
534
535
	/**
536
	 * @deprecated 2.5.4
537
	 * @codeCoverageIgnore
538
	 */
539
	public static function widget_text_filter( $content ) {
540
		return FrmDeprecated::widget_text_filter( $content );
1 ignored issue
show
Deprecated Code introduced by
The method FrmDeprecated::widget_text_filter() has been deprecated with message: 2.5.4

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
541
	}
542
543
	/**
544
	 * Deprecated in favor of wpmu_upgrade_site
545
	 *
546
	 * @deprecated 2.3
547
	 * @codeCoverageIgnore
548
	 */
549
	public static function front_head() {
550
		FrmDeprecated::front_head();
1 ignored issue
show
Deprecated Code introduced by
The method FrmDeprecated::front_head() has been deprecated with message: 2.3

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
551
	}
552
553
554
	/**
555
	 * @deprecated 3.0.04
556
	 * @codeCoverageIgnore
557
	 */
558
	public static function activation_install() {
559
		FrmDeprecated::activation_install();
1 ignored issue
show
Deprecated Code introduced by
The method FrmDeprecated::activation_install() has been deprecated with message: 3.0.04

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
560
	}
561
562
	/**
563
	 * @deprecated 3.0
564
	 * @codeCoverageIgnore
565
	 */
566
	public static function page_route( $content ) {
567
		return FrmDeprecated::page_route( $content );
1 ignored issue
show
Deprecated Code introduced by
The method FrmDeprecated::page_route() has been deprecated with message: 3.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
568
	}
569
}
570