PluginProbe
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor / 3.9.9
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor v3.9.9
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 / features / upgrades / upgrades-functions.php

upgrades-functions.php in User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor 3.9.9, at features/upgrades/upgrades-functions.php

696 lines 34.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
4 /**
5 * Function that adds backwards compatibility starting from v1.3.15 for the email customizer
6 *
7 * @since v.1.3.15
8 *
9 * @return void
10 */
11 function wppb_pro_v1_3_15(){
12 $email_customizer_array = get_option( 'emailCustomizer', 'not_found' );
13
14 if ( $email_customizer_array != 'not_found' ){
15 $new_email_customizer_array = array();
16
17 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'from', 'reply_to' );
18 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup1Option2', 'default_registration_email_subject' );
19 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup1Option3', 'default_registration_email_content' );
20 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup3Option2', 'registration_w_admin_approval_email_subject' );
21 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup3Option3', 'registration_w_admin_approval_email_content' );
22 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup4Option2', 'admin_approval_aproved_status_email_subject' );
23 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup4Option3', 'admin_approval_aproved_status_email_content' );
24 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup2Option2', 'registration_w_email_confirmation_email_subject' );
25 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup2Option3', 'registration_w_email_confirmation_email_content' );
26 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup4Option6', 'admin_approval_unaproved_status_email_subject' );
27 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'settingsGroup4Option7', 'admin_approval_unaproved_status_email_content' );
28 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'admin_settingsGroup1Option2', 'admin_default_registration_email_subject' );
29 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'admin_settingsGroup1Option3', 'admin_default_registration_email_content' );
30 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'admin_settingsGroup3Option2', 'admin_registration_w_admin_approval_email_subject' );
31 $new_email_customizer_array = wppb_copy_old_content( $email_customizer_array, $new_email_customizer_array, 'admin_settingsGroup3Option3', 'admin_registration_w_admin_approval_email_content' );
32
33 update_option( 'emailCustomizer', $new_email_customizer_array + $email_customizer_array );
34 }
35 }
36
37 function wppb_copy_old_content ( $email_customizer_array, $new_email_customizer_array, $old_index, $new_index ){
38 if ( isset( $email_customizer_array[$old_index] ) ){
39 $new_email_customizer_array[$new_index] = $email_customizer_array[$old_index];
40 unset( $email_customizer_array[$old_index] );
41 }
42
43 return $new_email_customizer_array;
44 }
45
46 /**
47 * Function that adds backwards compatibility version 1.3.13 to version 1.3.14: we need to copy all data from item_options_values, and create the item_option_labels index for the checkbox, radio and select extra-fields, to reflect the front-end changes
48 *
49 * @since v.1.3.13
50 *
51 * @return void
52 */
53 function wppb_pro_hobbyist_v1_3_13(){
54 $custom_fields = get_option( 'wppb_custom_fields','not_found' );
55
56 if ( $custom_fields != 'not_found' ){
57 foreach ( $custom_fields as $key => $value ){
58 if ( ( $value['item_type'] == 'checkbox' ) || ( $value['item_type'] == 'radio' ) || ( $value['item_type'] == 'select' ) ){
59 if ( isset( $custom_fields[$key]['item_option_values'] ) ){
60 $custom_fields[$key]['item_option_labels'] = $custom_fields[$key]['item_option_values'];
61 unset( $custom_fields[$key]['item_option_values'] );
62 }
63
64 }else
65 unset( $custom_fields[$key]['item_option_values'] );
66 }
67
68 update_option( 'wppb_custom_fields', $custom_fields );
69 }
70 }
71
72
73 /**
74 * Function that checks if there is at least one EP and/or R form. In the execution timeline this function runs faster than the wppb_prepopulate_fields function
75 *
76 * @since v.2.0
77 *
78 * @return void
79 */
80 function wppb_pro_hobbyist_free_v2_0(){
81 $wppb_manage_fields = get_option( 'wppb_manage_fields', 'not_found' );
82 $backed_up_manage_fields = array();
83
84 // part that handles the manage fields
85 if ( $wppb_manage_fields == 'not_found' ){
86
87 $old_default_fields = get_option( 'wppb_default_settings', 'not_found' );
88
89 if ( $old_default_fields != 'not_found' ){
90 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Name (Heading)', '', 'No' );
91
92 if ( $old_default_fields['username'] == 'show' )
93 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Username', '', ucfirst( trim( $old_default_fields['usernameRequired'] ) ), __( 'The usernames cannot be changed.', 'profile-builder' ) );
94
95 if ( $old_default_fields['firstname'] == 'show' )
96 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - First Name', 'first_name', ucfirst( trim( $old_default_fields['firstnameRequired'] ) ) );
97
98 if ( $old_default_fields['lastname'] == 'show' )
99 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Last Name', 'last_name', ucfirst( trim( $old_default_fields['lastnameRequired'] ) ) );
100
101 if ( $old_default_fields['nickname'] == 'show' )
102 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Nickname', 'nickname', ucfirst( trim( $old_default_fields['nicknameRequired'] ) ) );
103
104 if ( $old_default_fields['dispname'] == 'show' )
105 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Display name publicly as', '', ucfirst( trim( $old_default_fields['dispnameRequired'] ) ) );
106
107 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Contact Info (Heading)', '', 'No' );
108
109 if ( $old_default_fields['email'] == 'show' )
110 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - E-mail', '', ucfirst( trim( $old_default_fields['emailRequired'] ) ), '(required)' );
111
112 if ( $old_default_fields['website'] == 'show' )
113 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Website', '', ucfirst( trim( $old_default_fields['websiteRequired'] ) ) );
114
115 if ( $old_default_fields['aim'] == 'show' )
116 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - AIM', 'aim', ucfirst( trim( $old_default_fields['aimRequired'] ) ) );
117
118 if ( $old_default_fields['yahoo'] == 'show' )
119 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Yahoo IM', 'yim', ucfirst( trim( $old_default_fields['yahooRequired'] ) ) );
120
121 if ( $old_default_fields['jabber'] == 'show' )
122 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Jabber / Google Talk', 'jabber', ucfirst( trim( $old_default_fields['jabberRequired'] ) ) );
123
124 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - About Yourself (Heading)', '', 'No' );
125
126 if ( $old_default_fields['bio'] == 'show' )
127 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Biographical Info', 'description', ucfirst( trim( $old_default_fields['bioRequired'] ) ) );
128
129 if ( $old_default_fields['password'] == 'show' ){
130 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Password', '', ucfirst( trim( $old_default_fields['passwordRequired'] ) ) );
131 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Repeat Password', '', ucfirst( trim( $old_default_fields['passwordRequired'] ) ) );
132 }
133
134 }else{
135 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Name (Heading)', '', 'No' );
136 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Username', '', 'Yes', __( 'The usernames cannot be changed.', 'profile-builder' ) );
137 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - First Name', 'first_name', 'No' );
138 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Last Name', 'last_name', 'No' );
139 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Nickname', 'nickname', 'No' );
140 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Display name publicly as', '', 'No' );
141 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Contact Info (Heading)', '', 'No' );
142 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - E-mail', '', 'Yes', '(required)' );
143 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Website', '', 'No' );
144
145 // Default contact methods were removed in WP 3.6. A filter dictates contact methods.
146 if ( apply_filters( 'wppb_remove_default_contact_methods', get_site_option( 'initial_db_version' ) < 23588 ) ){
147 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - AIM', 'aim', 'No' );
148 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Yahoo IM', 'yim', 'No' );
149 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Jabber / Google Talk', 'jabber', 'No' );
150 }
151
152 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - About Yourself (Heading)', '', 'No' );
153 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Biographical Info', 'description', 'No' );
154 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Password', '', 'Yes' );
155 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'Default - Repeat Password', '', 'Yes' );
156 }
157
158 $old_custom_fields = get_option( 'wppb_custom_fields', 'not_found' );
159 if( $old_custom_fields != 'not_found' && count( $old_custom_fields ) != 0 ){
160 $existing_ids = array();
161 foreach ( $old_custom_fields as $key => $value ) {
162 $local_array = array();
163
164 if( isset( $value['id'] ) )
165 $existing_ids[] = $value['id'];
166
167 /* id will be set up at a later point */
168 $local_array['id'] = ( isset( $value['id'] ) ? trim( $value['id'] ) : '' );
169 $local_array['meta-name'] = ( isset( $value['item_metaName'] ) ? trim( $value['item_metaName'] ) : '' );
170 $local_array['field-title'] = ( isset( $value['item_title'] ) ? trim( $value['item_title'] ) : '' );
171 $local_array['description'] = ( isset( $value['item_desc'] ) ? $value['item_desc'] : '' );
172 $local_array['required'] = 'No';
173 $local_array['overwrite-existing'] = 'No';
174 $local_array['row-count'] = '5';
175 $local_array['allowed-image-extensions'] = '.*';
176 $local_array['allowed-upload-extensions'] = '.*';
177 $local_array['avatar-size'] = '100';
178 $local_array['date-format'] = 'mm/dd/yy';
179 $local_array['terms-of-agreement'] = '';
180 $local_array['options'] = '';
181 $local_array['labels'] = '';
182 $local_array['recaptcha-type'] = 'v2';
183 $local_array['public-key'] = '';
184 $local_array['private-key'] = '';
185 $local_array['default-value'] = '';
186 $local_array['default-option'] = '';
187 $local_array['default-options'] = '';
188 $local_array['default-content'] = '';
189
190 switch ( $value['item_type' ] ){
191 case "heading":{
192 $local_array['field'] = 'Heading';
193 $local_array['meta-name'] = '';
194 break;
195 }
196 case "input":{
197 $local_array['field'] = 'Input';
198 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
199 break;
200 }
201 case "hiddenInput":{
202 $local_array['field'] = 'Input (Hidden)';
203 $local_array['default-value'] = ( isset( $value['item_options'] ) ? trim( $value['item_options'] ) : '' );
204 break;
205 }
206 case "checkbox":{
207 $local_array['field'] = 'Checkbox';
208 $local_array['options'] = ( isset( $value['item_options'] ) ? trim( $value['item_options'] ) : '' );
209 $local_array['labels'] = ( isset( $value['item_option_labels'] ) ? trim( $value['item_option_labels'] ) : '' );
210 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
211 break;
212 }
213 case "agreeToTerms":{
214 $local_array['field'] = 'Checkbox (Terms and Conditions)';
215 $local_array['required'] = ucfirst( trim( "Yes" ) );
216 break;
217 }
218 case "radio":{
219 $local_array['field'] = 'Radio';
220 $local_array['options'] = ( isset( $value['item_options'] ) ? trim( $value['item_options'] ) : '' );
221 $local_array['labels'] = ( isset( $value['item_option_labels'] ) ? trim( $value['item_option_labels'] ) : '' );
222 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
223 break;
224 }
225 case "select":{
226 $local_array['field'] = 'Select';
227 $local_array['options'] = ( isset( $value['item_options'] ) ? trim( $value['item_options'] ) : '' );
228 $local_array['labels'] = ( isset( $value['item_option_labels'] ) ? trim( $value['item_option_labels'] ) : '' );
229 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
230 break;
231 }
232 case "countrySelect":{
233 $local_array['field'] = 'Select (Country)';
234 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
235 break;
236 }
237 case "timeZone":{
238 $local_array['field'] = 'Select (Timezone)';
239 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
240 break;
241 }
242 case "datepicker":{
243 $local_array['field'] = 'Datepicker';
244 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
245 break;
246 }
247 case "textarea":{
248 $local_array['field'] = 'Textarea';
249 $local_array['row-count'] = ( isset( $value['item_options'] ) ? trim( $value['item_options'] ) : '' );
250 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
251 break;
252 }
253 case "upload":{
254 $local_array['field'] = 'Upload';
255 $local_array['allowed-upload-extensions'] = ( isset( $value['item_options'] ) ? trim( $value['item_options'] ) : $local_array['allowed-upload-extensions'] );
256 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
257 break;
258 }
259 case "avatar":{
260 $local_array['field'] = 'Avatar';
261 $local_array['avatar-size'] = ( isset( $value['item_options'] ) ? trim( $value['item_options'] ) : $local_array['avatar-size'] );
262 $local_array['required'] = ucfirst( trim( $value['item_required'] ) );
263 break;
264 }
265 }
266
267 array_push( $backed_up_manage_fields, $local_array );
268 }
269 }
270 }
271
272
273 // part which handles the removal of the reCAPTCHA from the addon list
274 $wppb_module_settings = get_option( 'wppb_addon_settings', 'not_found' );
275 if ( $wppb_module_settings != 'not_found' ){
276 if ( isset( $wppb_module_settings['wppb_reCaptcha'] ) && ( $wppb_module_settings['wppb_reCaptcha'] == 'show' ) ){
277 $recaptcha_settings = get_option( 'reCaptchaSettings' );
278
279 if ( ( $recaptcha_settings != 'no_found' ) || ( count( $recaptcha_settings ) != 0 ) ){
280 $backed_up_manage_fields = wppb_add_existing_default_fields( $backed_up_manage_fields, 'reCAPTCHA', '', 'Yes', '', trim( $recaptcha_settings['publicKey'] ), trim( $recaptcha_settings['privateKey'] ) );
281 }
282 }
283
284 unset( $wppb_module_settings['wppb_reCaptcha'] );
285 $wppb_module_settings['wppb_multipleEditProfileForms'] = 'hide';
286 $wppb_module_settings['wppb_multipleRegistrationForms'] = 'hide';
287
288 update_option( 'wppb_module_settings', $wppb_module_settings );
289 }
290
291 /* set up start from index. it is set from the highest existing index + 1 */
292 if( !empty( $existing_ids ) ) {
293 rsort($existing_ids, SORT_NUMERIC );
294 $start_from_index = $existing_ids[0] + 1;
295 }
296 else
297 $start_from_index = 1;
298
299 /* set up ids for each field */
300 if( !empty( $backed_up_manage_fields ) ){
301 foreach( $backed_up_manage_fields as $key => $backed_up_manage_field ){
302 if( empty( $backed_up_manage_fields[$key]['id'] ) ){
303 $backed_up_manage_fields[$key]['id'] = $start_from_index;
304 $start_from_index ++;
305 }
306 }
307 }
308 add_option( 'wppb_manage_fields', $backed_up_manage_fields );
309
310
311 // part which handles the general settings select->checkbox backwards comp.
312 $wppb_generalSettings = get_option( 'wppb_general_settings', 'not_found' );
313 if ( ( $wppb_generalSettings != 'not_found' ) && ( count( $wppb_generalSettings ) > 1 ) ){
314 if ( isset( $wppb_generalSettings['extraFieldsLayout'] ) && ( $wppb_generalSettings['extraFieldsLayout'] == 'no' ) )
315 unset( $wppb_generalSettings['extraFieldsLayout'] );
316
317 else
318 $wppb_generalSettings['extraFieldsLayout'] = 'default';
319
320 update_option( 'wppb_general_settings', $wppb_generalSettings );
321 }
322 }
323
324
325 /**
326 * Function that adds backwards compatibility for the userlisting
327 *
328 * @since v.2.0
329 *
330 */
331 function wppb_pro_userlisting_compatibility_upgrade(){
332 if ( wppb_default_form_already_present( 'Userlisting', 'wppb-ul-cpt' ) )
333 return '';
334
335 $old_userlisting_settings = get_option( 'customUserListingSettings', 'not_found' );
336 if ( $old_userlisting_settings == 'not_found' )
337 $old_userlisting_settings = get_option( 'userListingSettings' );
338
339 if ( $old_userlisting_settings == 'not_found' )
340 return;
341
342 $all_userlisting = ( isset( $old_userlisting_settings['allUserlisting'] ) ? wppb_replace_merge_tags( $old_userlisting_settings['allUserlisting'], true ) : '' );
343 $single_userlisting = ( isset( $old_userlisting_settings['singleUserlisting'] ) ? wppb_replace_merge_tags( $old_userlisting_settings['singleUserlisting'] ) : '' );
344
345 if( !empty( $old_userlisting_settings['sortingNumber'] ) )
346 $number_os_users_per_page = $old_userlisting_settings['sortingNumber'];
347 else
348 $number_os_users_per_page = '5';
349
350 if( !empty( $old_userlisting_settings['sortingCriteria'] ) )
351 $default_sorting_criteria = $old_userlisting_settings['sortingCriteria'];
352 else
353 $default_sorting_criteria = 'login';
354
355 if( !empty( $old_userlisting_settings['sortingOrder'] ) )
356 $default_sorting_order = $old_userlisting_settings['sortingOrder'];
357 else
358 $default_sorting_order = 'asc';
359
360 if( !empty( $old_userlisting_settings['avatarSize'] ) )
361 $avatar_size_all = $old_userlisting_settings['avatarSize'];
362 else
363 $avatar_size_all = '40';
364
365 if( !empty( $old_userlisting_settings['avatarSize'] ) )
366 $avatar_size_single = $old_userlisting_settings['avatarSize'];
367 else
368 $avatar_size_single = '60';
369
370 $userlisting_settings = array( array( 'roles-to-display' => '*', 'number-of-userspage' => $number_os_users_per_page, 'default-sorting-criteria' => $default_sorting_criteria, 'default-sorting-order' => $default_sorting_order, 'avatar-size-all-userlisting' => $avatar_size_all, 'avatar-size-single-userlisting' => $avatar_size_single ) );
371
372 $ul_post_id = wp_insert_post( array( 'post_title' => 'Userlisting', 'post_status' => 'publish', 'post_author' => get_current_user_id(), 'post_type' => 'wppb-ul-cpt', 'post_content' => 'Default Userlisting form placeholder' ), true );
373
374 add_post_meta( $ul_post_id, 'wppb-ul-templates', $all_userlisting );
375 add_post_meta( $ul_post_id, 'wppb-single-ul-templates', $single_userlisting );
376 add_post_meta( $ul_post_id, 'wppb_ul_page_settings', $userlisting_settings );
377 }
378
379
380 /**
381 * Function that replaces the individual merge-tags in the userlisting
382 *
383 * @since v.2.0
384 *
385 * @param string $content
386 * @param boolean $all_userlisting_form
387 *
388 * @return string
389 *
390 */
391 function wppb_replace_merge_tags( $content, $all_userlisting_form = false ){
392 $content = trim( $content );
393
394 $content = wppb_old_backwards_compatibility( $content );
395
396 $content = str_replace( '%%meta_number_of_posts%%', '{{{meta_number_of_posts}}}', $content );
397 $content = str_replace( '%%extra_search_all_fields%%', '{{{extra_search_all_fields}}}', $content );
398 $content = str_replace( '%%extra_more_info_link%%', '{{{more_info}}}', $content );
399 $content = str_replace( '%%extra_while_users%%', '{{#users}}', $content );
400 $content = str_replace( '%%extra_end_while_users%%', '{{/users}}', $content );
401 $content = str_replace( '%%extra_avatar_or_gravatar%%', '{{{avatar_or_gravatar}}}', $content );
402 $content = str_replace( '%%extra_go_back_link%%', '{{{extra_go_back_link}}}', $content );
403 $content = str_replace( '%%meta_first_last_name%%', '{{meta_first_name}}{{meta_last_name}}', $content );
404 $content = str_replace( '%%sort_first_last_name%%', '{{{sort_first_name}}}', $content );
405
406 preg_match_all( '/%%([a-z0-9\_]+)%%/', $content, $matches, PREG_PATTERN_ORDER );
407 foreach ( $matches[0] as $key => $value )
408 $content = ( ( strpos( $value, 'sort_' ) !== false ) ? str_replace( $value, '{{{'.$matches[1][$key].'}}}', $content ) : str_replace( $value, '{{'.$matches[1][$key].'}}', $content ) );
409
410 if ( $all_userlisting_form )
411 $content .= '{{{pagination}}}';
412
413 return $content;
414 }
415
416
417 /**
418 * Function that replaces the individual merge-tags which existed the very first time. These consisted of %%item_title%% instead of the (then) newer %%item_meta_name%%
419 *
420 * @since v.2.0
421 *
422 * @param string $content
423 *
424 * @return string
425 *
426 */
427 function wppb_old_backwards_compatibility( $content ){
428 $wppb_custom_fields = get_option( 'wppb_custom_fields', 'not_found' );
429
430 if ( ( $wppb_custom_fields == 'not_found' ) || ( count( $wppb_custom_fields ) < 1 ) )
431 return $content;
432
433 foreach( $wppb_custom_fields as $key => $value ){
434 if ( ( isset( $value['item_type'] ) ) && ( trim( $value['item_type'] != '' ) ) )
435 if ( ( isset( $value['item_metaName'] ) ) && ( trim( $value['item_metaName'] != '' ) ) ){
436 /* TODO don't know what's supposed to be here and don't have time before launch */
437 $string = str_replace( '%%meta_'.$value['item_title'].'%%', '%%meta_'.$value['item_metaName'].'%%', $string );
438 $string = str_replace( '%%meta_description_'.$value['item_title'].'%%', '%%meta_description_'.$value['item_metaName'].'%%', $string );
439 $string = str_replace( '%%sort_'.$value['item_title'].'%%', '%%sort_'.$value['item_metaName'].'%%', $string );
440 }
441 }
442
443 return $content;
444 }
445
446
447 /**
448 * Function that checks if a default userlisting-form is already present
449 *
450 * @since v.2.0
451 *
452 * @param string $post_title
453 * @param string $post_type
454 *
455 * @return boolean
456 *
457 */
458 function wppb_default_form_already_present( $post_title, $post_type ){
459 $defaults = get_posts( array( 'posts_per_page' => -1, 'post_status' => array( 'publish' ), 'post_type' => $post_type, 'orderby' => 'post_date', 'order' => 'ASC' ) );
460 foreach ( $defaults as $default ){
461 if ( $default->post_content == 'Default '.$post_title.' form placeholder' )
462 return true;
463 }
464
465 return false;
466 }
467
468
469 /**
470 * Function that assures backwards compatibility for the email customizer
471 *
472 * @since v.2.0
473 *
474 */
475 function wppb_pro_email_customizer_compatibility_upgrade(){
476 $email_customizer_array = get_option( 'emailCustomizer', 'not_found' );
477
478 if ( $email_customizer_array != 'not_found' ){
479 wppb_replace_and_save( $email_customizer_array['from_name'], 'wppb_emailc_common_settings_from_name' );
480 wppb_replace_and_save( $email_customizer_array['reply_to'], 'wppb_emailc_common_settings_from_reply_to_email' );
481 wppb_replace_and_save( $email_customizer_array['default_registration_email_subject'], 'wppb_user_emailc_default_registration_email_subject' );
482 wppb_replace_and_save( $email_customizer_array['default_registration_email_content'], 'wppb_user_emailc_default_registration_email_content' );
483 wppb_replace_and_save( $email_customizer_array['registration_w_admin_approval_email_subject'], 'wppb_user_emailc_registration_with_admin_approval_email_subject' );
484 wppb_replace_and_save( $email_customizer_array['registration_w_admin_approval_email_content'], 'wppb_user_emailc_registration_with_admin_approval_email_content' );
485 wppb_replace_and_save( $email_customizer_array['admin_approval_aproved_status_email_subject'], 'wppb_user_emailc_admin_approval_notif_approved_email_subject' );
486 wppb_replace_and_save( $email_customizer_array['admin_approval_aproved_status_email_content'], 'wppb_user_emailc_admin_approval_notif_approved_email_content' );
487 wppb_replace_and_save( $email_customizer_array['admin_approval_unaproved_status_email_subject'], 'wppb_user_emailc_admin_approval_notif_unapproved_email_subject' );
488 wppb_replace_and_save( $email_customizer_array['admin_approval_unaproved_status_email_content'], 'wppb_user_emailc_admin_approval_notif_unapproved_email_content' );
489 wppb_replace_and_save( $email_customizer_array['registration_w_email_confirmation_email_subject'], 'wppb_user_emailc_registr_w_email_confirm_email_subject' );
490 wppb_replace_and_save( $email_customizer_array['registration_w_email_confirmation_email_content'], 'wppb_user_emailc_registr_w_email_confirm_email_content' );
491 wppb_replace_and_save( $email_customizer_array['admin_default_registration_email_subject'], 'wppb_admin_emailc_default_registration_email_subject' );
492 wppb_replace_and_save( $email_customizer_array['admin_default_registration_email_content'], 'wppb_admin_emailc_default_registration_email_content' );
493 wppb_replace_and_save( $email_customizer_array['admin_registration_w_admin_approval_email_subject'], 'wppb_admin_emailc_registration_with_admin_approval_email_subject' );
494 wppb_replace_and_save( $email_customizer_array['admin_registration_w_admin_approval_email_content'], 'wppb_admin_emailc_registration_with_admin_approval_email_content' );
495 }
496 }
497
498
499 /**
500 * Function that checks if a default userlisting-form is already present
501 *
502 * @since v.2.0
503 *
504 * @param string $old_content
505 * @param string $option_name
506 *
507 */
508 function wppb_replace_and_save( $content, $option_name ){
509 preg_match_all( '/%%([a-z0-9\_]+)%%/', $content, $matches, PREG_PATTERN_ORDER );
510
511 foreach ( $matches[0] as $key => $value )
512 $content = str_replace( $value, '{{'.$matches[1][$key].'}}', $content );
513
514 update_option( $option_name, $content );
515 }
516
517
518 /**
519 * Function that adds backwards compatibility for the default fields only
520 *
521 * @since v.2.0
522 *
523 * @param array $backed_up_manage_fields
524 * @param string $field
525 * @param string $meta_name
526 * @param string $required
527 * @param string $description
528 * @param string $recaptcha_public_key
529 * @param string $recaptcha_private_key
530 *
531 * @return array
532 */
533 function wppb_add_existing_default_fields ( $backed_up_manage_fields, $field, $meta_name, $required, $description = '', $recaptcha_public_key = '', $recaptcha_private_key = '' ){
534 if ( !is_array($backed_up_manage_fields) ){
535 $backed_up_manage_fields = empty($backed_up_manage_fields) ? array(): array($backed_up_manage_fields);
536 }
537
538 $local_array = array();
539
540 $local_array['id'] = '';
541 $local_array['field'] = $field;
542 $local_array['meta-name'] = $meta_name;
543 $local_array['field-title'] = str_replace( array( 'Default - ', ' (Heading)' ), '', $field );
544 $local_array['description'] = '';
545 $local_array['required'] = $required;
546 $local_array['overwrite-existing'] = 'No';
547 $local_array['row-count'] = '5';
548 $local_array['allowed-image-extensions'] = '.*';
549 $local_array['allowed-upload-extensions'] = '.*';
550 $local_array['avatar-size'] = '100';
551 $local_array['date-format'] = 'mm/dd/yy';
552 $local_array['terms-of-agreement'] = '';
553 $local_array['options'] = '';
554 $local_array['labels'] = '';
555 $local_array['public-key'] = $recaptcha_public_key;
556 $local_array['private-key'] = $recaptcha_private_key;
557 $local_array['default-value'] = '';
558 $local_array['default-option'] = '';
559 $local_array['default-options'] = '';
560 $local_array['default-content'] = '';
561
562 array_push( $backed_up_manage_fields, $local_array );
563
564 return $backed_up_manage_fields;
565 }
566
567
568 /**
569 * Function that assures compatibility for the old Custom Redirects settings with the new Custom Redirects module
570 *
571 * @since v.2.2.5
572 *
573 */
574 function wppb_new_custom_redirects_compatibility() {
575 $wppb_old_cr = get_option( 'customRedirectSettings', 'not_found' );
576
577 $wppb_new_cr_global = array();
578 $wppb_new_cr_wp_default = array();
579
580 if( $wppb_old_cr != 'not_found' ) {
581 // new Custom Redirect -> Global Redirects
582 if( $wppb_old_cr['afterRegister'] == 'yes' ) {
583 $wppb_new_cr_global[] = array(
584 'type' => 'after_registration',
585 'url' => $wppb_old_cr['afterRegisterTarget'],
586 'id' => 1,
587 );
588 }
589
590 if( $wppb_old_cr['afterLogin'] == 'yes' ) {
591 $wppb_new_cr_global[] = array(
592 'type' => 'after_login',
593 'url' => $wppb_old_cr['afterLoginTarget'],
594 'id' => 1,
595 );
596 }
597
598 if( $wppb_old_cr['loginRedirectLogout'] == 'yes' ) {
599 $wppb_new_cr_global[] = array(
600 'type' => 'after_logout',
601 'url' => $wppb_old_cr['loginRedirectTargetLogout'],
602 'id' => 1,
603 );
604 }
605
606 if( $wppb_old_cr['dashboardRedirect'] == 'yes' ) {
607 $wppb_new_cr_global[] = array(
608 'type' => 'dashboard_redirect',
609 'url' => $wppb_old_cr['dashboardRedirectTarget'],
610 'id' => 1,
611 );
612 }
613
614 // new Custom Redirect -> Redirect Default WordPress Forms and Pages
615 if( $wppb_old_cr['loginRedirect'] == 'yes' ) {
616 $wppb_new_cr_wp_default[] = array(
617 'type' => 'login',
618 'url' => $wppb_old_cr['loginRedirectTarget'],
619 'id' => 1,
620 );
621 }
622
623 if( $wppb_old_cr['registerRedirect'] == 'yes' ) {
624 $wppb_new_cr_wp_default[] = array(
625 'type' => 'register',
626 'url' => $wppb_old_cr['registerRedirectTarget'],
627 'id' => 1,
628 );
629 }
630
631 if( $wppb_old_cr['recoverRedirect'] == 'yes' ) {
632 $wppb_new_cr_wp_default[] = array(
633 'type' => 'lostpassword',
634 'url' => $wppb_old_cr['recoverRedirectTarget'],
635 'id' => 1,
636 );
637 }
638
639 // add new Custom Redirect database options
640 if( isset( $wppb_new_cr_global ) && ! empty( $wppb_new_cr_global ) ) {
641 update_option( 'wppb_cr_global', $wppb_new_cr_global );
642 }
643
644 if( isset( $wppb_new_cr_wp_default ) && ! empty( $wppb_new_cr_wp_default ) ) {
645 update_option( 'wppb_cr_default_wp_pages', $wppb_new_cr_wp_default );
646 }
647 }
648 }
649
650 /**
651 * Check if an addon was active as a slug before it was programmatically deactivated by us
652 * On the plugin updates, where we transitioned add-ons we save the status in an option 'wppb_old_add_ons_status'
653 * @param $slug
654 * @return false
655 */
656 function wppb_was_addon_active_as_plugin( $slug ){
657 $old_add_ons_status = get_option( 'wppb_old_add_ons_status' );
658 if( isset( $old_add_ons_status[$slug] ) )
659 return $old_add_ons_status[$slug];
660 else
661 return false;
662 }
663
664 /**
665 * Function that returns the slugs of old addons that were plugins
666 * @return string[]
667 */
668 function wppb_get_old_addons_slug_list(){
669 $old_addon_list = array(
670 'pd-add-on-multiple-admin-e-mails/index.php',
671 'pb-add-on-customization-toolbox/index.php',
672 'pb-add-on-email-confirmation-field/index.php',
673 'pb-add-on-placeholder-labels/pbpl.php',
674 'pb-add-on-gdpr-communication-preferences/pb-gdpr-communication-preferences.php',
675 'pb-add-on-labels-edit/pble.php',
676 'pb-add-on-maximum-character-length/index.php',
677 'pb-add-on-custom-css-classes-on-fields/index.php',
678 'pb-add-on-import-export/pbie.php',
679 'pb-add-on-buddypress/index.php',
680 'pb-add-on-social-connect/index.php',
681 'pb-add-on-woocommerce/index.php',
682 'pb-add-on-multi-step-forms/index.php',
683 'pb-add-on-mailchimp-integration/index.php',
684 'pb-add-on-bbpress/index.php',
685 'pb-add-on-campaign-monitor/index.php',
686 'pb-add-on-field-visibility/index.php',
687 'pb-add-on-edit-profile-approved-by-admin/index.php',
688 'pb-add-on-custom-profile-menus/index.php',
689 'pb-add-on-mailpoet-integration/index.php',
690 );
691
692 if( PROFILE_BUILDER !== 'Profile Builder Free' )
693 $old_addon_list[] = 'pb-add-on-select2/index.php';//don't disable select 2 for people who already had it in free
694
695 return $old_addon_list;
696 }