PluginProbe
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor / 4.0.3
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor v4.0.3
4.0.3 4.0.2 4.0.1 4.0.0 3.16.6 3.16.5 3.16.4 3.16.3 3.16.2 3.16.1 3.16.0 3.15.9 3.9.9 3.9.5 3.9.6 3.9.7 3.9.8 1.1.7 1.1.8 1.1.9 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 341 releases
profile-builder / admin / advanced-settings / advanced-settings.php

advanced-settings.php in User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor 4.0.3, at admin/advanced-settings/advanced-settings.php

279 lines 12.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Extends the capabilites of Profile Builder by adding more settings under the Advanced Settings tab.
4 */
5
6 if ( ! defined( 'ABSPATH' ) ) exit;
7
8 if( !class_exists('WPPB_toolbox') ){
9
10 class WPPB_Advanced_Settings {
11
12 public $tabs;
13 public $tab_slugs;
14 public $advanced_settings_dir;
15 protected $active_tab = 'forms';
16
17 public function __construct() {
18
19 $this->tab_slugs = array(
20 'forms',
21 'fields',
22 'userlisting',
23 'shortcodes',
24 'admin',
25 );
26
27 $this->advanced_settings_dir = plugin_dir_path( __FILE__ );
28
29 //$this->generate_settings();
30
31 add_action( 'admin_menu', array( &$this, 'register_submenu_page' ) );
32 add_action( 'admin_enqueue_scripts', array( &$this, 'enqueue_scripts' ), 9 );
33 add_action( 'admin_init', array( &$this, 'register_settings' ) );
34
35 add_action( 'admin_init', array( $this, 'setup_tabs' ) );
36
37 $this->setup_functions();
38 }
39
40 public function setup_tabs(){
41 $this->tabs = array(
42 'forms' => __( 'Forms', 'profile-builder' ),
43 'fields' => __( 'Fields', 'profile-builder' ),
44 'userlisting' => __( 'Userlisting', 'profile-builder' ),
45 'shortcodes' => __( 'Shortcodes', 'profile-builder' ),
46 'admin' => __( 'Admin', 'profile-builder' ),
47 );
48 }
49
50 public function register_submenu_page() {
51 add_submenu_page( 'profile-builder', __( 'Advanced Settings', 'profile-builder' ), __( 'Toolbox', 'profile-builder' ), 'manage_options', 'profile-builder-toolbox-settings', array( &$this, 'submenu_page_callback' ) );
52 }
53
54 public function submenu_page_callback() {
55 reset( $this->tabs );
56
57 if ( isset( $_GET['tab'] ) && array_key_exists( sanitize_text_field( $_GET['tab'] ), $this->tabs ) )
58 $this->active_tab = sanitize_text_field( $_GET['tab'] );
59 ?>
60 <div class="wrap wppb-wrap wppb-toolbox-wrap cozmoslabs-wrap">
61
62 <h1></h1>
63 <!-- WordPress Notices are added after the h1 tag -->
64
65 <div class="cozmoslabs-page-header">
66 <div class="cozmoslabs-section-title">
67
68 <h2 class="cozmoslabs-page-title">
69 <?php esc_html_e( 'Advanced Settings', 'profile-builder'); ?>
70 <a href="https://www.cozmoslabs.com/docs/profile-builder/general-settings/advanced-settings/?utm_source=wpbackend&utm_medium=pb-documentation&utm_campaign=PBDocs" target="_blank" data-code="f223" class="wppb-docs-link dashicons dashicons-editor-help"></a>
71 </h2>
72
73 </div>
74 </div>
75
76 <?php settings_errors(); ?>
77
78 <?php wppb_generate_settings_tabs() ?>
79
80 <?php
81 if ( file_exists( $this->advanced_settings_dir . 'includes/views/view-' . $this->active_tab . '.php' ) ) {
82 include_once $this->advanced_settings_dir . 'includes/views/view-' . $this->active_tab . '.php';
83 }
84 ?>
85 </div>
86
87 <?php
88 }
89
90 private function generate_settings() {
91 add_option( 'wppb_toolbox_forms_settings',
92 array(
93 'ec-bypass' => array(),
94 'restricted-email-domains-data' => array(),
95 'restricted-email-domains-message' => __( 'The email address you are trying to register with is not allowed on this website.', 'profile-builder' ),
96 )
97 );
98
99 add_option( 'wppb_toolbox_fields_settings',
100 array(
101 'restricted-words-fields' => array(),
102 'restricted-words-data' => array(),
103 'restricted-words-message' => __( 'Your submission contains banned words.','profile-builder' ),
104 )
105 );
106
107 add_option( 'wppb_toolbox_userlisting_settings', array() );
108 add_option( 'wppb_toolbox_shortcodes_settings', array() );
109
110 if( wppb_was_addon_active_as_plugin('pd-add-on-multiple-admin-e-mails/index.php') )
111 $multiple_admin_emails = 'yes';
112 else
113 $multiple_admin_emails = '';
114
115 //admin emails comes from the old addon Multiple Admin Emails
116 $wppb_generalSettings = get_option('wppb_general_settings');
117 if( isset( $wppb_generalSettings['admin_emails'] ) )
118 $admin_emails = $wppb_generalSettings['admin_emails'];
119 else
120 $admin_emails = sanitize_email( get_option('admin_email') );
121
122
123 add_option( 'wppb_toolbox_admin_settings',
124 array(
125 'multiple-admin-emails' => $multiple_admin_emails,
126 'admin-emails' => $admin_emails
127 )
128 );
129
130 //update cases here
131
132 //this is for the migration of Multiple Admin Emails Add-on
133 $wppb_toolbox_admin_settings = get_option('wppb_toolbox_admin_settings', array() );
134 //make sure it's an array
135 if( empty($wppb_toolbox_admin_settings) || !is_array($wppb_toolbox_admin_settings) )
136 $wppb_toolbox_admin_settings = array();
137
138 if( !isset( $wppb_toolbox_admin_settings['multiple-admin-emails'] ) || !isset( $wppb_toolbox_admin_settings['admin-emails'] ) ){
139
140 if( !isset( $wppb_toolbox_admin_settings['multiple-admin-emails'] ) )
141 $wppb_toolbox_admin_settings['multiple-admin-emails'] = $multiple_admin_emails;
142
143 if( !isset( $wppb_toolbox_admin_settings['admin-emails'] ) )
144 $wppb_toolbox_admin_settings['admin-emails'] = $admin_emails;
145
146 update_option( 'wppb_toolbox_admin_settings', $wppb_toolbox_admin_settings );
147 }
148
149 //migrate Placeholder Labels Here
150 if( wppb_was_addon_active_as_plugin('pb-add-on-placeholder-labels/pbpl.php') )
151 $placeholder_labels = 'yes';
152 else
153 $placeholder_labels = '';
154
155 $wppb_toolbox_form_settings = get_option('wppb_toolbox_forms_settings');
156 if( !empty( $wppb_toolbox_form_settings ) ){
157
158 if( !isset( $wppb_toolbox_form_settings['placeholder-labels'] ) )
159 $wppb_toolbox_form_settings['placeholder-labels'] = $placeholder_labels;
160
161 update_option( 'wppb_toolbox_forms_settings', $wppb_toolbox_form_settings );
162 }
163
164 }
165
166 public function register_settings() {
167 register_setting( 'wppb_toolbox_forms_settings', 'wppb_toolbox_forms_settings', array( $this, 'sanitize_forms_settings' ) );
168 register_setting( 'wppb_toolbox_fields_settings', 'wppb_toolbox_fields_settings' );
169 register_setting( 'wppb_toolbox_userlisting_settings', 'wppb_toolbox_userlisting_settings' );
170 register_setting( 'wppb_toolbox_shortcodes_settings', 'wppb_toolbox_shortcodes_settings' );
171 register_setting( 'wppb_toolbox_admin_settings', 'wppb_toolbox_admin_settings', array( $this, 'sanitize_forms_settings' ) );
172 }
173
174 public function enqueue_scripts( $hook ) {
175 if ( $hook == 'profile-builder_page_profile-builder-toolbox-settings' ) {
176 wp_enqueue_script( 'wppb-select2', WPPB_PLUGIN_URL . 'assets/js/select2/select2.min.js', array(), PROFILE_BUILDER_VERSION );
177 wp_enqueue_script( 'wppb-select2-compat', WPPB_PLUGIN_URL . 'assets/js/select2-compat.js', array(), PROFILE_BUILDER_VERSION );
178 wp_enqueue_style( 'wppb-select2-style', WPPB_PLUGIN_URL . 'assets/css/select2/select2.min.css', array(), PROFILE_BUILDER_VERSION );
179 }
180 }
181
182
183 public function sanitize_forms_settings( $settings ) {
184
185 if ( isset( $_POST['wppb_toolbox_current_tab'] ) && array_key_exists( sanitize_text_field( $_POST['wppb_toolbox_current_tab'] ), $this->tabs ) )
186 $this->active_tab = sanitize_text_field( $_POST['wppb_toolbox_current_tab'] );
187
188 $previous_settings = get_option( 'wppb_toolbox_' . $this->active_tab . '_settings', array() );
189
190 if( !empty( $settings['restricted-email-domains-data'] ) ){
191 foreach( $settings['restricted-email-domains-data'] as $key => $email )
192 $settings['restricted-email-domains-data'][$key] = strtolower( $email );
193 }
194
195 /* Multiple Admin emails */
196 if( isset( $settings['admin-emails'] ) && !empty( $settings['admin-emails'] ) ) {
197 $invalid_email = false;
198 $invalid_email_count = 0;
199
200 $admin_emails = explode(',', $settings['admin-emails']);
201
202 foreach( $admin_emails as $key => $admin_email ) {
203 if( !is_email( trim( $admin_email ) ) ) {
204 $invalid_email = true;
205 $invalid_email_count++;
206
207 unset( $admin_emails[$key] );
208 }
209 }
210
211 if( $invalid_email ) {
212 $settings['admin-emails'] = implode(',', $admin_emails );
213
214 if( $invalid_email_count === 1 ) {
215 $invalid_email_is_are = __('is', 'profile-builder');
216 $invalid_email_has_have = __('has', 'profile-builder');
217 } else {
218 $invalid_email_is_are = __('are', 'profile-builder');
219 $invalid_email_has_have = __('have', 'profile-builder');
220 }
221
222 add_settings_error( 'wppb_toolbox_admin_settings', 'invalid-email', sprintf( __( '%1$s of the emails provided in the Admin Emails field %2$s invalid and %3$s been removed from the list', 'profile-builder' ), $invalid_email_count, $invalid_email_is_are, $invalid_email_has_have ) );
223 }
224 }
225
226 if( isset( $settings['redirect-delay-timer'] ) ){
227
228 if( $settings['redirect-delay-timer'] == '' )
229 $settings['redirect-delay-timer'] = '';
230 else
231 $settings['redirect-delay-timer'] = abs( (int)$settings['redirect-delay-timer'] );
232
233 }
234
235 if( isset( $settings['modify-permalinks-single'] ) )
236 $settings['modify-permalinks-single'] = sanitize_text_field( $settings['modify-permalinks-single'] );
237
238 if( empty( $settings['admin-emails'] ) )
239 $settings['admin-emails'] = sanitize_email( get_option('admin_email') );
240
241 if ( $this->active_tab === 'forms' && !empty( $settings['restricted-email-domains-message'] ) && function_exists( 'wppb_icl_register_string' ) ) {
242 wppb_icl_register_string( 'plugin profile-builder-pro', 'restricted_email_domains_message_translation', $settings['restricted-email-domains-message']);
243 }
244
245 $settings = apply_filters( 'wppb_advanced_settings_sanitize', $settings, $previous_settings );
246
247 return $settings;
248
249 }
250
251 private function setup_functions() {
252 foreach( $this->tab_slugs as $slug ) {
253 $settings = get_option( 'wppb_toolbox_' . $slug . '_settings', array() );
254
255 if ( is_array( $settings ) ) {
256 foreach ( $settings as $key => $value ) {
257 if ( !empty( $value ) || ( $key == 'redirect-delay-timer' && $value == 0 ) ) {
258 $path = 'includes/' . $slug . '/' . $key . '.php';
259
260 if ( file_exists( $this->advanced_settings_dir . $path ) )
261 include_once $this->advanced_settings_dir . $path;
262 }
263 }
264 }
265 }
266 }
267
268 }
269
270 function wppb_advanced_settings_init() {
271 if ( function_exists( 'wppb_return_bytes' ) ) {
272 include WPPB_PLUGIN_DIR . 'admin/advanced-settings/includes/functions.php';
273
274 new WPPB_Advanced_Settings;
275 }
276 }
277 add_action( 'plugins_loaded', 'wppb_advanced_settings_init', 14 );
278 }
279