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

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