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

265 lines 11.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 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 add_action( 'elementor/widgets/widgets_registered', 'FrmHooksController::register_elementor_hooks' );
97 }
98
99 public static function load_admin_hooks() {
100 add_action( 'admin_menu', 'FrmAppController::menu', 1 );
101 add_filter( 'admin_body_class', 'FrmAppController::add_admin_class', 999 );
102 add_action( 'admin_enqueue_scripts', 'FrmAppController::load_wp_admin_style' );
103 add_action( 'admin_notices', 'FrmAppController::pro_get_started_headline' );
104 add_action( 'admin_init', 'FrmAppController::admin_init', 11 );
105 add_filter( 'plugin_action_links_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'FrmAppController::settings_link' );
106 add_filter( 'admin_footer_text', 'FrmAppController::set_footer_text' );
107 add_action( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
108
109 // Addons Controller.
110 add_action( 'admin_menu', 'FrmAddonsController::menu', 100 );
111 add_filter( 'pre_set_site_transient_update_plugins', 'FrmAddonsController::check_update' );
112 add_action( 'frm_page_footer', 'FrmAppHelper::renewal_message' );
113
114 // Entries Controller.
115 add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
116 add_filter( 'set-screen-option', 'FrmEntriesController::save_per_page', 10, 3 );
117 add_filter( 'update_user_metadata', 'FrmEntriesController::check_hidden_cols', 10, 5 );
118 add_action( 'updated_user_meta', 'FrmEntriesController::update_hidden_cols', 10, 4 );
119
120 // Form Actions Controller.
121 if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
122 add_action( 'frm_before_update_form_settings', 'FrmFormActionsController::update_settings' );
123 add_action( 'frm_add_form_style_tab_options', 'FrmFormsController::add_form_style_tab_options' );
124 }
125 add_action( 'frm_after_duplicate_form', 'FrmFormActionsController::duplicate_form_actions', 20, 3 );
126
127 // Forms Controller.
128 add_action( 'admin_menu', 'FrmFormsController::menu', 10 );
129 add_action( 'admin_head-toplevel_page_formidable', 'FrmFormsController::head' );
130 add_action( 'frm_after_field_options', 'FrmFormsController::logic_tip' );
131
132 add_filter( 'set-screen-option', 'FrmFormsController::save_per_page', 10, 3 );
133 add_action( 'admin_footer', 'FrmFormsController::insert_form_popup' );
134 add_action( 'media_buttons', 'FrmFormsController::insert_form_button' );
135 add_action( 'et_pb_admin_excluded_shortcodes', 'FrmFormsController::prevent_divi_conflict' );
136
137 // Forms Model.
138 add_action( 'frm_after_duplicate_form', 'FrmForm::after_duplicate', 10, 2 );
139
140 // Inbox Controller.
141 add_action( 'admin_menu', 'FrmInboxController::menu', 50 );
142
143 // Settings Controller.
144 add_action( 'admin_menu', 'FrmSettingsController::menu', 45 );
145 add_action( 'frm_before_settings', 'FrmSettingsController::license_box' );
146 add_action( 'frm_after_settings', 'FrmSettingsController::settings_cta' );
147 add_action( 'wp_ajax_frm_settings_tab', 'FrmSettingsController::load_settings_tab' );
148 add_action( 'wp_ajax_frm_page_search', 'FrmSettingsController::page_search' );
149
150 // Styles Controller.
151 add_action( 'admin_menu', 'FrmStylesController::menu', 14 );
152 add_action( 'admin_init', 'FrmStylesController::admin_init' );
153
154 // XML Controller.
155 add_action( 'admin_menu', 'FrmXMLController::menu', 41 );
156
157 // Simple Blocks Controller.
158 add_action( 'enqueue_block_editor_assets', 'FrmSimpleBlocksController::block_editor_assets' );
159
160 add_action( 'admin_init', 'FrmUsageController::schedule_send' );
161
162 FrmSMTPController::load_hooks();
163 FrmWelcomeController::load_hooks();
164 new FrmPluginSearch();
165 }
166
167 public static function load_ajax_hooks() {
168 add_action( 'wp_ajax_frm_install', 'FrmAppController::ajax_install' );
169 add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
170 add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
171
172 // Addons.
173 add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
174 add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
175 add_action( 'wp_ajax_frm_activate_addon', 'FrmAddonsController::ajax_activate_addon' );
176 add_action( 'wp_ajax_frm_connect', 'FrmAddonsController::connect_pro' );
177 add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
178
179 // Fields Controller.
180 add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
181 add_action( 'wp_ajax_frm_insert_field', 'FrmFieldsController::create' );
182 add_action( 'wp_ajax_frm_duplicate_field', 'FrmFieldsController::duplicate' );
183 add_action( 'wp_ajax_frm_delete_field', 'FrmFieldsController::destroy' );
184 add_action( 'wp_ajax_frm_import_options', 'FrmFieldsController::import_options' );
185
186 // Form Actions Controller.
187 add_action( 'wp_ajax_frm_add_form_action', 'FrmFormActionsController::add_form_action' );
188 add_action( 'wp_ajax_frm_form_action_fill', 'FrmFormActionsController::fill_action' );
189
190 // Forms Controller.
191 add_action( 'wp_ajax_frm_save_form', 'FrmFormsController::route' );
192 add_action( 'wp_ajax_frm_get_default_html', 'FrmFormsController::get_email_html' );
193 add_action( 'wp_ajax_frm_get_shortcode_opts', 'FrmFormsController::get_shortcode_opts' );
194 add_action( 'wp_ajax_frm_forms_preview', 'FrmFormsController::preview' );
195 add_action( 'wp_ajax_nopriv_frm_forms_preview', 'FrmFormsController::preview' );
196 add_action( 'wp_ajax_frm_forms_trash', 'FrmFormsController::ajax_trash' );
197 add_action( 'wp_ajax_frm_install_form', 'FrmFormsController::build_new_form' );
198 add_action( 'wp_ajax_frm_build_template', 'FrmFormsController::build_template' );
199
200 add_action( 'wp_ajax_frm_dismiss_migrator', 'FrmFormMigratorsHelper::dismiss_migrator' );
201
202 // Inbox.
203 add_action( 'wp_ajax_frm_inbox_dismiss', 'FrmInboxController::dismiss_message' );
204
205 // Settings.
206 add_action( 'wp_ajax_frm_lite_settings_upgrade', 'FrmSettingsController::settings_cta_dismiss' );
207
208 // Styles Controller.
209 add_action( 'wp_ajax_frm_settings_reset', 'FrmStylesController::reset_styling' );
210 add_action( 'wp_ajax_frm_change_styling', 'FrmStylesController::change_styling' );
211 add_action( 'wp_ajax_frmpro_load_css', 'FrmStylesController::load_css' );
212 add_action( 'wp_ajax_nopriv_frmpro_load_css', 'FrmStylesController::load_css' );
213 add_action( 'wp_ajax_frmpro_css', 'FrmStylesController::load_saved_css' );
214 add_action( 'wp_ajax_nopriv_frmpro_css', 'FrmStylesController::load_saved_css' );
215
216 // XML Controller.
217 add_action( 'wp_ajax_frm_install_template', 'FrmXMLController::install_template' );
218 add_action( 'wp_ajax_frm_entries_csv', 'FrmXMLController::csv' );
219 add_action( 'wp_ajax_nopriv_frm_entries_csv', 'FrmXMLController::csv' );
220 add_action( 'wp_ajax_frm_export_xml', 'FrmXMLController::export_xml' );
221
222 // Templates API.
223 add_action( 'wp_ajax_template_api_signup', 'FrmFormTemplateApi::signup' );
224 }
225
226 public static function load_form_hooks() {
227 // Fields Controller.
228 add_filter( 'frm_field_type', 'FrmFieldsController::change_type' );
229 add_action( 'frm_field_input_html', 'FrmFieldsController::input_html' );
230 add_filter( 'frm_field_value_saved', 'FrmFieldsController::check_value', 50, 3 );
231 add_filter( 'frm_field_label_seen', 'FrmFieldsController::check_label' );
232
233 // Forms Controller.
234 add_filter( 'frm_form_classes', 'FrmFormsController::form_classes' );
235
236 // Styles Controller.
237 add_filter( 'frm_use_important_width', 'FrmStylesController::important_style', 10, 2 );
238 }
239
240 public static function load_view_hooks() {
241 // Hooks go here when a view is loaded.
242 }
243
244 public static function load_multisite_hooks() {
245 add_action( 'wpmu_upgrade_site', 'FrmAppController::network_upgrade_site' );
246
247 // Drop tables when mu site is deleted.
248 add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
249 }
250
251 public static function register_elementor_hooks() {
252 require_once FrmAppHelper::plugin_path() . '/classes/widgets/FrmElementorWidget.php';
253 \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new \FrmElementorWidget() );
254
255 if ( is_admin() ) {
256 add_action(
257 'elementor/editor/after_enqueue_styles',
258 function() {
259 wp_enqueue_style( 'font_icons', FrmAppHelper::plugin_url() . '/css/font_icons.css', array(), FrmAppHelper::plugin_version() );
260 }
261 );
262 }
263 }
264 }
265