PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.31
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.31
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
formidable / classes / controllers / FrmHooksController.php

FrmHooksController.php in Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More 6.31, at classes/controllers/FrmHooksController.php

370 lines 15.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 die( 'You are not allowed to call this page directly.' );
4 }
5
6 class FrmHooksController {
7
8 /**
9 * Trigger plugin-wide hook loading
10 *
11 * @param string $hooks
12 *
13 * @return void
14 */
15 public static function trigger_load_hook( $hooks = 'load_hooks' ) {
16 $controllers = apply_filters( 'frm_load_controllers', array( 'FrmHooksController' ) );
17 $trigger_hooks = $hooks;
18 $hooks = (array) $hooks;
19
20 if ( 'load_hooks' === $trigger_hooks ) {
21 if ( is_admin() ) {
22 $hooks[] = 'load_admin_hooks';
23
24 if ( defined( 'DOING_AJAX' ) ) {
25 $hooks[] = 'load_ajax_hooks';
26 $hooks[] = 'load_form_hooks';
27 }
28 }
29
30 if ( is_multisite() ) {
31 $hooks[] = 'load_multisite_hooks';
32 }
33 } else {
34 // Make sure the hooks are only triggered once.
35 add_filter( 'frm' . str_replace( 'load', '', $trigger_hooks ) . '_loaded', '__return_true' );
36 }
37 unset( $trigger_hooks );
38
39 // Instantiate Controllers.
40 foreach ( $controllers as $c ) {
41 foreach ( $hooks as $hook ) {
42 if ( is_callable( array( $c, $hook ) ) ) {
43 call_user_func( array( $c, $hook ) );
44 }
45 unset( $hook );
46 }
47 unset( $c );
48 }
49 }
50
51 /**
52 * @return void
53 */
54 public static function trigger_load_form_hooks() {
55 self::trigger_load_hook( 'load_form_hooks' );
56 }
57
58 /**
59 * @return void
60 */
61 public static function load_hooks() {
62 // Use 0 so this gets triggered before FrmFormActionsController::register_post_types.
63 add_action( 'init', 'FrmAppController::load_lang', 0 );
64
65 add_action( 'rest_api_init', 'FrmAppController::create_rest_routes', 0 );
66 add_filter( 'widget_text', 'do_shortcode' );
67
68 // Entries controller.
69 add_action( 'wp_loaded', 'FrmEntriesController::process_entry', 10, 0 );
70 add_action( 'frm_after_entry_processed', 'FrmEntriesController::delete_entry_after_save', 100 );
71
72 // Form Actions Controller.
73 add_action( 'init', 'FrmFormActionsController::register_post_types', 1 );
74 add_action( 'frm_after_create_entry', 'FrmFormActionsController::trigger_create_actions', 20, 3 );
75 add_filter( 'pre_wpml_is_translated_post_type', 'FrmFormActionsController::prevent_wpml_translations', 10, 2 );
76
77 // Forms Controller.
78 add_action( 'widgets_init', 'FrmFormsController::register_widgets' );
79 add_action( 'init', 'FrmFormsController::front_head' );
80 add_filter( 'frm_content', 'FrmFormsController::filter_content', 10, 3 );
81 add_filter( 'frm_replace_content_shortcodes', 'FrmFormsController::replace_content_shortcodes', 20, 3 );
82 add_action( 'admin_bar_init', 'FrmFormsController::admin_bar_css' );
83 add_action( 'wp_footer', 'FrmFormsController::footer_js', 1, 0 );
84 add_action( 'wp_footer', 'FrmHoneypot::maybe_print_honeypot_js', 99 );
85
86 add_action( 'wp_scheduled_delete', 'FrmForm::scheduled_delete' );
87
88 // Form Shortcodes.
89 add_shortcode( 'formidable', 'FrmFormsController::get_form_shortcode' );
90
91 // Styles Controller.
92 add_action( 'init', 'FrmStylesController::register_post_types', 0 );
93 add_filter( 'frm_get_style_opts', 'FrmStylesController::get_style_opts' );
94 add_filter( 'frm_add_form_style_class', 'FrmStylesController::get_form_style_class', 10, 2 );
95 add_filter( 'frm_show_entry_styles', 'FrmStylesController::show_entry_styles' );
96
97 // Simple Blocks Controller.
98 add_action( 'init', 'FrmSimpleBlocksController::register_simple_form_block' );
99
100 add_filter( 'cron_schedules', 'FrmUsageController::add_schedules' );
101 add_action( 'formidable_send_usage', 'FrmUsageController::send_snapshot' );
102
103 /**
104 * Make name field work with View.
105 * FrmProContent::replace_single_shortcode() applies this filter like 'frm_keep_' . $field->type . '_value_array'
106 */
107 add_filter( 'frm_keep_name_value_array', '__return_true' );
108
109 // Elementor.
110 add_action( 'elementor/widgets/register', 'FrmElementorController::register_elementor_hooks' );
111
112 // Summary emails.
113 add_action( 'frm_daily_event', 'FrmEmailSummaryController::maybe_send_emails' );
114
115 FrmTransLiteHooksController::load_hooks();
116 FrmStrpLiteHooksController::load_hooks();
117 FrmSquareLiteHooksController::load_hooks();
118 FrmPayPalLiteHooksController::load_hooks();
119
120 // GDPR
121 add_filter( 'frm_is_field_required', 'FrmFieldGdpr::force_required_field', 10, 2 );
122 }
123
124 /**
125 * @return void
126 */
127 public static function load_admin_hooks() {
128 add_action( 'admin_menu', 'FrmAppController::menu', 1 );
129 add_filter( 'admin_body_class', 'FrmAppController::add_admin_class', 999 );
130 add_action( 'admin_notices', 'FrmAppController::pro_get_started_headline' );
131 add_action( 'admin_init', 'FrmAppController::admin_init', 11 );
132 add_action( 'admin_enqueue_scripts', 'FrmAppController::admin_enqueue_scripts' );
133 add_filter( 'plugin_action_links_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'FrmAppController::settings_link' );
134 add_filter( 'admin_footer_text', 'FrmAppController::set_footer_text' );
135 add_action( 'admin_footer', 'FrmAppController::add_admin_footer_links' );
136 add_action( 'current_screen', 'FrmAppController::handle_current_screen' );
137
138 // Entries Controller.
139 add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
140 add_filter( 'set-screen-option', 'FrmEntriesController::save_per_page', 10, 3 );
141 add_filter( 'update_user_metadata', 'FrmEntriesController::check_hidden_cols', 10, 5 );
142 add_action( 'updated_user_meta', 'FrmEntriesController::update_hidden_cols', 10, 4 );
143
144 // Form Actions Controller.
145 if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
146 add_action( 'frm_before_update_form_settings', 'FrmFormActionsController::update_settings' );
147 }
148
149 add_action( 'frm_after_duplicate_form', 'FrmFormActionsController::duplicate_form_actions', 20, 3 );
150
151 // Fields Model.
152 add_filter( 'frm_pro_available_fields', 'FrmField::show_update_for_pro_fields' );
153
154 // Forms Controller.
155 add_action( 'admin_menu', 'FrmFormsController::menu', 10 );
156 add_action( 'admin_head-toplevel_page_formidable', 'FrmFormsController::head' );
157 add_action( 'frm_after_field_options', 'FrmFormsController::logic_tip' );
158 add_filter( 'frm_fields_in_form_builder', 'FrmFormsController::update_form_builder_fields' );
159
160 add_filter( 'set-screen-option', 'FrmFormsController::save_per_page', 10, 3 );
161 add_action( 'admin_footer', 'FrmFormsController::insert_form_popup' );
162
163 // Elementor.
164 add_action( 'elementor/editor/footer', 'FrmElementorController::admin_init' );
165
166 add_action( 'media_buttons', 'FrmFormsController::insert_form_button' );
167 add_action( 'et_pb_admin_excluded_shortcodes', 'FrmFormsController::prevent_divi_conflict' );
168
169 // Forms Model.
170 add_action( 'frm_after_duplicate_form', 'FrmForm::after_duplicate', 10, 2 );
171
172 // Settings Controller.
173 add_action( 'admin_menu', 'FrmSettingsController::menu', 45 );
174 add_action( 'frm_before_settings', 'FrmSettingsController::license_box' );
175 add_action( 'frm_after_settings_tabs', 'FrmSettingsController::settings_cta' );
176
177 // Styles Controller.
178 add_action( 'admin_menu', 'FrmStylesController::menu', 14 );
179 add_action( 'plugins_loaded', 'FrmStylesController::plugins_loaded' );
180 add_action( 'admin_init', 'FrmStylesController::admin_init' );
181 // Use 11 so it happens after add_action( 'wp_default_styles', 'wp_default_styles' ); where edit.css is added.
182 add_action( 'wp_default_styles', 'FrmStylesController::disable_conflicting_wp_admin_css', 11 );
183
184 // XML Controller.
185 add_action( 'admin_menu', 'FrmXMLController::menu', 41 );
186
187 // Simple Blocks Controller.
188 add_action( 'enqueue_block_editor_assets', 'FrmSimpleBlocksController::block_editor_assets' );
189 add_action( 'enqueue_block_assets', 'FrmSimpleBlocksController::block_assets' );
190
191 add_action( 'admin_init', 'FrmUsageController::schedule_send' );
192
193 // Applications Controller.
194 // Use the same priority as styles so Applications appear directly under Styles.
195 add_action( 'admin_menu', 'FrmApplicationsController::menu', 14 );
196 add_action( 'admin_enqueue_scripts', 'FrmApplicationsController::dequeue_scripts', 15 );
197
198 // CAPTCHA
199 add_filter( 'frm_setup_edit_field_vars', 'FrmFieldCaptcha::update_field_name' );
200
201 // From Templates.
202 FrmFormTemplatesController::load_admin_hooks();
203
204 // Cronjob.
205 add_action( 'admin_init', 'FrmCronController::schedule_events' );
206
207 // Cross sell.
208 add_action( 'admin_menu', 'FrmSalesApi::menu', 1000 );
209
210 // Deactivation feedback.
211 add_action( 'admin_enqueue_scripts', 'FrmDeactivationFeedbackController::enqueue_assets' );
212 add_action( 'admin_footer', 'FrmDeactivationFeedbackController::footer_html' );
213 add_action( 'deactivated_plugin', 'FrmDeactivationFeedbackController::set_feedback_expired_date' );
214
215 add_action( 'frm_email_styles_extra_settings', 'FrmEmailStylesController::show_upsell_settings' );
216
217 add_action( 'admin_init', 'FrmWelcomeTourController::admin_init' );
218
219 FrmDashboardController::load_admin_hooks();
220 FrmTransLiteHooksController::load_admin_hooks();
221 FrmStrpLiteHooksController::load_admin_hooks();
222 FrmSquareLiteHooksController::load_admin_hooks();
223 FrmPayPalLiteHooksController::load_admin_hooks();
224 FrmSMTPController::load_hooks();
225 FrmOnboardingWizardController::load_admin_hooks();
226 FrmAddonsController::load_admin_hooks();
227 new FrmPluginSearch();
228 }
229
230 /**
231 * @return void
232 */
233 public static function load_ajax_hooks() {
234 add_action( 'wp_ajax_frm_install', 'FrmAppController::ajax_install' );
235 add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
236 add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
237
238 // Onboarding Wizard Controller.
239 add_action( 'wp_ajax_frm_onboarding_consent_tracking', 'FrmOnboardingWizardController::ajax_consent_tracking' );
240 add_action( 'wp_ajax_frm_onboarding_setup_usage_data', 'FrmOnboardingWizardController::setup_usage_data' );
241
242 // Addons.
243 add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
244 add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
245 add_action( 'wp_ajax_frm_activate_addon', 'FrmAddonsController::ajax_activate_addon' );
246 add_action( 'wp_ajax_frm_deactivate_addon', 'FrmAddonsController::ajax_deactivate_addon' );
247 add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
248 add_action( 'wp_ajax_frm_uninstall_addon', 'FrmAddonsController::ajax_uninstall_addon' );
249 // Plugin.
250 add_action( 'wp_ajax_frm_install_plugin', 'FrmInstallPlugin::ajax_install_plugin' );
251 add_action( 'wp_ajax_frm_check_plugin_activation', 'FrmInstallPlugin::ajax_check_plugin_activation' );
252
253 // Fields Controller.
254 add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
255 add_action( 'wp_ajax_frm_insert_field', 'FrmFieldsController::create' );
256 add_action( 'wp_ajax_frm_duplicate_field', 'FrmFieldsController::duplicate' );
257 add_action( 'wp_ajax_frm_delete_field', 'FrmFieldsController::destroy' );
258 add_action( 'wp_ajax_frm_import_options', 'FrmFieldsController::import_options' );
259
260 // Form Actions Controller.
261 add_action( 'wp_ajax_frm_add_form_action', 'FrmFormActionsController::add_form_action' );
262 add_action( 'wp_ajax_frm_form_action_fill', 'FrmFormActionsController::fill_action' );
263
264 // Forms Controller.
265 add_action( 'wp_ajax_frm_save_form', 'FrmFormsController::route' );
266 add_action( 'wp_ajax_frm_rename_form', 'FrmFormsController::rename_form' );
267 add_action( 'wp_ajax_frm_get_default_html', 'FrmFormsController::get_email_html' );
268 add_action( 'wp_ajax_frm_get_shortcode_opts', 'FrmFormsController::get_shortcode_opts' );
269 add_action( 'wp_ajax_frm_forms_preview', 'FrmFormsController::preview' );
270 add_action( 'wp_ajax_nopriv_frm_forms_preview', 'FrmFormsController::preview' );
271 add_action( 'wp_ajax_frm_forms_trash', 'FrmFormsController::ajax_trash' );
272 add_action( 'wp_ajax_frm_install_form', 'FrmFormsController::build_new_form' );
273 add_action( 'wp_ajax_frm_create_page_with_shortcode', 'FrmFormsController::create_page_with_shortcode' );
274 add_action( 'wp_ajax_get_page_dropdown', 'FrmFormsController::get_page_dropdown' );
275
276 add_action( 'wp_ajax_frm_dismiss_migrator', 'FrmFormMigratorsHelper::dismiss_migrator' );
277
278 // Form Templates Controller.
279 add_action( 'wp_ajax_frm_add_or_remove_favorite_template', 'FrmFormTemplatesController::ajax_add_or_remove_favorite' );
280 add_action( 'wp_ajax_frm_create_template', 'FrmFormTemplatesController::ajax_create_template' );
281 add_action( 'wp_ajax_frm_get_free_templates', 'FrmFormTemplatesController::ajax_get_free_templates' );
282
283 // Inbox.
284 add_action( 'wp_ajax_frm_inbox_dismiss', 'FrmInboxController::dismiss_message' );
285
286 // Settings.
287 add_action( 'wp_ajax_frm_lite_settings_upgrade', 'FrmSettingsController::settings_cta_dismiss' );
288 add_action( 'wp_ajax_frm_settings_tab', 'FrmSettingsController::load_settings_tab' );
289 add_action( 'wp_ajax_frm_page_search', 'FrmSettingsController::page_search' );
290
291 // Styles Controller.
292 add_action( 'wp_ajax_frm_settings_reset', 'FrmStylesController::reset_styling' );
293 add_action( 'wp_ajax_frm_change_styling', 'FrmStylesController::change_styling' );
294 add_action( 'wp_ajax_frmpro_load_css', 'FrmStylesController::load_css' );
295 add_action( 'wp_ajax_nopriv_frmpro_load_css', 'FrmStylesController::load_css' );
296 add_action( 'wp_ajax_frmpro_css', 'FrmStylesController::load_saved_css' );
297 add_action( 'wp_ajax_nopriv_frmpro_css', 'FrmStylesController::load_saved_css' );
298 add_action( 'wp_ajax_frm_rename_style', 'FrmStylesController::rename_style' );
299
300 // XML Controller.
301 add_action( 'wp_ajax_frm_install_template', 'FrmXMLController::install_template' );
302 add_action( 'wp_ajax_frm_entries_csv', 'FrmXMLController::csv' );
303 add_action( 'wp_ajax_nopriv_frm_entries_csv', 'FrmXMLController::csv' );
304 add_action( 'wp_ajax_frm_export_xml', 'FrmXMLController::export_xml' );
305
306 // Dashboard Controller.
307 add_action( 'wp_ajax_dashboard_ajax_action', 'FrmDashboardController::ajax_requests' );
308
309 // Submit with AJAX.
310 // Trigger before process_entry.
311 add_action( 'wp_loaded', 'FrmEntriesAJAXSubmitController::ajax_create', 5 );
312
313 // Track the flows usage data.
314 add_action( 'wp_ajax_frm_track_flows', 'FrmUsageController::ajax_track_flows' );
315
316 // Applications.
317 add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
318
319 // Reviews.
320 add_action( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
321 add_action( 'wp_ajax_frm_small_screen_proceed', 'FrmAppController::small_screen_proceed' );
322 add_action( 'wp_ajax_frm_sale_banner_dismiss', 'FrmSalesApi::dismiss_banner' );
323
324 add_action( 'wp_ajax_frm_email_style_preview', 'FrmEmailStylesController::ajax_preview' );
325 add_action( 'wp_ajax_frm_send_test_email', 'FrmEmailStylesController::ajax_send_test_email' );
326
327 // Welcome Tour.
328 add_action( 'wp_ajax_frm_mark_checklist_step_as_completed', 'FrmWelcomeTourController::ajax_mark_checklist_step_as_completed' );
329 add_action( 'wp_ajax_frm_dismiss_welcome_tour', 'FrmWelcomeTourController::ajax_dismiss_welcome_tour' );
330 }
331
332 /**
333 * @return void
334 */
335 public static function load_form_hooks() {
336 // Fields Controller.
337 add_filter( 'frm_field_type', 'FrmFieldsController::change_type' );
338 add_action( 'frm_field_input_html', 'FrmFieldsController::input_html' );
339 add_filter( 'frm_field_value_saved', 'FrmFieldsController::check_value', 50, 3 );
340 add_filter( 'frm_field_label_seen', 'FrmFieldsController::check_label' );
341
342 // Forms Controller.
343 add_action( 'frm_form_classes', 'FrmFormsController::form_classes' );
344 add_filter( 'frm_submit_button_class', 'FrmFormsController::update_button_classes' );
345 add_filter( 'frm_back_button_class', 'FrmFormsController::update_button_classes' );
346
347 add_filter( 'frm_pre_display_form', 'FrmSubmitHelper::copy_submit_field_settings_to_form' );
348
349 // Styles Controller.
350 add_filter( 'frm_use_important_width', 'FrmStylesController::important_style', 10, 2 );
351 }
352
353 /**
354 * @return void
355 */
356 public static function load_view_hooks() {
357 // Hooks go here when a view is loaded.
358 }
359
360 /**
361 * @return void
362 */
363 public static function load_multisite_hooks() {
364 add_action( 'wpmu_upgrade_site', 'FrmAppController::network_upgrade_site' );
365
366 // Drop tables when mu site is deleted.
367 add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
368 }
369 }
370