PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.28
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.28
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.28, at classes/controllers/FrmHooksController.php

365 lines 15.6 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
119 // GDPR
120 add_filter( 'frm_is_field_required', 'FrmFieldGdpr::force_required_field', 10, 2 );
121 }
122
123 /**
124 * @return void
125 */
126 public static function load_admin_hooks() {
127 add_action( 'admin_menu', 'FrmAppController::menu', 1 );
128 add_filter( 'admin_body_class', 'FrmAppController::add_admin_class', 999 );
129 add_action( 'admin_notices', 'FrmAppController::pro_get_started_headline' );
130 add_action( 'admin_init', 'FrmAppController::admin_init', 11 );
131 add_action( 'admin_enqueue_scripts', 'FrmAppController::admin_enqueue_scripts' );
132 add_filter( 'plugin_action_links_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'FrmAppController::settings_link' );
133 add_filter( 'admin_footer_text', 'FrmAppController::set_footer_text' );
134 add_action( 'admin_footer', 'FrmAppController::add_admin_footer_links' );
135 add_action( 'current_screen', 'FrmAppController::handle_current_screen' );
136
137 // Entries Controller.
138 add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
139 add_filter( 'set-screen-option', 'FrmEntriesController::save_per_page', 10, 3 );
140 add_filter( 'update_user_metadata', 'FrmEntriesController::check_hidden_cols', 10, 5 );
141 add_action( 'updated_user_meta', 'FrmEntriesController::update_hidden_cols', 10, 4 );
142
143 // Form Actions Controller.
144 if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
145 add_action( 'frm_before_update_form_settings', 'FrmFormActionsController::update_settings' );
146 }
147
148 add_action( 'frm_after_duplicate_form', 'FrmFormActionsController::duplicate_form_actions', 20, 3 );
149
150 // Forms Controller.
151 add_action( 'admin_menu', 'FrmFormsController::menu', 10 );
152 add_action( 'admin_head-toplevel_page_formidable', 'FrmFormsController::head' );
153 add_action( 'frm_after_field_options', 'FrmFormsController::logic_tip' );
154 add_filter( 'frm_fields_in_form_builder', 'FrmFormsController::update_form_builder_fields' );
155
156 add_filter( 'set-screen-option', 'FrmFormsController::save_per_page', 10, 3 );
157 add_action( 'admin_footer', 'FrmFormsController::insert_form_popup' );
158
159 // Elementor.
160 add_action( 'elementor/editor/footer', 'FrmElementorController::admin_init' );
161
162 add_action( 'media_buttons', 'FrmFormsController::insert_form_button' );
163 add_action( 'et_pb_admin_excluded_shortcodes', 'FrmFormsController::prevent_divi_conflict' );
164
165 // Forms Model.
166 add_action( 'frm_after_duplicate_form', 'FrmForm::after_duplicate', 10, 2 );
167
168 // Settings Controller.
169 add_action( 'admin_menu', 'FrmSettingsController::menu', 45 );
170 add_action( 'frm_before_settings', 'FrmSettingsController::license_box' );
171 add_action( 'frm_after_settings_tabs', 'FrmSettingsController::settings_cta' );
172
173 // Styles Controller.
174 add_action( 'admin_menu', 'FrmStylesController::menu', 14 );
175 add_action( 'plugins_loaded', 'FrmStylesController::plugins_loaded' );
176 add_action( 'admin_init', 'FrmStylesController::admin_init' );
177 // Use 11 so it happens after add_action( 'wp_default_styles', 'wp_default_styles' ); where edit.css is added.
178 add_action( 'wp_default_styles', 'FrmStylesController::disable_conflicting_wp_admin_css', 11 );
179
180 // XML Controller.
181 add_action( 'admin_menu', 'FrmXMLController::menu', 41 );
182
183 // Simple Blocks Controller.
184 add_action( 'enqueue_block_editor_assets', 'FrmSimpleBlocksController::block_editor_assets' );
185 add_action( 'enqueue_block_assets', 'FrmSimpleBlocksController::block_assets' );
186
187 add_action( 'admin_init', 'FrmUsageController::schedule_send' );
188
189 // Applications Controller.
190 // Use the same priority as styles so Applications appear directly under Styles.
191 add_action( 'admin_menu', 'FrmApplicationsController::menu', 14 );
192 add_action( 'admin_enqueue_scripts', 'FrmApplicationsController::dequeue_scripts', 15 );
193
194 // CAPTCHA
195 add_filter( 'frm_setup_edit_field_vars', 'FrmFieldCaptcha::update_field_name' );
196
197 // From Templates.
198 FrmFormTemplatesController::load_admin_hooks();
199
200 // Cronjob.
201 add_action( 'admin_init', 'FrmCronController::schedule_events' );
202
203 // Cross sell.
204 add_action( 'admin_menu', 'FrmSalesApi::menu', 1000 );
205
206 // Deactivation feedback.
207 add_action( 'admin_enqueue_scripts', 'FrmDeactivationFeedbackController::enqueue_assets' );
208 add_action( 'admin_footer', 'FrmDeactivationFeedbackController::footer_html' );
209 add_action( 'deactivated_plugin', 'FrmDeactivationFeedbackController::set_feedback_expired_date' );
210
211 add_action( 'frm_email_styles_extra_settings', 'FrmEmailStylesController::show_upsell_settings' );
212
213 add_action( 'admin_init', 'FrmWelcomeTourController::admin_init' );
214
215 FrmDashboardController::load_admin_hooks();
216 FrmTransLiteHooksController::load_admin_hooks();
217 FrmStrpLiteHooksController::load_admin_hooks();
218 FrmSquareLiteHooksController::load_admin_hooks();
219 FrmSMTPController::load_hooks();
220 FrmOnboardingWizardController::load_admin_hooks();
221 FrmAddonsController::load_admin_hooks();
222 new FrmPluginSearch();
223 }
224
225 /**
226 * @return void
227 */
228 public static function load_ajax_hooks() {
229 add_action( 'wp_ajax_frm_install', 'FrmAppController::ajax_install' );
230 add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
231 add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
232
233 // Onboarding Wizard Controller.
234 add_action( 'wp_ajax_frm_onboarding_consent_tracking', 'FrmOnboardingWizardController::ajax_consent_tracking' );
235 add_action( 'wp_ajax_frm_onboarding_setup_usage_data', 'FrmOnboardingWizardController::setup_usage_data' );
236
237 // Addons.
238 add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
239 add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
240 add_action( 'wp_ajax_frm_activate_addon', 'FrmAddonsController::ajax_activate_addon' );
241 add_action( 'wp_ajax_frm_deactivate_addon', 'FrmAddonsController::ajax_deactivate_addon' );
242 add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
243 add_action( 'wp_ajax_frm_uninstall_addon', 'FrmAddonsController::ajax_uninstall_addon' );
244 // Plugin.
245 add_action( 'wp_ajax_frm_install_plugin', 'FrmInstallPlugin::ajax_install_plugin' );
246 add_action( 'wp_ajax_frm_check_plugin_activation', 'FrmInstallPlugin::ajax_check_plugin_activation' );
247
248 // Fields Controller.
249 add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
250 add_action( 'wp_ajax_frm_insert_field', 'FrmFieldsController::create' );
251 add_action( 'wp_ajax_frm_duplicate_field', 'FrmFieldsController::duplicate' );
252 add_action( 'wp_ajax_frm_delete_field', 'FrmFieldsController::destroy' );
253 add_action( 'wp_ajax_frm_import_options', 'FrmFieldsController::import_options' );
254
255 // Form Actions Controller.
256 add_action( 'wp_ajax_frm_add_form_action', 'FrmFormActionsController::add_form_action' );
257 add_action( 'wp_ajax_frm_form_action_fill', 'FrmFormActionsController::fill_action' );
258
259 // Forms Controller.
260 add_action( 'wp_ajax_frm_save_form', 'FrmFormsController::route' );
261 add_action( 'wp_ajax_frm_rename_form', 'FrmFormsController::rename_form' );
262 add_action( 'wp_ajax_frm_get_default_html', 'FrmFormsController::get_email_html' );
263 add_action( 'wp_ajax_frm_get_shortcode_opts', 'FrmFormsController::get_shortcode_opts' );
264 add_action( 'wp_ajax_frm_forms_preview', 'FrmFormsController::preview' );
265 add_action( 'wp_ajax_nopriv_frm_forms_preview', 'FrmFormsController::preview' );
266 add_action( 'wp_ajax_frm_forms_trash', 'FrmFormsController::ajax_trash' );
267 add_action( 'wp_ajax_frm_install_form', 'FrmFormsController::build_new_form' );
268 add_action( 'wp_ajax_frm_create_page_with_shortcode', 'FrmFormsController::create_page_with_shortcode' );
269 add_action( 'wp_ajax_get_page_dropdown', 'FrmFormsController::get_page_dropdown' );
270
271 add_action( 'wp_ajax_frm_dismiss_migrator', 'FrmFormMigratorsHelper::dismiss_migrator' );
272
273 // Form Templates Controller.
274 add_action( 'wp_ajax_frm_add_or_remove_favorite_template', 'FrmFormTemplatesController::ajax_add_or_remove_favorite' );
275 add_action( 'wp_ajax_frm_create_template', 'FrmFormTemplatesController::ajax_create_template' );
276 add_action( 'wp_ajax_frm_get_free_templates', 'FrmFormTemplatesController::ajax_get_free_templates' );
277
278 // Inbox.
279 add_action( 'wp_ajax_frm_inbox_dismiss', 'FrmInboxController::dismiss_message' );
280
281 // Settings.
282 add_action( 'wp_ajax_frm_lite_settings_upgrade', 'FrmSettingsController::settings_cta_dismiss' );
283 add_action( 'wp_ajax_frm_settings_tab', 'FrmSettingsController::load_settings_tab' );
284 add_action( 'wp_ajax_frm_page_search', 'FrmSettingsController::page_search' );
285
286 // Styles Controller.
287 add_action( 'wp_ajax_frm_settings_reset', 'FrmStylesController::reset_styling' );
288 add_action( 'wp_ajax_frm_change_styling', 'FrmStylesController::change_styling' );
289 add_action( 'wp_ajax_frmpro_load_css', 'FrmStylesController::load_css' );
290 add_action( 'wp_ajax_nopriv_frmpro_load_css', 'FrmStylesController::load_css' );
291 add_action( 'wp_ajax_frmpro_css', 'FrmStylesController::load_saved_css' );
292 add_action( 'wp_ajax_nopriv_frmpro_css', 'FrmStylesController::load_saved_css' );
293 add_action( 'wp_ajax_frm_rename_style', 'FrmStylesController::rename_style' );
294
295 // XML Controller.
296 add_action( 'wp_ajax_frm_install_template', 'FrmXMLController::install_template' );
297 add_action( 'wp_ajax_frm_entries_csv', 'FrmXMLController::csv' );
298 add_action( 'wp_ajax_nopriv_frm_entries_csv', 'FrmXMLController::csv' );
299 add_action( 'wp_ajax_frm_export_xml', 'FrmXMLController::export_xml' );
300
301 // Dashboard Controller.
302 add_action( 'wp_ajax_dashboard_ajax_action', 'FrmDashboardController::ajax_requests' );
303
304 // Submit with AJAX.
305 // Trigger before process_entry.
306 add_action( 'wp_loaded', 'FrmEntriesAJAXSubmitController::ajax_create', 5 );
307
308 // Track the flows usage data.
309 add_action( 'wp_ajax_frm_track_flows', 'FrmUsageController::ajax_track_flows' );
310
311 // Applications.
312 add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
313
314 // Reviews.
315 add_action( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
316 add_action( 'wp_ajax_frm_small_screen_proceed', 'FrmAppController::small_screen_proceed' );
317 add_action( 'wp_ajax_frm_sale_banner_dismiss', 'FrmSalesApi::dismiss_banner' );
318
319 add_action( 'wp_ajax_frm_email_style_preview', 'FrmEmailStylesController::ajax_preview' );
320 add_action( 'wp_ajax_frm_send_test_email', 'FrmEmailStylesController::ajax_send_test_email' );
321
322 // Welcome Tour.
323 add_action( 'wp_ajax_frm_mark_checklist_step_as_completed', 'FrmWelcomeTourController::ajax_mark_checklist_step_as_completed' );
324 add_action( 'wp_ajax_frm_dismiss_welcome_tour', 'FrmWelcomeTourController::ajax_dismiss_welcome_tour' );
325 }
326
327 /**
328 * @return void
329 */
330 public static function load_form_hooks() {
331 // Fields Controller.
332 add_filter( 'frm_field_type', 'FrmFieldsController::change_type' );
333 add_action( 'frm_field_input_html', 'FrmFieldsController::input_html' );
334 add_filter( 'frm_field_value_saved', 'FrmFieldsController::check_value', 50, 3 );
335 add_filter( 'frm_field_label_seen', 'FrmFieldsController::check_label' );
336
337 // Forms Controller.
338 add_action( 'frm_form_classes', 'FrmFormsController::form_classes' );
339 add_filter( 'frm_submit_button_class', 'FrmFormsController::update_button_classes' );
340 add_filter( 'frm_back_button_class', 'FrmFormsController::update_button_classes' );
341
342 add_filter( 'frm_pre_display_form', 'FrmSubmitHelper::copy_submit_field_settings_to_form' );
343
344 // Styles Controller.
345 add_filter( 'frm_use_important_width', 'FrmStylesController::important_style', 10, 2 );
346 }
347
348 /**
349 * @return void
350 */
351 public static function load_view_hooks() {
352 // Hooks go here when a view is loaded.
353 }
354
355 /**
356 * @return void
357 */
358 public static function load_multisite_hooks() {
359 add_action( 'wpmu_upgrade_site', 'FrmAppController::network_upgrade_site' );
360
361 // Drop tables when mu site is deleted.
362 add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
363 }
364 }
365