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

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