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

279 lines 12.4 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 public static function trigger_load_hook( $hooks = 'load_hooks' ) {
12 $controllers = apply_filters( 'frm_load_controllers', array( 'FrmHooksController' ) );
13
14 $trigger_hooks = $hooks;
15 $hooks = (array) $hooks;
16
17 if ( 'load_hooks' == $trigger_hooks ) {
18 if ( is_admin() ) {
19 $hooks[] = 'load_admin_hooks';
20 if ( defined( 'DOING_AJAX' ) ) {
21 $hooks[] = 'load_ajax_hooks';
22 $hooks[] = 'load_form_hooks';
23 }
24 }
25
26 if ( is_multisite() ) {
27 $hooks[] = 'load_multisite_hooks';
28 }
29 } else {
30 // Make sure the hooks are only triggered once.
31 add_filter( 'frm' . str_replace( 'load', '', $trigger_hooks ) . '_loaded', '__return_true' );
32 }
33 unset( $trigger_hooks );
34
35 // Instansiate Controllers.
36 foreach ( $controllers as $c ) {
37 foreach ( $hooks as $hook ) {
38 if ( is_callable( array( $c, $hook ) ) ) {
39 call_user_func( array( $c, $hook ) );
40 }
41 unset( $hook );
42 }
43 unset( $c );
44 }
45
46 }
47
48 public static function trigger_load_form_hooks() {
49 self::trigger_load_hook( 'load_form_hooks' );
50 }
51
52 public static function load_hooks() {
53 add_action( 'rest_api_init', 'FrmAppController::create_rest_routes', 0 );
54 add_action( 'plugins_loaded', 'FrmAppController::load_lang' );
55 add_filter( 'widget_text', 'do_shortcode' );
56
57 // Entries controller.
58 add_action( 'wp_loaded', 'FrmEntriesController::process_entry', 10, 0 );
59 add_action( 'frm_after_entry_processed', 'FrmEntriesController::delete_entry_after_save', 100 );
60
61 // Form Actions Controller.
62 add_action( 'init', 'FrmFormActionsController::register_post_types', 1 );
63 add_action( 'frm_after_create_entry', 'FrmFormActionsController::trigger_create_actions', 20, 3 );
64
65 // Forms Controller.
66 add_action( 'widgets_init', 'FrmFormsController::register_widgets' );
67 add_action( 'init', 'FrmFormsController::front_head' );
68 add_filter( 'frm_content', 'FrmFormsController::filter_content', 10, 3 );
69 add_filter( 'frm_replace_content_shortcodes', 'FrmFormsController::replace_content_shortcodes', 20, 3 );
70 add_action( 'admin_bar_init', 'FrmFormsController::admin_bar_css' );
71 add_action( 'wp_footer', 'FrmFormsController::footer_js', 1, 0 );
72
73 add_action( 'wp_scheduled_delete', 'FrmForm::scheduled_delete' );
74
75 // Form Shortcodes.
76 add_shortcode( 'formidable', 'FrmFormsController::get_form_shortcode' );
77
78 // Styles Controller.
79 add_action( 'init', 'FrmStylesController::register_post_types', 0 );
80 add_filter( 'frm_get_style_opts', 'FrmStylesController::get_style_opts' );
81 add_filter( 'frm_add_form_style_class', 'FrmStylesController::get_form_style_class', 10, 2 );
82 add_filter( 'frm_show_entry_styles', 'FrmStylesController::show_entry_styles' );
83
84 // Simple Blocks Controller.
85 add_action( 'init', 'FrmSimpleBlocksController::register_simple_form_block' );
86
87 add_filter( 'cron_schedules', 'FrmUsageController::add_schedules' );
88 add_action( 'formidable_send_usage', 'FrmUsageController::send_snapshot' );
89
90 /**
91 * Make name field work with View.
92 * FrmProContent::replace_single_shortcode() applies this filter like 'frm_keep_' . $field->type . '_value_array'
93 */
94 add_filter( 'frm_keep_name_value_array', '__return_true' );
95
96 // Elementor.
97 add_action( 'elementor/widgets/register', 'FrmElementorController::register_elementor_hooks' );
98 add_filter( 'frm_fields_in_form_builder', 'FrmFormsController::update_form_builder_fields', 10, 2 );
99 }
100
101 public static function load_admin_hooks() {
102 add_action( 'admin_menu', 'FrmAppController::menu', 1 );
103 add_filter( 'admin_body_class', 'FrmAppController::add_admin_class', 999 );
104 add_action( 'admin_enqueue_scripts', 'FrmAppController::load_wp_admin_style' );
105 add_action( 'admin_notices', 'FrmAppController::pro_get_started_headline' );
106 add_action( 'admin_init', 'FrmAppController::admin_init', 11 );
107 add_filter( 'plugin_action_links_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'FrmAppController::settings_link' );
108 add_filter( 'admin_footer_text', 'FrmAppController::set_footer_text' );
109 add_action( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
110
111 // Addons Controller.
112 add_action( 'admin_menu', 'FrmAddonsController::menu', 100 );
113 add_filter( 'pre_set_site_transient_update_plugins', 'FrmAddonsController::check_update' );
114
115 // Entries Controller.
116 add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
117 add_filter( 'set-screen-option', 'FrmEntriesController::save_per_page', 10, 3 );
118 add_filter( 'update_user_metadata', 'FrmEntriesController::check_hidden_cols', 10, 5 );
119 add_action( 'updated_user_meta', 'FrmEntriesController::update_hidden_cols', 10, 4 );
120
121 // Form Actions Controller.
122 if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
123 add_action( 'frm_before_update_form_settings', 'FrmFormActionsController::update_settings' );
124 add_action( 'frm_add_form_style_tab_options', 'FrmFormsController::add_form_style_tab_options' );
125 }
126 add_action( 'frm_after_duplicate_form', 'FrmFormActionsController::duplicate_form_actions', 20, 3 );
127
128 // Forms Controller.
129 add_action( 'admin_menu', 'FrmFormsController::menu', 10 );
130 add_action( 'admin_head-toplevel_page_formidable', 'FrmFormsController::head' );
131 add_action( 'frm_after_field_options', 'FrmFormsController::logic_tip' );
132
133 add_filter( 'set-screen-option', 'FrmFormsController::save_per_page', 10, 3 );
134 add_action( 'admin_footer', 'FrmFormsController::insert_form_popup' );
135
136 // Elementor.
137 add_action( 'elementor/editor/footer', 'FrmElementorController::admin_init' );
138
139 add_action( 'media_buttons', 'FrmFormsController::insert_form_button' );
140 add_action( 'et_pb_admin_excluded_shortcodes', 'FrmFormsController::prevent_divi_conflict' );
141
142 // Forms Model.
143 add_action( 'frm_after_duplicate_form', 'FrmForm::after_duplicate', 10, 2 );
144
145 // Inbox Controller.
146 add_action( 'admin_menu', 'FrmInboxController::menu', 50 );
147
148 // Settings Controller.
149 add_action( 'admin_menu', 'FrmSettingsController::menu', 45 );
150 add_action( 'frm_before_settings', 'FrmSettingsController::license_box' );
151 add_action( 'frm_after_settings', 'FrmSettingsController::settings_cta' );
152 add_action( 'wp_ajax_frm_settings_tab', 'FrmSettingsController::load_settings_tab' );
153 add_action( 'wp_ajax_frm_page_search', 'FrmSettingsController::page_search' );
154
155 // Styles Controller.
156 add_action( 'admin_menu', 'FrmStylesController::menu', 14 );
157 add_action( 'plugins_loaded', 'FrmStylesController::plugins_loaded' );
158 add_action( 'admin_init', 'FrmStylesController::admin_init' );
159 add_action( 'wp_default_styles', 'FrmStylesController::disable_conflicting_wp_admin_css', 11 ); // Use 11 so it happens after add_action( 'wp_default_styles', 'wp_default_styles' ); where edit.css is added.
160
161 // XML Controller.
162 add_action( 'admin_menu', 'FrmXMLController::menu', 41 );
163
164 // Simple Blocks Controller.
165 add_action( 'enqueue_block_editor_assets', 'FrmSimpleBlocksController::block_editor_assets' );
166
167 add_action( 'admin_init', 'FrmUsageController::schedule_send' );
168
169 // Applications Controller.
170 add_action( 'admin_menu', 'FrmApplicationsController::menu', 14 ); // Use the same priority as styles so Applications appear directly under Styles.
171 add_action( 'admin_enqueue_scripts', 'FrmApplicationsController::dequeue_scripts', 15 );
172 add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
173
174 // CAPTCHA
175 add_filter( 'frm_setup_edit_field_vars', 'FrmFieldCaptcha::update_field_name' );
176
177 FrmSMTPController::load_hooks();
178 FrmWelcomeController::load_hooks();
179 new FrmPluginSearch();
180 }
181
182 public static function load_ajax_hooks() {
183 add_action( 'wp_ajax_frm_install', 'FrmAppController::ajax_install' );
184 add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
185 add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
186
187 // Addons.
188 add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
189 add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
190 add_action( 'wp_ajax_frm_activate_addon', 'FrmAddonsController::ajax_activate_addon' );
191 add_action( 'wp_ajax_frm_connect', 'FrmAddonsController::connect_pro' );
192 add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
193
194 // Fields Controller.
195 add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
196 add_action( 'wp_ajax_frm_insert_field', 'FrmFieldsController::create' );
197 add_action( 'wp_ajax_frm_duplicate_field', 'FrmFieldsController::duplicate' );
198 add_action( 'wp_ajax_frm_delete_field', 'FrmFieldsController::destroy' );
199 add_action( 'wp_ajax_frm_import_options', 'FrmFieldsController::import_options' );
200
201 // Form Actions Controller.
202 add_action( 'wp_ajax_frm_add_form_action', 'FrmFormActionsController::add_form_action' );
203 add_action( 'wp_ajax_frm_form_action_fill', 'FrmFormActionsController::fill_action' );
204
205 // Forms Controller.
206 add_action( 'wp_ajax_frm_save_form', 'FrmFormsController::route' );
207 add_action( 'wp_ajax_frm_get_default_html', 'FrmFormsController::get_email_html' );
208 add_action( 'wp_ajax_frm_get_shortcode_opts', 'FrmFormsController::get_shortcode_opts' );
209 add_action( 'wp_ajax_frm_forms_preview', 'FrmFormsController::preview' );
210 add_action( 'wp_ajax_nopriv_frm_forms_preview', 'FrmFormsController::preview' );
211 add_action( 'wp_ajax_frm_forms_trash', 'FrmFormsController::ajax_trash' );
212 add_action( 'wp_ajax_frm_install_form', 'FrmFormsController::build_new_form' );
213 add_action( 'wp_ajax_frm_build_template', 'FrmFormsController::build_template' );
214 add_action( 'wp_ajax_frm_create_page_with_shortcode', 'FrmFormsController::create_page_with_shortcode' );
215 add_action( 'wp_ajax_get_page_dropdown', 'FrmFormsController::get_page_dropdown' );
216
217 add_action( 'wp_ajax_frm_dismiss_migrator', 'FrmFormMigratorsHelper::dismiss_migrator' );
218
219 // Inbox.
220 add_action( 'wp_ajax_frm_inbox_dismiss', 'FrmInboxController::dismiss_message' );
221
222 // Settings.
223 add_action( 'wp_ajax_frm_lite_settings_upgrade', 'FrmSettingsController::settings_cta_dismiss' );
224
225 // Styles Controller.
226 add_action( 'wp_ajax_frm_settings_reset', 'FrmStylesController::reset_styling' );
227 add_action( 'wp_ajax_frm_change_styling', 'FrmStylesController::change_styling' );
228 add_action( 'wp_ajax_frmpro_load_css', 'FrmStylesController::load_css' );
229 add_action( 'wp_ajax_nopriv_frmpro_load_css', 'FrmStylesController::load_css' );
230 add_action( 'wp_ajax_frmpro_css', 'FrmStylesController::load_saved_css' );
231 add_action( 'wp_ajax_nopriv_frmpro_css', 'FrmStylesController::load_saved_css' );
232 add_action( 'wp_ajax_frm_rename_style', 'FrmStylesController::rename_style' );
233
234 // XML Controller.
235 add_action( 'wp_ajax_frm_install_template', 'FrmXMLController::install_template' );
236 add_action( 'wp_ajax_frm_entries_csv', 'FrmXMLController::csv' );
237 add_action( 'wp_ajax_nopriv_frm_entries_csv', 'FrmXMLController::csv' );
238 add_action( 'wp_ajax_frm_export_xml', 'FrmXMLController::export_xml' );
239
240 // Templates API.
241 add_action( 'wp_ajax_template_api_signup', 'FrmFormTemplateApi::signup' );
242 }
243
244 public static function load_form_hooks() {
245 // Fields Controller.
246 add_filter( 'frm_field_type', 'FrmFieldsController::change_type' );
247 add_action( 'frm_field_input_html', 'FrmFieldsController::input_html' );
248 add_filter( 'frm_field_value_saved', 'FrmFieldsController::check_value', 50, 3 );
249 add_filter( 'frm_field_label_seen', 'FrmFieldsController::check_label' );
250
251 // Forms Controller.
252 add_filter( 'frm_form_classes', 'FrmFormsController::form_classes' );
253 add_filter( 'frm_submit_button_class', 'FrmFormsController::update_button_classes' );
254 add_filter( 'frm_back_button_class', 'FrmFormsController::update_button_classes' );
255
256 // Styles Controller.
257 add_filter( 'frm_use_important_width', 'FrmStylesController::important_style', 10, 2 );
258 }
259
260 public static function load_view_hooks() {
261 // Hooks go here when a view is loaded.
262 }
263
264 public static function load_multisite_hooks() {
265 add_action( 'wpmu_upgrade_site', 'FrmAppController::network_upgrade_site' );
266
267 // Drop tables when mu site is deleted.
268 add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
269 }
270
271 /**
272 * @deprecated 5.0.06 use FrmElementorController::register_elementor_hooks directly.
273 */
274 public static function register_elementor_hooks() {
275 _deprecated_function( __FUNCTION__, '5.0.06', 'FrmElementorController::register_elementor_hooks' );
276 FrmElementorController::register_elementor_hooks();
277 }
278 }
279