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

331 lines 13.9 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 // Instansiate 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( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
129
130 // Addons Controller.
131 add_action( 'admin_menu', 'FrmAddonsController::menu', 100 );
132 add_filter( 'pre_set_site_transient_update_plugins', 'FrmAddonsController::check_update' );
133
134 // Entries Controller.
135 add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
136 add_filter( 'set-screen-option', 'FrmEntriesController::save_per_page', 10, 3 );
137 add_filter( 'update_user_metadata', 'FrmEntriesController::check_hidden_cols', 10, 5 );
138 add_action( 'updated_user_meta', 'FrmEntriesController::update_hidden_cols', 10, 4 );
139
140 // Form Actions Controller.
141 if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
142 add_action( 'frm_before_update_form_settings', 'FrmFormActionsController::update_settings' );
143 add_action( 'frm_add_form_style_tab_options', 'FrmFormsController::add_form_style_tab_options' );
144 }
145 add_action( 'frm_after_duplicate_form', 'FrmFormActionsController::duplicate_form_actions', 20, 3 );
146
147 // Forms Controller.
148 add_action( 'admin_menu', 'FrmFormsController::menu', 10 );
149 add_action( 'admin_head-toplevel_page_formidable', 'FrmFormsController::head' );
150 add_action( 'frm_after_field_options', 'FrmFormsController::logic_tip' );
151
152 add_filter( 'set-screen-option', 'FrmFormsController::save_per_page', 10, 3 );
153 add_action( 'admin_footer', 'FrmFormsController::insert_form_popup' );
154
155 // Elementor.
156 add_action( 'elementor/editor/footer', 'FrmElementorController::admin_init' );
157
158 add_action( 'media_buttons', 'FrmFormsController::insert_form_button' );
159 add_action( 'et_pb_admin_excluded_shortcodes', 'FrmFormsController::prevent_divi_conflict' );
160
161 // Forms Model.
162 add_action( 'frm_after_duplicate_form', 'FrmForm::after_duplicate', 10, 2 );
163
164 // Settings Controller.
165 add_action( 'admin_menu', 'FrmSettingsController::menu', 45 );
166 add_action( 'frm_before_settings', 'FrmSettingsController::license_box' );
167 add_action( 'frm_after_settings', 'FrmSettingsController::settings_cta' );
168 add_action( 'wp_ajax_frm_settings_tab', 'FrmSettingsController::load_settings_tab' );
169 add_action( 'wp_ajax_frm_page_search', 'FrmSettingsController::page_search' );
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 add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
191
192 // CAPTCHA
193 add_filter( 'frm_setup_edit_field_vars', 'FrmFieldCaptcha::update_field_name' );
194
195 // From Templates.
196 FrmFormTemplatesController::load_admin_hooks();
197
198 // Cronjob.
199 add_action( 'admin_init', 'FrmCronController::schedule_events' );
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 new FrmPluginSearch();
207 }
208
209 /**
210 * @return void
211 */
212 public static function load_ajax_hooks() {
213 add_action( 'wp_ajax_frm_install', 'FrmAppController::ajax_install' );
214 add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
215 add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
216
217 // Onboarding Wizard Controller.
218 add_action( 'wp_ajax_frm_onboarding_setup_email_step', 'FrmOnboardingWizardController::ajax_setup_email_step' );
219 add_action( 'wp_ajax_frm_onboarding_setup_usage_data', 'FrmOnboardingWizardController::setup_usage_data' );
220
221 // Addons.
222 add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
223 add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
224 add_action( 'wp_ajax_frm_activate_addon', 'FrmAddonsController::ajax_activate_addon' );
225 add_action( 'wp_ajax_frm_deactivate_addon', 'FrmAddonsController::ajax_deactivate_addon' );
226 add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
227 add_action( 'wp_ajax_frm_uninstall_addon', 'FrmAddonsController::ajax_uninstall_addon' );
228 // Plugin.
229 add_action( 'wp_ajax_frm_install_plugin', 'FrmInstallPlugin::ajax_install_plugin' );
230 add_action( 'wp_ajax_frm_check_plugin_activation', 'FrmInstallPlugin::ajax_check_plugin_activation' );
231
232 // Fields Controller.
233 add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
234 add_action( 'wp_ajax_frm_insert_field', 'FrmFieldsController::create' );
235 add_action( 'wp_ajax_frm_duplicate_field', 'FrmFieldsController::duplicate' );
236 add_action( 'wp_ajax_frm_delete_field', 'FrmFieldsController::destroy' );
237 add_action( 'wp_ajax_frm_import_options', 'FrmFieldsController::import_options' );
238
239 // Form Actions Controller.
240 add_action( 'wp_ajax_frm_add_form_action', 'FrmFormActionsController::add_form_action' );
241 add_action( 'wp_ajax_frm_form_action_fill', 'FrmFormActionsController::fill_action' );
242
243 // Forms Controller.
244 add_action( 'wp_ajax_frm_save_form', 'FrmFormsController::route' );
245 add_action( 'wp_ajax_frm_rename_form', 'FrmFormsController::rename_form' );
246 add_action( 'wp_ajax_frm_get_default_html', 'FrmFormsController::get_email_html' );
247 add_action( 'wp_ajax_frm_get_shortcode_opts', 'FrmFormsController::get_shortcode_opts' );
248 add_action( 'wp_ajax_frm_forms_preview', 'FrmFormsController::preview' );
249 add_action( 'wp_ajax_nopriv_frm_forms_preview', 'FrmFormsController::preview' );
250 add_action( 'wp_ajax_frm_forms_trash', 'FrmFormsController::ajax_trash' );
251 add_action( 'wp_ajax_frm_install_form', 'FrmFormsController::build_new_form' );
252 add_action( 'wp_ajax_frm_create_page_with_shortcode', 'FrmFormsController::create_page_with_shortcode' );
253 add_action( 'wp_ajax_get_page_dropdown', 'FrmFormsController::get_page_dropdown' );
254
255 add_action( 'wp_ajax_frm_dismiss_migrator', 'FrmFormMigratorsHelper::dismiss_migrator' );
256
257 // Form Templates Controller.
258 add_action( 'wp_ajax_frm_add_or_remove_favorite_template', 'FrmFormTemplatesController::ajax_add_or_remove_favorite' );
259 add_action( 'wp_ajax_frm_create_template', 'FrmFormTemplatesController::ajax_create_template' );
260
261 // Inbox.
262 add_action( 'wp_ajax_frm_inbox_dismiss', 'FrmInboxController::dismiss_message' );
263
264 // Settings.
265 add_action( 'wp_ajax_frm_lite_settings_upgrade', 'FrmSettingsController::settings_cta_dismiss' );
266
267 // Styles Controller.
268 add_action( 'wp_ajax_frm_settings_reset', 'FrmStylesController::reset_styling' );
269 add_action( 'wp_ajax_frm_change_styling', 'FrmStylesController::change_styling' );
270 add_action( 'wp_ajax_frmpro_load_css', 'FrmStylesController::load_css' );
271 add_action( 'wp_ajax_nopriv_frmpro_load_css', 'FrmStylesController::load_css' );
272 add_action( 'wp_ajax_frmpro_css', 'FrmStylesController::load_saved_css' );
273 add_action( 'wp_ajax_nopriv_frmpro_css', 'FrmStylesController::load_saved_css' );
274 add_action( 'wp_ajax_frm_rename_style', 'FrmStylesController::rename_style' );
275
276 // XML Controller.
277 add_action( 'wp_ajax_frm_install_template', 'FrmXMLController::install_template' );
278 add_action( 'wp_ajax_frm_entries_csv', 'FrmXMLController::csv' );
279 add_action( 'wp_ajax_nopriv_frm_entries_csv', 'FrmXMLController::csv' );
280 add_action( 'wp_ajax_frm_export_xml', 'FrmXMLController::export_xml' );
281
282 // Templates API.
283 add_action( 'wp_ajax_template_api_signup', 'FrmFormTemplateApi::signup' );
284
285 // Dashboard Controller.
286 add_action( 'wp_ajax_dashboard_ajax_action', 'FrmDashboardController::ajax_requests' );
287
288 // Submit with AJAX.
289 // Trigger before process_entry.
290 add_action( 'wp_loaded', 'FrmEntriesAJAXSubmitController::ajax_create', 5 );
291 }
292
293 /**
294 * @return void
295 */
296 public static function load_form_hooks() {
297 // Fields Controller.
298 add_filter( 'frm_field_type', 'FrmFieldsController::change_type' );
299 add_action( 'frm_field_input_html', 'FrmFieldsController::input_html' );
300 add_filter( 'frm_field_value_saved', 'FrmFieldsController::check_value', 50, 3 );
301 add_filter( 'frm_field_label_seen', 'FrmFieldsController::check_label' );
302
303 // Forms Controller.
304 add_filter( 'frm_form_classes', 'FrmFormsController::form_classes' );
305 add_filter( 'frm_submit_button_class', 'FrmFormsController::update_button_classes' );
306 add_filter( 'frm_back_button_class', 'FrmFormsController::update_button_classes' );
307
308 add_filter( 'frm_pre_display_form', 'FrmSubmitHelper::copy_submit_field_settings_to_form' );
309
310 // Styles Controller.
311 add_filter( 'frm_use_important_width', 'FrmStylesController::important_style', 10, 2 );
312 }
313
314 /**
315 * @return void
316 */
317 public static function load_view_hooks() {
318 // Hooks go here when a view is loaded.
319 }
320
321 /**
322 * @return void
323 */
324 public static function load_multisite_hooks() {
325 add_action( 'wpmu_upgrade_site', 'FrmAppController::network_upgrade_site' );
326
327 // Drop tables when mu site is deleted.
328 add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
329 }
330 }
331