PluginProbe
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor / 3.9.8
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor v3.9.8
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 3.9.8, at admin/advanced-settings/advanced-settings.php

245 lines 10.7 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 $advanced_settings_dir;
14 protected $active_tab = 'forms';
15
16 public function __construct() {
17
18 $this->tabs = array(
19 'forms' => __( 'Forms', 'profile-builder' ),
20 'fields' => __( 'Fields', 'profile-builder' ),
21 'userlisting' => __( 'Userlisting', 'profile-builder' ),
22 'shortcodes' => __( 'Shortcodes', 'profile-builder' ),
23 'admin' => __( 'Admin', 'profile-builder' ),
24 );
25
26 $this->advanced_settings_dir = plugin_dir_path( __FILE__ );
27
28 $this->generate_settings();
29
30 add_action( 'admin_menu', array( &$this, 'register_submenu_page' ) );
31 add_action( 'admin_enqueue_scripts', array( &$this, 'enqueue_scripts' ), 9 );
32 add_action( 'admin_init', array( &$this, 'register_settings' ) );
33
34 $this->setup_functions();
35 }
36
37 public function register_submenu_page() {
38 add_submenu_page( 'profile-builder', __( 'Advanced Settings', 'profile-builder' ), __( 'Toolbox', 'profile-builder' ), 'manage_options', 'profile-builder-toolbox-settings', array( &$this, 'submenu_page_callback' ) );
39 }
40
41 public function submenu_page_callback() {
42 reset( $this->tabs );
43
44 if ( isset( $_GET['tab'] ) && array_key_exists( sanitize_text_field( $_GET['tab'] ), $this->tabs) )
45 $this->active_tab = sanitize_text_field( $_GET['tab'] );
46 ?>
47 <div class="wrap wppb-wrap wppb-toolbox-wrap">
48 <h2>
49 <?php esc_html_e( 'Advanced Settings', 'profile-builder'); ?>
50 <a href="https://www.cozmoslabs.com/docs/profile-builder-2/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>
51 </h2>
52
53 <?php settings_errors(); ?>
54
55 <?php wppb_generate_settings_tabs() ?>
56
57 <?php
58 if ( file_exists( $this->advanced_settings_dir . 'includes/views/view-' . $this->active_tab . '.php' ) ) {
59 include_once $this->advanced_settings_dir . 'includes/views/view-' . $this->active_tab . '.php';
60 }
61 ?>
62 </div>
63
64 <?php
65 }
66
67 private function generate_settings() {
68 add_option( 'wppb_toolbox_forms_settings',
69 array(
70 'ec-bypass' => array(),
71 'restricted-email-domains-data' => array(),
72 'restricted-email-domains-message' => __( 'The email address you are trying to register with is not allowed on this website.', 'profile-builder' ),
73 )
74 );
75
76 add_option( 'wppb_toolbox_fields_settings',
77 array(
78 'restricted-words-fields' => array(),
79 'restricted-words-data' => array(),
80 'restricted-words-message' => __( 'Your submission contains banned words.','profile-builder' ),
81 )
82 );
83
84 add_option( 'wppb_toolbox_userlisting_settings', array() );
85 add_option( 'wppb_toolbox_shortcodes_settings', array() );
86
87 if( wppb_was_addon_active_as_plugin('pd-add-on-multiple-admin-e-mails/index.php') )
88 $multiple_admin_emails = 'yes';
89 else
90 $multiple_admin_emails = '';
91
92 //admin emails comes from the old addon Multiple Admin Emails
93 $wppb_generalSettings = get_option('wppb_general_settings');
94 if( isset( $wppb_generalSettings['admin_emails'] ) )
95 $admin_emails = $wppb_generalSettings['admin_emails'];
96 else
97 $admin_emails = sanitize_email( get_option('admin_email') );
98
99
100 add_option( 'wppb_toolbox_admin_settings',
101 array(
102 'multiple-admin-emails' => $multiple_admin_emails,
103 'admin-emails' => $admin_emails
104 )
105 );
106
107 //update cases here
108
109 //this is for the migration of Multiple Admin Emails Add-on
110 $wppb_toolbox_admin_settings = get_option('wppb_toolbox_admin_settings', array() );
111 //make sure it's an array
112 if( empty($wppb_toolbox_admin_settings) || !is_array($wppb_toolbox_admin_settings) )
113 $wppb_toolbox_admin_settings = array();
114
115 if( !isset( $wppb_toolbox_admin_settings['multiple-admin-emails'] ) || !isset( $wppb_toolbox_admin_settings['admin-emails'] ) ){
116
117 if( !isset( $wppb_toolbox_admin_settings['multiple-admin-emails'] ) )
118 $wppb_toolbox_admin_settings['multiple-admin-emails'] = $multiple_admin_emails;
119
120 if( !isset( $wppb_toolbox_admin_settings['admin-emails'] ) )
121 $wppb_toolbox_admin_settings['admin-emails'] = $admin_emails;
122
123 update_option( 'wppb_toolbox_admin_settings', $wppb_toolbox_admin_settings );
124 }
125
126 //migrate Placeholder Labels Here
127 if( wppb_was_addon_active_as_plugin('pb-add-on-placeholder-labels/pbpl.php') )
128 $placeholder_labels = 'yes';
129 else
130 $placeholder_labels = '';
131
132 $wppb_toolbox_form_settings = get_option('wppb_toolbox_forms_settings');
133 if( !empty( $wppb_toolbox_form_settings ) ){
134
135 if( !isset( $wppb_toolbox_form_settings['placeholder-labels'] ) )
136 $wppb_toolbox_form_settings['placeholder-labels'] = $placeholder_labels;
137
138 update_option( 'wppb_toolbox_forms_settings', $wppb_toolbox_form_settings );
139 }
140
141 }
142
143 public function register_settings() {
144 register_setting( 'wppb_toolbox_forms_settings', 'wppb_toolbox_forms_settings', array( $this, 'sanitize_forms_settings' ) );
145 register_setting( 'wppb_toolbox_fields_settings', 'wppb_toolbox_fields_settings' );
146 register_setting( 'wppb_toolbox_userlisting_settings', 'wppb_toolbox_userlisting_settings' );
147 register_setting( 'wppb_toolbox_shortcodes_settings', 'wppb_toolbox_shortcodes_settings' );
148 register_setting( 'wppb_toolbox_admin_settings', 'wppb_toolbox_admin_settings', array( $this, 'sanitize_forms_settings' ) );
149 }
150
151 public function enqueue_scripts( $hook ) {
152 if ( $hook == 'profile-builder_page_profile-builder-toolbox-settings' ) {
153 wp_enqueue_script( 'wppb-select2', WPPB_PLUGIN_URL . 'assets/js/select2/select2.min.js', array(), PROFILE_BUILDER_VERSION );
154 wp_enqueue_script( 'wppb-select2-compat', WPPB_PLUGIN_URL . 'assets/js/select2-compat.js', array(), PROFILE_BUILDER_VERSION );
155 wp_enqueue_style( 'wppb-select2-style', WPPB_PLUGIN_URL . 'assets/css/select2/select2.min.css', array(), PROFILE_BUILDER_VERSION );
156 }
157 }
158
159
160 public function sanitize_forms_settings( $settings ) {
161
162 if( !empty( $settings['restricted-email-domains-data'] ) ){
163 foreach( $settings['restricted-email-domains-data'] as $key => $email )
164 $settings['restricted-email-domains-data'][$key] = strtolower( $email );
165 }
166
167 /* Multiple Admin emails */
168 if( isset( $settings['admin-emails'] ) && !empty( $settings['admin-emails'] ) ) {
169 $invalid_email = false;
170 $invalid_email_count = 0;
171
172 $admin_emails = explode(',', $settings['admin-emails']);
173
174 foreach( $admin_emails as $key => $admin_email ) {
175 if( !is_email( trim( $admin_email ) ) ) {
176 $invalid_email = true;
177 $invalid_email_count++;
178
179 unset( $admin_emails[$key] );
180 }
181 }
182
183 if( $invalid_email ) {
184 $settings['admin-emails'] = implode(',', $admin_emails );
185
186 if( $invalid_email_count === 1 ) {
187 $invalid_email_is_are = __('is', 'profile-builder');
188 $invalid_email_has_have = __('has', 'profile-builder');
189 } else {
190 $invalid_email_is_are = __('are', 'profile-builder');
191 $invalid_email_has_have = __('have', 'profile-builder');
192 }
193
194 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 ) );
195 }
196 }
197
198 if( isset( $settings['redirect-delay-timer'] ) ){
199
200 if( $settings['redirect-delay-timer'] == '' )
201 $settings['redirect-delay-timer'] = '';
202 else
203 $settings['redirect-delay-timer'] = abs( (int)$settings['redirect-delay-timer'] );
204
205 }
206
207 if( isset( $settings['modify-permalinks-single'] ) )
208 $settings['modify-permalinks-single'] = sanitize_text_field( $settings['modify-permalinks-single'] );
209
210 if( empty( $settings['admin-emails'] ) )
211 $settings['admin-emails'] = sanitize_email( get_option('admin_email') );
212
213 return $settings;
214
215 }
216
217 private function setup_functions() {
218 foreach( $this->tabs as $slug => $label ) {
219 $settings = get_option( 'wppb_toolbox_' . $slug . '_settings', array() );
220
221 if ( is_array( $settings ) ) {
222 foreach ( $settings as $key => $value ) {
223 if ( !empty( $value ) || ( $key == 'redirect-delay-timer' && $value == 0 ) ) {
224 $path = 'includes/' . $slug . '/' . $key . '.php';
225
226 if ( file_exists( $this->advanced_settings_dir . $path ) )
227 include_once $this->advanced_settings_dir . $path;
228 }
229 }
230 }
231 }
232 }
233
234 }
235
236 function wppb_advanced_settings_init() {
237 if ( function_exists( 'wppb_return_bytes' ) ) {
238 include WPPB_PLUGIN_DIR . 'admin/advanced-settings/includes/functions.php';
239
240 new WPPB_Advanced_Settings;
241 }
242 }
243 add_action( 'plugins_loaded', 'wppb_advanced_settings_init', 14 );
244 }
245