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

333 lines 13.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 // Summary emails.
111 add_action( 'frm_daily_event', 'FrmEmailSummaryController::maybe_send_emails' );
112
113 FrmTransLiteHooksController::load_hooks();
114 FrmStrpLiteHooksController::load_hooks();
115 }
116
117 /**
118 * @return void
119 */
120 public static function load_admin_hooks() {
121 add_action( 'admin_menu', 'FrmAppController::menu', 1 );
122 add_filter( 'admin_body_class', 'FrmAppController::add_admin_class', 999 );
123 add_action( 'admin_notices', 'FrmAppController::pro_get_started_headline' );
124 add_action( 'admin_init', 'FrmAppController::admin_init', 11 );
125 add_action( 'admin_enqueue_scripts', 'FrmAppController::admin_enqueue_scripts' );
126 add_filter( 'plugin_action_links_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'FrmAppController::settings_link' );
127 add_filter( 'admin_footer_text', 'FrmAppController::set_footer_text' );
128 add_action( 'admin_footer', 'FrmAppController::add_admin_footer_links' );
129 add_action( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
130
131 // Addons Controller.
132 add_action( 'admin_menu', 'FrmAddonsController::menu', 100 );
133 add_filter( 'pre_set_site_transient_update_plugins', 'FrmAddonsController::check_update' );
134
135 // Entries Controller.
136 add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
137 add_filter( 'set-screen-option', 'FrmEntriesController::save_per_page', 10, 3 );
138 add_filter( 'update_user_metadata', 'FrmEntriesController::check_hidden_cols', 10, 5 );
139 add_action( 'updated_user_meta', 'FrmEntriesController::update_hidden_cols', 10, 4 );
140
141 // Form Actions Controller.
142 if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
143 add_action( 'frm_before_update_form_settings', 'FrmFormActionsController::update_settings' );
144 add_action( 'frm_add_form_style_tab_options', 'FrmFormsController::add_form_style_tab_options' );
145 }
146 add_action( 'frm_after_duplicate_form', 'FrmFormActionsController::duplicate_form_actions', 20, 3 );
147
148 // Forms Controller.
149 add_action( 'admin_menu', 'FrmFormsController::menu', 10 );
150 add_action( 'admin_head-toplevel_page_formidable', 'FrmFormsController::head' );
151 add_action( 'frm_after_field_options', 'FrmFormsController::logic_tip' );
152
153 add_filter( 'set-screen-option', 'FrmFormsController::save_per_page', 10, 3 );
154 add_action( 'admin_footer', 'FrmFormsController::insert_form_popup' );
155
156 // Elementor.
157 add_action( 'elementor/editor/footer', 'FrmElementorController::admin_init' );
158
159 add_action( 'media_buttons', 'FrmFormsController::insert_form_button' );
160 add_action( 'et_pb_admin_excluded_shortcodes', 'FrmFormsController::prevent_divi_conflict' );
161
162 // Forms Model.
163 add_action( 'frm_after_duplicate_form', 'FrmForm::after_duplicate', 10, 2 );
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 // Use 11 so it happens after add_action( 'wp_default_styles', 'wp_default_styles' ); where edit.css is added.
177 add_action( 'wp_default_styles', 'FrmStylesController::disable_conflicting_wp_admin_css', 11 );
178
179 // XML Controller.
180 add_action( 'admin_menu', 'FrmXMLController::menu', 41 );
181
182 // Simple Blocks Controller.
183 add_action( 'enqueue_block_editor_assets', 'FrmSimpleBlocksController::block_editor_assets' );
184
185 add_action( 'admin_init', 'FrmUsageController::schedule_send' );
186
187 // Applications Controller.
188 // Use the same priority as styles so Applications appear directly under Styles.
189 add_action( 'admin_menu', 'FrmApplicationsController::menu', 14 );
190 add_action( 'admin_enqueue_scripts', 'FrmApplicationsController::dequeue_scripts', 15 );
191 add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
192
193 // CAPTCHA
194 add_filter( 'frm_setup_edit_field_vars', 'FrmFieldCaptcha::update_field_name' );
195
196 // From Templates.
197 FrmFormTemplatesController::load_admin_hooks();
198
199 // Cronjob.
200 add_action( 'admin_init', 'FrmCronController::schedule_events' );
201
202 FrmDashboardController::load_admin_hooks();
203 FrmTransLiteHooksController::load_admin_hooks();
204 FrmStrpLiteHooksController::load_admin_hooks();
205 FrmSMTPController::load_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 // Addons.
218 add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
219 add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
220 add_action( 'wp_ajax_frm_activate_addon', 'FrmAddonsController::ajax_activate_addon' );
221 add_action( 'wp_ajax_frm_deactivate_addon', 'FrmAddonsController::ajax_deactivate_addon' );
222 add_action( 'wp_ajax_frm_connect', 'FrmAddonsController::connect_pro' );
223 add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
224 add_action( 'wp_ajax_frm_uninstall_addon', 'FrmAddonsController::ajax_uninstall_addon' );
225
226 // Fields Controller.
227 add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
228 add_action( 'wp_ajax_frm_insert_field', 'FrmFieldsController::create' );
229 add_action( 'wp_ajax_frm_duplicate_field', 'FrmFieldsController::duplicate' );
230 add_action( 'wp_ajax_frm_delete_field', 'FrmFieldsController::destroy' );
231 add_action( 'wp_ajax_frm_import_options', 'FrmFieldsController::import_options' );
232
233 // Form Actions Controller.
234 add_action( 'wp_ajax_frm_add_form_action', 'FrmFormActionsController::add_form_action' );
235 add_action( 'wp_ajax_frm_form_action_fill', 'FrmFormActionsController::fill_action' );
236
237 // Forms Controller.
238 add_action( 'wp_ajax_frm_save_form', 'FrmFormsController::route' );
239 add_action( 'wp_ajax_frm_rename_form', 'FrmFormsController::rename_form' );
240 add_action( 'wp_ajax_frm_get_default_html', 'FrmFormsController::get_email_html' );
241 add_action( 'wp_ajax_frm_get_shortcode_opts', 'FrmFormsController::get_shortcode_opts' );
242 add_action( 'wp_ajax_frm_forms_preview', 'FrmFormsController::preview' );
243 add_action( 'wp_ajax_nopriv_frm_forms_preview', 'FrmFormsController::preview' );
244 add_action( 'wp_ajax_frm_forms_trash', 'FrmFormsController::ajax_trash' );
245 add_action( 'wp_ajax_frm_install_form', 'FrmFormsController::build_new_form' );
246 add_action( 'wp_ajax_frm_create_page_with_shortcode', 'FrmFormsController::create_page_with_shortcode' );
247 add_action( 'wp_ajax_get_page_dropdown', 'FrmFormsController::get_page_dropdown' );
248
249 add_action( 'wp_ajax_frm_dismiss_migrator', 'FrmFormMigratorsHelper::dismiss_migrator' );
250
251 // Form Templates Controller.
252 add_action( 'wp_ajax_frm_add_or_remove_favorite_template', 'FrmFormTemplatesController::ajax_add_or_remove_favorite' );
253 add_action( 'wp_ajax_frm_create_template', 'FrmFormTemplatesController::ajax_create_template' );
254
255 // Inbox.
256 add_action( 'wp_ajax_frm_inbox_dismiss', 'FrmInboxController::dismiss_message' );
257
258 // Settings.
259 add_action( 'wp_ajax_frm_lite_settings_upgrade', 'FrmSettingsController::settings_cta_dismiss' );
260
261 // Styles Controller.
262 add_action( 'wp_ajax_frm_settings_reset', 'FrmStylesController::reset_styling' );
263 add_action( 'wp_ajax_frm_change_styling', 'FrmStylesController::change_styling' );
264 add_action( 'wp_ajax_frmpro_load_css', 'FrmStylesController::load_css' );
265 add_action( 'wp_ajax_nopriv_frmpro_load_css', 'FrmStylesController::load_css' );
266 add_action( 'wp_ajax_frmpro_css', 'FrmStylesController::load_saved_css' );
267 add_action( 'wp_ajax_nopriv_frmpro_css', 'FrmStylesController::load_saved_css' );
268 add_action( 'wp_ajax_frm_rename_style', 'FrmStylesController::rename_style' );
269
270 // XML Controller.
271 add_action( 'wp_ajax_frm_install_template', 'FrmXMLController::install_template' );
272 add_action( 'wp_ajax_frm_entries_csv', 'FrmXMLController::csv' );
273 add_action( 'wp_ajax_nopriv_frm_entries_csv', 'FrmXMLController::csv' );
274 add_action( 'wp_ajax_frm_export_xml', 'FrmXMLController::export_xml' );
275
276 // Templates API.
277 add_action( 'wp_ajax_template_api_signup', 'FrmFormTemplateApi::signup' );
278
279 // Dashboard Controller.
280 add_action( 'wp_ajax_dashboard_ajax_action', 'FrmDashboardController::ajax_requests' );
281
282 // Submit with AJAX.
283 // Trigger before process_entry.
284 add_action( 'wp_loaded', 'FrmEntriesAJAXSubmitController::ajax_create', 5 );
285 }
286
287 /**
288 * @return void
289 */
290 public static function load_form_hooks() {
291 // Fields Controller.
292 add_filter( 'frm_field_type', 'FrmFieldsController::change_type' );
293 add_action( 'frm_field_input_html', 'FrmFieldsController::input_html' );
294 add_filter( 'frm_field_value_saved', 'FrmFieldsController::check_value', 50, 3 );
295 add_filter( 'frm_field_label_seen', 'FrmFieldsController::check_label' );
296
297 // Forms Controller.
298 add_filter( 'frm_form_classes', 'FrmFormsController::form_classes' );
299 add_filter( 'frm_submit_button_class', 'FrmFormsController::update_button_classes' );
300 add_filter( 'frm_back_button_class', 'FrmFormsController::update_button_classes' );
301
302 // Styles Controller.
303 add_filter( 'frm_use_important_width', 'FrmStylesController::important_style', 10, 2 );
304 }
305
306 /**
307 * @return void
308 */
309 public static function load_view_hooks() {
310 // Hooks go here when a view is loaded.
311 }
312
313 /**
314 * @return void
315 */
316 public static function load_multisite_hooks() {
317 add_action( 'wpmu_upgrade_site', 'FrmAppController::network_upgrade_site' );
318
319 // Drop tables when mu site is deleted.
320 add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
321 }
322
323 /**
324 * @deprecated 5.0.06 use FrmElementorController::register_elementor_hooks directly.
325 *
326 * @return void
327 */
328 public static function register_elementor_hooks() {
329 _deprecated_function( __FUNCTION__, '5.0.06', 'FrmElementorController::register_elementor_hooks' );
330 FrmElementorController::register_elementor_hooks();
331 }
332 }
333