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

309 lines 12.7 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 /**
53 * @return void
54 */
55 public static function trigger_load_form_hooks() {
56 self::trigger_load_hook( 'load_form_hooks' );
57 }
58
59 /**
60 * @return void
61 */
62 public static function load_hooks() {
63 add_action( 'rest_api_init', 'FrmAppController::create_rest_routes', 0 );
64 add_action( 'plugins_loaded', 'FrmAppController::load_lang' );
65 add_filter( 'widget_text', 'do_shortcode' );
66
67 // Entries controller.
68 add_action( 'wp_loaded', 'FrmEntriesController::process_entry', 10, 0 );
69 add_action( 'frm_after_entry_processed', 'FrmEntriesController::delete_entry_after_save', 100 );
70
71 // Form Actions Controller.
72 add_action( 'init', 'FrmFormActionsController::register_post_types', 1 );
73 add_action( 'frm_after_create_entry', 'FrmFormActionsController::trigger_create_actions', 20, 3 );
74
75 // Forms Controller.
76 add_action( 'widgets_init', 'FrmFormsController::register_widgets' );
77 add_action( 'init', 'FrmFormsController::front_head' );
78 add_filter( 'frm_content', 'FrmFormsController::filter_content', 10, 3 );
79 add_filter( 'frm_replace_content_shortcodes', 'FrmFormsController::replace_content_shortcodes', 20, 3 );
80 add_action( 'admin_bar_init', 'FrmFormsController::admin_bar_css' );
81 add_action( 'wp_footer', 'FrmFormsController::footer_js', 1, 0 );
82
83 add_action( 'wp_scheduled_delete', 'FrmForm::scheduled_delete' );
84
85 // Form Shortcodes.
86 add_shortcode( 'formidable', 'FrmFormsController::get_form_shortcode' );
87
88 // Styles Controller.
89 add_action( 'init', 'FrmStylesController::register_post_types', 0 );
90 add_filter( 'frm_get_style_opts', 'FrmStylesController::get_style_opts' );
91 add_filter( 'frm_add_form_style_class', 'FrmStylesController::get_form_style_class', 10, 2 );
92 add_filter( 'frm_show_entry_styles', 'FrmStylesController::show_entry_styles' );
93
94 // Simple Blocks Controller.
95 add_action( 'init', 'FrmSimpleBlocksController::register_simple_form_block' );
96
97 add_filter( 'cron_schedules', 'FrmUsageController::add_schedules' );
98 add_action( 'formidable_send_usage', 'FrmUsageController::send_snapshot' );
99
100 /**
101 * Make name field work with View.
102 * FrmProContent::replace_single_shortcode() applies this filter like 'frm_keep_' . $field->type . '_value_array'
103 */
104 add_filter( 'frm_keep_name_value_array', '__return_true' );
105
106 // Elementor.
107 add_action( 'elementor/widgets/register', 'FrmElementorController::register_elementor_hooks' );
108 add_filter( 'frm_fields_in_form_builder', 'FrmFormsController::update_form_builder_fields', 10, 2 );
109 }
110
111 /**
112 * @return void
113 */
114 public static function load_admin_hooks() {
115 add_action( 'admin_menu', 'FrmAppController::menu', 1 );
116 add_filter( 'admin_body_class', 'FrmAppController::add_admin_class', 999 );
117 add_action( 'admin_notices', 'FrmAppController::pro_get_started_headline' );
118 add_action( 'admin_init', 'FrmAppController::admin_init', 11 );
119 add_action( 'admin_enqueue_scripts', 'FrmAppController::admin_enqueue_scripts' );
120 add_filter( 'plugin_action_links_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'FrmAppController::settings_link' );
121 add_filter( 'admin_footer_text', 'FrmAppController::set_footer_text' );
122 add_action( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
123
124 // Addons Controller.
125 add_action( 'admin_menu', 'FrmAddonsController::menu', 100 );
126 add_filter( 'pre_set_site_transient_update_plugins', 'FrmAddonsController::check_update' );
127
128 // Entries Controller.
129 add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
130 add_filter( 'set-screen-option', 'FrmEntriesController::save_per_page', 10, 3 );
131 add_filter( 'update_user_metadata', 'FrmEntriesController::check_hidden_cols', 10, 5 );
132 add_action( 'updated_user_meta', 'FrmEntriesController::update_hidden_cols', 10, 4 );
133
134 // Form Actions Controller.
135 if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
136 add_action( 'frm_before_update_form_settings', 'FrmFormActionsController::update_settings' );
137 add_action( 'frm_add_form_style_tab_options', 'FrmFormsController::add_form_style_tab_options' );
138 }
139 add_action( 'frm_after_duplicate_form', 'FrmFormActionsController::duplicate_form_actions', 20, 3 );
140
141 // Forms Controller.
142 add_action( 'admin_menu', 'FrmFormsController::menu', 10 );
143 add_action( 'admin_head-toplevel_page_formidable', 'FrmFormsController::head' );
144 add_action( 'frm_after_field_options', 'FrmFormsController::logic_tip' );
145
146 add_filter( 'set-screen-option', 'FrmFormsController::save_per_page', 10, 3 );
147 add_action( 'admin_footer', 'FrmFormsController::insert_form_popup' );
148
149 // Elementor.
150 add_action( 'elementor/editor/footer', 'FrmElementorController::admin_init' );
151
152 add_action( 'media_buttons', 'FrmFormsController::insert_form_button' );
153 add_action( 'et_pb_admin_excluded_shortcodes', 'FrmFormsController::prevent_divi_conflict' );
154
155 // Forms Model.
156 add_action( 'frm_after_duplicate_form', 'FrmForm::after_duplicate', 10, 2 );
157
158 // Inbox Controller.
159 add_action( 'admin_menu', 'FrmInboxController::menu', 50 );
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 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.
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 add_action( 'admin_menu', 'FrmApplicationsController::menu', 14 ); // Use the same priority as styles so Applications appear directly under Styles.
184 add_action( 'admin_enqueue_scripts', 'FrmApplicationsController::dequeue_scripts', 15 );
185 add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
186
187 // CAPTCHA
188 add_filter( 'frm_setup_edit_field_vars', 'FrmFieldCaptcha::update_field_name' );
189
190 FrmSMTPController::load_hooks();
191 FrmWelcomeController::load_hooks();
192 new FrmPluginSearch();
193 }
194
195 /**
196 * @return void
197 */
198 public static function load_ajax_hooks() {
199 add_action( 'wp_ajax_frm_install', 'FrmAppController::ajax_install' );
200 add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
201 add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
202
203 // Addons.
204 add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
205 add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
206 add_action( 'wp_ajax_frm_activate_addon', 'FrmAddonsController::ajax_activate_addon' );
207 add_action( 'wp_ajax_frm_connect', 'FrmAddonsController::connect_pro' );
208 add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
209
210 // Fields Controller.
211 add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
212 add_action( 'wp_ajax_frm_insert_field', 'FrmFieldsController::create' );
213 add_action( 'wp_ajax_frm_duplicate_field', 'FrmFieldsController::duplicate' );
214 add_action( 'wp_ajax_frm_delete_field', 'FrmFieldsController::destroy' );
215 add_action( 'wp_ajax_frm_import_options', 'FrmFieldsController::import_options' );
216
217 // Form Actions Controller.
218 add_action( 'wp_ajax_frm_add_form_action', 'FrmFormActionsController::add_form_action' );
219 add_action( 'wp_ajax_frm_form_action_fill', 'FrmFormActionsController::fill_action' );
220
221 // Forms Controller.
222 add_action( 'wp_ajax_frm_save_form', 'FrmFormsController::route' );
223 add_action( 'wp_ajax_frm_get_default_html', 'FrmFormsController::get_email_html' );
224 add_action( 'wp_ajax_frm_get_shortcode_opts', 'FrmFormsController::get_shortcode_opts' );
225 add_action( 'wp_ajax_frm_forms_preview', 'FrmFormsController::preview' );
226 add_action( 'wp_ajax_nopriv_frm_forms_preview', 'FrmFormsController::preview' );
227 add_action( 'wp_ajax_frm_forms_trash', 'FrmFormsController::ajax_trash' );
228 add_action( 'wp_ajax_frm_install_form', 'FrmFormsController::build_new_form' );
229 add_action( 'wp_ajax_frm_build_template', 'FrmFormsController::build_template' );
230 add_action( 'wp_ajax_frm_create_page_with_shortcode', 'FrmFormsController::create_page_with_shortcode' );
231 add_action( 'wp_ajax_get_page_dropdown', 'FrmFormsController::get_page_dropdown' );
232
233 add_action( 'wp_ajax_frm_dismiss_migrator', 'FrmFormMigratorsHelper::dismiss_migrator' );
234
235 // Inbox.
236 add_action( 'wp_ajax_frm_inbox_dismiss', 'FrmInboxController::dismiss_message' );
237
238 // Settings.
239 add_action( 'wp_ajax_frm_lite_settings_upgrade', 'FrmSettingsController::settings_cta_dismiss' );
240
241 // Styles Controller.
242 add_action( 'wp_ajax_frm_settings_reset', 'FrmStylesController::reset_styling' );
243 add_action( 'wp_ajax_frm_change_styling', 'FrmStylesController::change_styling' );
244 add_action( 'wp_ajax_frmpro_load_css', 'FrmStylesController::load_css' );
245 add_action( 'wp_ajax_nopriv_frmpro_load_css', 'FrmStylesController::load_css' );
246 add_action( 'wp_ajax_frmpro_css', 'FrmStylesController::load_saved_css' );
247 add_action( 'wp_ajax_nopriv_frmpro_css', 'FrmStylesController::load_saved_css' );
248 add_action( 'wp_ajax_frm_rename_style', 'FrmStylesController::rename_style' );
249
250 // XML Controller.
251 add_action( 'wp_ajax_frm_install_template', 'FrmXMLController::install_template' );
252 add_action( 'wp_ajax_frm_entries_csv', 'FrmXMLController::csv' );
253 add_action( 'wp_ajax_nopriv_frm_entries_csv', 'FrmXMLController::csv' );
254 add_action( 'wp_ajax_frm_export_xml', 'FrmXMLController::export_xml' );
255
256 // Templates API.
257 add_action( 'wp_ajax_template_api_signup', 'FrmFormTemplateApi::signup' );
258
259 // Submit with AJAX.
260 add_action( 'wp_loaded', 'FrmEntriesAJAXSubmitController::ajax_create', 5 ); // Trigger before process_entry.
261 }
262
263 /**
264 * @return void
265 */
266 public static function load_form_hooks() {
267 // Fields Controller.
268 add_filter( 'frm_field_type', 'FrmFieldsController::change_type' );
269 add_action( 'frm_field_input_html', 'FrmFieldsController::input_html' );
270 add_filter( 'frm_field_value_saved', 'FrmFieldsController::check_value', 50, 3 );
271 add_filter( 'frm_field_label_seen', 'FrmFieldsController::check_label' );
272
273 // Forms Controller.
274 add_filter( 'frm_form_classes', 'FrmFormsController::form_classes' );
275 add_filter( 'frm_submit_button_class', 'FrmFormsController::update_button_classes' );
276 add_filter( 'frm_back_button_class', 'FrmFormsController::update_button_classes' );
277
278 // Styles Controller.
279 add_filter( 'frm_use_important_width', 'FrmStylesController::important_style', 10, 2 );
280 }
281
282 /**
283 * @return void
284 */
285 public static function load_view_hooks() {
286 // Hooks go here when a view is loaded.
287 }
288
289 /**
290 * @return void
291 */
292 public static function load_multisite_hooks() {
293 add_action( 'wpmu_upgrade_site', 'FrmAppController::network_upgrade_site' );
294
295 // Drop tables when mu site is deleted.
296 add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
297 }
298
299 /**
300 * @deprecated 5.0.06 use FrmElementorController::register_elementor_hooks directly.
301 *
302 * @return void
303 */
304 public static function register_elementor_hooks() {
305 _deprecated_function( __FUNCTION__, '5.0.06', 'FrmElementorController::register_elementor_hooks' );
306 FrmElementorController::register_elementor_hooks();
307 }
308 }
309