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

315 lines 13.0 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 FrmTransLiteHooksController::load_hooks();
111 FrmStrpLiteHooksController::load_hooks();
112 }
113
114 /**
115 * @return void
116 */
117 public static function load_admin_hooks() {
118 add_action( 'admin_menu', 'FrmAppController::menu', 1 );
119 add_filter( 'admin_body_class', 'FrmAppController::add_admin_class', 999 );
120 add_action( 'admin_notices', 'FrmAppController::pro_get_started_headline' );
121 add_action( 'admin_init', 'FrmAppController::admin_init', 11 );
122 add_action( 'admin_enqueue_scripts', 'FrmAppController::admin_enqueue_scripts' );
123 add_filter( 'plugin_action_links_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'FrmAppController::settings_link' );
124 add_filter( 'admin_footer_text', 'FrmAppController::set_footer_text' );
125 add_action( 'admin_footer', 'FrmAppController::add_admin_footer_links' );
126 add_action( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
127
128 // Addons Controller.
129 add_action( 'admin_menu', 'FrmAddonsController::menu', 100 );
130 add_filter( 'pre_set_site_transient_update_plugins', 'FrmAddonsController::check_update' );
131
132 // Entries Controller.
133 add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
134 add_filter( 'set-screen-option', 'FrmEntriesController::save_per_page', 10, 3 );
135 add_filter( 'update_user_metadata', 'FrmEntriesController::check_hidden_cols', 10, 5 );
136 add_action( 'updated_user_meta', 'FrmEntriesController::update_hidden_cols', 10, 4 );
137
138 // Form Actions Controller.
139 if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
140 add_action( 'frm_before_update_form_settings', 'FrmFormActionsController::update_settings' );
141 add_action( 'frm_add_form_style_tab_options', 'FrmFormsController::add_form_style_tab_options' );
142 }
143 add_action( 'frm_after_duplicate_form', 'FrmFormActionsController::duplicate_form_actions', 20, 3 );
144
145 // Forms Controller.
146 add_action( 'admin_menu', 'FrmFormsController::menu', 10 );
147 add_action( 'admin_head-toplevel_page_formidable', 'FrmFormsController::head' );
148 add_action( 'frm_after_field_options', 'FrmFormsController::logic_tip' );
149
150 add_filter( 'set-screen-option', 'FrmFormsController::save_per_page', 10, 3 );
151 add_action( 'admin_footer', 'FrmFormsController::insert_form_popup' );
152
153 // Elementor.
154 add_action( 'elementor/editor/footer', 'FrmElementorController::admin_init' );
155
156 add_action( 'media_buttons', 'FrmFormsController::insert_form_button' );
157 add_action( 'et_pb_admin_excluded_shortcodes', 'FrmFormsController::prevent_divi_conflict' );
158
159 // Forms Model.
160 add_action( 'frm_after_duplicate_form', 'FrmForm::after_duplicate', 10, 2 );
161
162 // Inbox Controller.
163 add_action( 'admin_menu', 'FrmInboxController::menu', 50 );
164
165 // Settings Controller.
166 add_action( 'admin_menu', 'FrmSettingsController::menu', 45 );
167 add_action( 'frm_before_settings', 'FrmSettingsController::license_box' );
168 add_action( 'frm_after_settings', 'FrmSettingsController::settings_cta' );
169 add_action( 'wp_ajax_frm_settings_tab', 'FrmSettingsController::load_settings_tab' );
170 add_action( 'wp_ajax_frm_page_search', 'FrmSettingsController::page_search' );
171
172 // Styles Controller.
173 add_action( 'admin_menu', 'FrmStylesController::menu', 14 );
174 add_action( 'plugins_loaded', 'FrmStylesController::plugins_loaded' );
175 add_action( 'admin_init', 'FrmStylesController::admin_init' );
176 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.
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 add_action( 'admin_menu', 'FrmApplicationsController::menu', 14 ); // Use the same priority as styles so Applications appear directly under Styles.
188 add_action( 'admin_enqueue_scripts', 'FrmApplicationsController::dequeue_scripts', 15 );
189 add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
190
191 // CAPTCHA
192 add_filter( 'frm_setup_edit_field_vars', 'FrmFieldCaptcha::update_field_name' );
193
194 FrmTransLiteHooksController::load_admin_hooks();
195 FrmStrpLiteHooksController::load_admin_hooks();
196 FrmSMTPController::load_hooks();
197 FrmWelcomeController::load_hooks();
198 new FrmPluginSearch();
199 }
200
201 /**
202 * @return void
203 */
204 public static function load_ajax_hooks() {
205 add_action( 'wp_ajax_frm_install', 'FrmAppController::ajax_install' );
206 add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
207 add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
208
209 // Addons.
210 add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
211 add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
212 add_action( 'wp_ajax_frm_activate_addon', 'FrmAddonsController::ajax_activate_addon' );
213 add_action( 'wp_ajax_frm_connect', 'FrmAddonsController::connect_pro' );
214 add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
215
216 // Fields Controller.
217 add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
218 add_action( 'wp_ajax_frm_insert_field', 'FrmFieldsController::create' );
219 add_action( 'wp_ajax_frm_duplicate_field', 'FrmFieldsController::duplicate' );
220 add_action( 'wp_ajax_frm_delete_field', 'FrmFieldsController::destroy' );
221 add_action( 'wp_ajax_frm_import_options', 'FrmFieldsController::import_options' );
222
223 // Form Actions Controller.
224 add_action( 'wp_ajax_frm_add_form_action', 'FrmFormActionsController::add_form_action' );
225 add_action( 'wp_ajax_frm_form_action_fill', 'FrmFormActionsController::fill_action' );
226
227 // Forms Controller.
228 add_action( 'wp_ajax_frm_save_form', 'FrmFormsController::route' );
229 add_action( 'wp_ajax_frm_get_default_html', 'FrmFormsController::get_email_html' );
230 add_action( 'wp_ajax_frm_get_shortcode_opts', 'FrmFormsController::get_shortcode_opts' );
231 add_action( 'wp_ajax_frm_forms_preview', 'FrmFormsController::preview' );
232 add_action( 'wp_ajax_nopriv_frm_forms_preview', 'FrmFormsController::preview' );
233 add_action( 'wp_ajax_frm_forms_trash', 'FrmFormsController::ajax_trash' );
234 add_action( 'wp_ajax_frm_install_form', 'FrmFormsController::build_new_form' );
235 add_action( 'wp_ajax_frm_build_template', 'FrmFormsController::build_template' );
236 add_action( 'wp_ajax_frm_create_page_with_shortcode', 'FrmFormsController::create_page_with_shortcode' );
237 add_action( 'wp_ajax_get_page_dropdown', 'FrmFormsController::get_page_dropdown' );
238
239 add_action( 'wp_ajax_frm_dismiss_migrator', 'FrmFormMigratorsHelper::dismiss_migrator' );
240
241 // Inbox.
242 add_action( 'wp_ajax_frm_inbox_dismiss', 'FrmInboxController::dismiss_message' );
243
244 // Settings.
245 add_action( 'wp_ajax_frm_lite_settings_upgrade', 'FrmSettingsController::settings_cta_dismiss' );
246
247 // Styles Controller.
248 add_action( 'wp_ajax_frm_settings_reset', 'FrmStylesController::reset_styling' );
249 add_action( 'wp_ajax_frm_change_styling', 'FrmStylesController::change_styling' );
250 add_action( 'wp_ajax_frmpro_load_css', 'FrmStylesController::load_css' );
251 add_action( 'wp_ajax_nopriv_frmpro_load_css', 'FrmStylesController::load_css' );
252 add_action( 'wp_ajax_frmpro_css', 'FrmStylesController::load_saved_css' );
253 add_action( 'wp_ajax_nopriv_frmpro_css', 'FrmStylesController::load_saved_css' );
254 add_action( 'wp_ajax_frm_rename_style', 'FrmStylesController::rename_style' );
255
256 // XML Controller.
257 add_action( 'wp_ajax_frm_install_template', 'FrmXMLController::install_template' );
258 add_action( 'wp_ajax_frm_entries_csv', 'FrmXMLController::csv' );
259 add_action( 'wp_ajax_nopriv_frm_entries_csv', 'FrmXMLController::csv' );
260 add_action( 'wp_ajax_frm_export_xml', 'FrmXMLController::export_xml' );
261
262 // Templates API.
263 add_action( 'wp_ajax_template_api_signup', 'FrmFormTemplateApi::signup' );
264
265 // Submit with AJAX.
266 add_action( 'wp_loaded', 'FrmEntriesAJAXSubmitController::ajax_create', 5 ); // Trigger before process_entry.
267 }
268
269 /**
270 * @return void
271 */
272 public static function load_form_hooks() {
273 // Fields Controller.
274 add_filter( 'frm_field_type', 'FrmFieldsController::change_type' );
275 add_action( 'frm_field_input_html', 'FrmFieldsController::input_html' );
276 add_filter( 'frm_field_value_saved', 'FrmFieldsController::check_value', 50, 3 );
277 add_filter( 'frm_field_label_seen', 'FrmFieldsController::check_label' );
278
279 // Forms Controller.
280 add_filter( 'frm_form_classes', 'FrmFormsController::form_classes' );
281 add_filter( 'frm_submit_button_class', 'FrmFormsController::update_button_classes' );
282 add_filter( 'frm_back_button_class', 'FrmFormsController::update_button_classes' );
283
284 // Styles Controller.
285 add_filter( 'frm_use_important_width', 'FrmStylesController::important_style', 10, 2 );
286 }
287
288 /**
289 * @return void
290 */
291 public static function load_view_hooks() {
292 // Hooks go here when a view is loaded.
293 }
294
295 /**
296 * @return void
297 */
298 public static function load_multisite_hooks() {
299 add_action( 'wpmu_upgrade_site', 'FrmAppController::network_upgrade_site' );
300
301 // Drop tables when mu site is deleted.
302 add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
303 }
304
305 /**
306 * @deprecated 5.0.06 use FrmElementorController::register_elementor_hooks directly.
307 *
308 * @return void
309 */
310 public static function register_elementor_hooks() {
311 _deprecated_function( __FUNCTION__, '5.0.06', 'FrmElementorController::register_elementor_hooks' );
312 FrmElementorController::register_elementor_hooks();
313 }
314 }
315