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

334 lines 14.2 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( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
129 add_action( 'current_screen', 'FrmAppController::filter_admin_notices' );
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 add_action( 'frm_add_form_style_tab_options', 'FrmFormsController::add_form_style_tab_options' );
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
149 add_filter( 'set-screen-option', 'FrmFormsController::save_per_page', 10, 3 );
150 add_action( 'admin_footer', 'FrmFormsController::insert_form_popup' );
151
152 // Elementor.
153 add_action( 'elementor/editor/footer', 'FrmElementorController::admin_init' );
154
155 add_action( 'media_buttons', 'FrmFormsController::insert_form_button' );
156 add_action( 'et_pb_admin_excluded_shortcodes', 'FrmFormsController::prevent_divi_conflict' );
157
158 // Forms Model.
159 add_action( 'frm_after_duplicate_form', 'FrmForm::after_duplicate', 10, 2 );
160
161 // Settings Controller.
162 add_action( 'admin_menu', 'FrmSettingsController::menu', 45 );
163 add_action( 'frm_before_settings', 'FrmSettingsController::license_box' );
164 add_action( 'frm_after_settings', 'FrmSettingsController::settings_cta' );
165 add_action( 'wp_ajax_frm_settings_tab', 'FrmSettingsController::load_settings_tab' );
166 add_action( 'wp_ajax_frm_page_search', 'FrmSettingsController::page_search' );
167
168 // Styles Controller.
169 add_action( 'admin_menu', 'FrmStylesController::menu', 14 );
170 add_action( 'plugins_loaded', 'FrmStylesController::plugins_loaded' );
171 add_action( 'admin_init', 'FrmStylesController::admin_init' );
172 // Use 11 so it happens after add_action( 'wp_default_styles', 'wp_default_styles' ); where edit.css is added.
173 add_action( 'wp_default_styles', 'FrmStylesController::disable_conflicting_wp_admin_css', 11 );
174
175 // XML Controller.
176 add_action( 'admin_menu', 'FrmXMLController::menu', 41 );
177
178 // Simple Blocks Controller.
179 add_action( 'enqueue_block_editor_assets', 'FrmSimpleBlocksController::block_editor_assets' );
180
181 add_action( 'admin_init', 'FrmUsageController::schedule_send' );
182
183 // Applications Controller.
184 // Use the same priority as styles so Applications appear directly under Styles.
185 add_action( 'admin_menu', 'FrmApplicationsController::menu', 14 );
186 add_action( 'admin_enqueue_scripts', 'FrmApplicationsController::dequeue_scripts', 15 );
187 add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
188
189 // CAPTCHA
190 add_filter( 'frm_setup_edit_field_vars', 'FrmFieldCaptcha::update_field_name' );
191
192 // From Templates.
193 FrmFormTemplatesController::load_admin_hooks();
194
195 // Cronjob.
196 add_action( 'admin_init', 'FrmCronController::schedule_events' );
197
198 // Deactivation feedback.
199 add_action( 'admin_enqueue_scripts', 'FrmDeactivationFeedbackController::enqueue_assets' );
200 add_action( 'admin_footer', 'FrmDeactivationFeedbackController::footer_html' );
201 add_action( 'deactivated_plugin', 'FrmDeactivationFeedbackController::set_feedback_expired_date' );
202
203 FrmDashboardController::load_admin_hooks();
204 FrmTransLiteHooksController::load_admin_hooks();
205 FrmStrpLiteHooksController::load_admin_hooks();
206 FrmSMTPController::load_hooks();
207 FrmOnboardingWizardController::load_admin_hooks();
208 FrmAddonsController::load_admin_hooks();
209 new FrmPluginSearch();
210 }
211
212 /**
213 * @return void
214 */
215 public static function load_ajax_hooks() {
216 add_action( 'wp_ajax_frm_install', 'FrmAppController::ajax_install' );
217 add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
218 add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
219
220 // Onboarding Wizard Controller.
221 add_action( 'wp_ajax_frm_onboarding_setup_email_step', 'FrmOnboardingWizardController::ajax_setup_email_step' );
222 add_action( 'wp_ajax_frm_onboarding_setup_usage_data', 'FrmOnboardingWizardController::setup_usage_data' );
223
224 // Addons.
225 add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
226 add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
227 add_action( 'wp_ajax_frm_activate_addon', 'FrmAddonsController::ajax_activate_addon' );
228 add_action( 'wp_ajax_frm_deactivate_addon', 'FrmAddonsController::ajax_deactivate_addon' );
229 add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
230 add_action( 'wp_ajax_frm_uninstall_addon', 'FrmAddonsController::ajax_uninstall_addon' );
231 // Plugin.
232 add_action( 'wp_ajax_frm_install_plugin', 'FrmInstallPlugin::ajax_install_plugin' );
233 add_action( 'wp_ajax_frm_check_plugin_activation', 'FrmInstallPlugin::ajax_check_plugin_activation' );
234
235 // Fields Controller.
236 add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
237 add_action( 'wp_ajax_frm_insert_field', 'FrmFieldsController::create' );
238 add_action( 'wp_ajax_frm_duplicate_field', 'FrmFieldsController::duplicate' );
239 add_action( 'wp_ajax_frm_delete_field', 'FrmFieldsController::destroy' );
240 add_action( 'wp_ajax_frm_import_options', 'FrmFieldsController::import_options' );
241
242 // Form Actions Controller.
243 add_action( 'wp_ajax_frm_add_form_action', 'FrmFormActionsController::add_form_action' );
244 add_action( 'wp_ajax_frm_form_action_fill', 'FrmFormActionsController::fill_action' );
245
246 // Forms Controller.
247 add_action( 'wp_ajax_frm_save_form', 'FrmFormsController::route' );
248 add_action( 'wp_ajax_frm_rename_form', 'FrmFormsController::rename_form' );
249 add_action( 'wp_ajax_frm_get_default_html', 'FrmFormsController::get_email_html' );
250 add_action( 'wp_ajax_frm_get_shortcode_opts', 'FrmFormsController::get_shortcode_opts' );
251 add_action( 'wp_ajax_frm_forms_preview', 'FrmFormsController::preview' );
252 add_action( 'wp_ajax_nopriv_frm_forms_preview', 'FrmFormsController::preview' );
253 add_action( 'wp_ajax_frm_forms_trash', 'FrmFormsController::ajax_trash' );
254 add_action( 'wp_ajax_frm_install_form', 'FrmFormsController::build_new_form' );
255 add_action( 'wp_ajax_frm_create_page_with_shortcode', 'FrmFormsController::create_page_with_shortcode' );
256 add_action( 'wp_ajax_get_page_dropdown', 'FrmFormsController::get_page_dropdown' );
257
258 add_action( 'wp_ajax_frm_dismiss_migrator', 'FrmFormMigratorsHelper::dismiss_migrator' );
259
260 // Form Templates Controller.
261 add_action( 'wp_ajax_frm_add_or_remove_favorite_template', 'FrmFormTemplatesController::ajax_add_or_remove_favorite' );
262 add_action( 'wp_ajax_frm_create_template', 'FrmFormTemplatesController::ajax_create_template' );
263
264 // Inbox.
265 add_action( 'wp_ajax_frm_inbox_dismiss', 'FrmInboxController::dismiss_message' );
266
267 // Settings.
268 add_action( 'wp_ajax_frm_lite_settings_upgrade', 'FrmSettingsController::settings_cta_dismiss' );
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
296 /**
297 * @return void
298 */
299 public static function load_form_hooks() {
300 // Fields Controller.
301 add_filter( 'frm_field_type', 'FrmFieldsController::change_type' );
302 add_action( 'frm_field_input_html', 'FrmFieldsController::input_html' );
303 add_filter( 'frm_field_value_saved', 'FrmFieldsController::check_value', 50, 3 );
304 add_filter( 'frm_field_label_seen', 'FrmFieldsController::check_label' );
305
306 // Forms Controller.
307 add_action( 'frm_form_classes', 'FrmFormsController::form_classes' );
308 add_filter( 'frm_submit_button_class', 'FrmFormsController::update_button_classes' );
309 add_filter( 'frm_back_button_class', 'FrmFormsController::update_button_classes' );
310
311 add_filter( 'frm_pre_display_form', 'FrmSubmitHelper::copy_submit_field_settings_to_form' );
312
313 // Styles Controller.
314 add_filter( 'frm_use_important_width', 'FrmStylesController::important_style', 10, 2 );
315 }
316
317 /**
318 * @return void
319 */
320 public static function load_view_hooks() {
321 // Hooks go here when a view is loaded.
322 }
323
324 /**
325 * @return void
326 */
327 public static function load_multisite_hooks() {
328 add_action( 'wpmu_upgrade_site', 'FrmAppController::network_upgrade_site' );
329
330 // Drop tables when mu site is deleted.
331 add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
332 }
333 }
334