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

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