upskill-event-manager/wordpress-dev/wordpress/wp-content/plugins/user-registration/includes/functions-ur-update.php
bengizmo d1509b3d60 feat(dev-env): implement backup-based development workflow
This commit introduces a more reliable and consistent approach to setting up
the development environment using backups:

- Add setup-from-backup.sh script for environment setup from existing backups
- Standardize script naming and organization
- Move obsolete scripts to bin/obsolete directory
- Update documentation with new workflow instructions
- Create migration guide for transitioning to new workflow
- Update Memory Bank with workflow improvements

The new workflow provides:
- More reliable environment setup
- Faster setup process
- Offline development capability
- Consistent development environments across team members

Breaking changes:
- setup-dev.sh is replaced by setup-from-backup.sh
- sync-and-setup.sh is replaced by separate scripts
- verify-with-wpcli.sh is no longer used

Migration path is documented in MIGRATION_GUIDE.md
2025-03-26 11:26:18 -03:00

403 lines
14 KiB
PHP

<?php
/**
* UserRegistration Updates
*
* Function for updating data, used by the background updater.
*
* @package UserRegistration\Functions
* @version 1.2.0
*/
defined( 'ABSPATH' ) || exit;
/**
* Update DB Version.
*/
function ur_update_100_db_version() {
UR_Install::update_db_version( '1.0.0' );
}
/**
* Update usermeta.
*/
function ur_update_120_usermeta() {
global $wpdb;
// Get usermeta.
$usermeta = $wpdb->get_results( "SELECT user_id, meta_key, meta_value FROM $wpdb->usermeta WHERE meta_key LIKE 'user_registration\_%';" );
// Update old usermeta values.
foreach ( $usermeta as $metadata ) {
$user_id = intval( $metadata->user_id );
$json_val = json_decode( $metadata->meta_value );
$explode_val = explode( '__', $metadata->meta_value );
if ( $json_val && $metadata->meta_value != $json_val ) {
update_user_meta( $user_id, $metadata->meta_key, json_decode( $metadata->meta_value ) );
} elseif ( $metadata->meta_value !== end( $explode_val ) ) {
update_user_meta( $user_id, $metadata->meta_key, trim( end( $explode_val ) ) );
}
}
// Delete old user keys from usermeta.
$wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key LIKE 'ur_%_params';" );
}
/**
* Update DB Version.
*/
function ur_update_120_db_version() {
UR_Install::update_db_version( '1.2.0' );
}
/**
* Update usermeta.
*/
function ur_update_125_usermeta() {
$users = get_users( array( 'fields' => array( 'ID' ) ) );
foreach ( $users as $user_id ) {
if ( metadata_exists( 'user', $user_id->ID, 'user_registration_user_first_name' ) ) {
$first_name = get_user_meta( $user_id->ID, 'user_registration_user_first_name', true );
update_user_meta( $user_id->ID, 'first_name', $first_name );
delete_user_meta( $user_id->ID, 'user_registration_user_first_name' );
}
if ( metadata_exists( 'user', $user_id->ID, 'user_registration_user_last_name' ) ) {
$last_name = get_user_meta( $user_id->ID, 'user_registration_user_last_name', true );
update_user_meta( $user_id->ID, 'last_name', $last_name );
delete_user_meta( $user_id->ID, 'user_registration_user_last_name' );
}
if ( metadata_exists( 'user', $user_id->ID, 'user_registration_user_description' ) ) {
$description = get_user_meta( $user_id->ID, 'user_registration_user_description', true );
update_user_meta( $user_id->ID, 'description', $description );
delete_user_meta( $user_id->ID, 'user_registration_user_description' );
}
if ( metadata_exists( 'user', $user_id->ID, 'user_registration_user_nickname' ) ) {
$nickname = get_user_meta( $user_id->ID, 'user_registration_user_nickname', true );
update_user_meta( $user_id->ID, 'nickname', $nickname );
delete_user_meta( $user_id->ID, 'user_registration_user_nickname' );
}
}
}
/**
* Update DB Version.
*/
function ur_update_125_db_version() {
UR_Install::update_db_version( '1.2.5' );
}
/**
* Update DB Version.
*/
function ur_update_130_db_version() {
UR_Install::update_db_version( '1.3.0' );
}
/**
* Update usermeta.
*/
function ur_update_130_post() {
$posts = get_posts( 'post_type=user_registration' );
foreach ( $posts as $post ) {
$post_content = isset( $post->post_content ) ? $post->post_content : '';
$post_content_array = json_decode( $post_content );
foreach ( $post_content_array as $post_content_row ) {
foreach ( $post_content_row as $post_content_grid ) {
foreach ( $post_content_grid as $field ) {
if ( isset( $field->field_key ) && isset( $field->general_setting->field_name ) ) {
switch ( $field->field_key ) {
case 'user_username':
$field->general_setting->field_name = $field->field_key = 'user_login';
break;
case 'user_password':
$field->general_setting->field_name = $field->field_key = 'user_pass';
break;
case 'user_display_name':
$field->general_setting->field_name = $field->field_key = 'display_name';
break;
case 'user_description':
$field->general_setting->field_name = $field->field_key = 'description';
break;
case 'user_first_name':
$field->general_setting->field_name = $field->field_key = 'first_name';
break;
case 'user_last_name':
$field->general_setting->field_name = $field->field_key = 'last_name';
break;
case 'user_nickname':
$field->general_setting->field_name = $field->field_key = 'nickname';
break;
}
}
}
}
$post_content = json_encode( $post_content_array );
$post->post_content = $post_content;
}
wp_update_post( $post );
}
$mailchimp_settings = get_option( 'urmc_mailchimp_settings' );
if ( $mailchimp_settings && is_array( $mailchimp_settings ) ) {
if ( isset( $mailchimp_settings['data'] ) && is_array( $mailchimp_settings['data'] ) ) {
foreach ( $mailchimp_settings['data'] as $id => $mailchimp_data ) {
if ( isset( $mailchimp_data['fields'] ) ) {
foreach ( $mailchimp_data['fields'] as $key => $field ) {
switch ( $field ) {
case 'user_username':
$mailchimp_data['fields'][ $key ] = 'user_login';
break;
$mailchimp_data['fields'][ $key ] = 'user_pass';
break;
case 'user_display_name':
$mailchimp_data['fields'][ $key ] = 'display_name';
break;
case 'user_description':
$mailchimp_data['fields'][ $key ] = 'description';
break;
case 'user_first_name':
$mailchimp_data['fields'][ $key ] = 'first_name';
break;
case 'user_last_name':
$mailchimp_data['fields'][ $key ] = 'last_name';
break;
case 'user_nickname':
$mailchimp_data['fields'][ $key ] = 'nickname';
break;
}
}
}
$mailchimp_settings['data'][ $id ] = $mailchimp_data;
}
}
update_option( 'urmc_mailchimp_settings', $mailchimp_settings );
}
}
/**
* Update DB Version.
*/
function ur_update_140_db_version() {
UR_Install::update_db_version( '1.4.0' );
}
/**
* Delete unused option.
*/
function ur_update_140_option() {
$unused_options = array(
'user_registration_general_setting_default_user_role',
'user_registration_general_setting_enable_strong_password',
'user_registration_general_setting_form_submit_label',
);
foreach ( $unused_options as $unused_option ) {
delete_option( $unused_option );
}
}
/**
* Update DB Version.
*/
function ur_update_142_db_version() {
UR_Install::update_db_version( '1.4.2' );
}
/**
* Replace option name user_registration_myaccount_edit_account_endpoint to user_registration_myaccount_change_password_endpoint.
*/
function ur_update_142_option() {
$value = get_option( 'user_registration_myaccount_edit_account_endpoint' );
update_option( 'user_registration_myaccount_change_password_endpoint', $value );
delete_option( 'user_registration_myaccount_edit_account_endpoint' );
}
/**
* Update DB Version.
*/
function ur_update_1581_db_version() {
UR_Install::update_db_version( '1.5.8.1' );
}
/**
* Update DB Version.
*/
function ur_update_160_db_version() {
UR_Install::update_db_version( '1.6.0' );
}
/**
* Replace user meta key profile_pic_id to user_registration_profile_pic_id.
*
* @since 1.4.8.1
*
* @return void.
*/
function ur_update_1581_meta_key() {
$users = get_users(
array(
'meta_key' => 'profile_pic_id',
)
);
foreach ( $users as $user ) {
$profile_picture_id = get_user_meta( $user->ID, 'profile_pic_id', true );
update_user_meta( $user->ID, 'user_registration_profile_pic_id', $profile_picture_id );
delete_user_meta( $user->ID, 'profile_pic_id' );
}
// Change ur_ prefix to user_registration_ for review notice skipped option.
$value = get_option( 'ur_review_notice_dismissed' );
update_option( 'user_registration_review_notice_dismissed', $value );
delete_option( 'ur_review_notice_dismissed' );
}
/**
* Migrate the redirect option from global settings to form-wise settings.
*
* @since 1.6.0
*
* @return void.
*/
function ur_update_160_option_migrate() {
$redirect_url = get_option( 'user_registration_general_setting_redirect_options' );
// Get all posts with user_registration post type.
$posts = get_posts( 'post_type=user_registration' );
foreach ( $posts as $post ) {
// Update global setting to all user registration posts meta.
update_post_meta( $post->ID, 'user_registration_form_setting_redirect_options', $redirect_url );
}
}
/**
* Update DB Version.
*/
function ur_update_162_db_version() {
UR_Install::update_db_version( '1.6.2' );
}
/**
* Replace user meta key profile_pic_id to user_registration_profile_pic_id.
*
* @since 1.4.8.1
*
* @return void.
*/
function ur_update_162_meta_key() {
$users = get_users(
array(
'meta_key' => 'user_registration_profile_pic_id',
)
);
foreach ( $users as $user ) {
$profile_picture_id = get_user_meta( $user->ID, 'user_registration_profile_pic_id', true );
if ( $profile_picture_id ) {
$profile_picture_url = wp_get_attachment_thumb_url( $profile_picture_id );
update_user_meta( $user->ID, 'user_registration_profile_pic_url', $profile_picture_url );
}
delete_user_meta( $user->ID, 'user_registration_profile_pic_id' );
}
// Delete Redirect options form general setting as previous version refered to do so.
delete_option( 'user_registration_general_setting_redirect_options' );
}
/**
* Set Redirect after Registration option in form settings.
* Change Integration to Captcha Option names.
*
* @return void
*/
function ur_update_30_option_migrate() {
// Get all posts with user_registration post type.
$posts = get_posts( 'post_type=user_registration' );
foreach ( $posts as $post ) {
$redirect_url = ur_get_single_post_meta( $post->ID, 'user_registration_form_setting_redirect_options', get_option( 'user_registration_general_setting_redirect_options', '' ) );
if ( ! empty( $redirect_url ) ) {
update_post_meta( $post->ID, 'user_registration_form_setting_redirect_after_registration', 'external-url' );
}
}
// Recaptcha Migrations.
$recaptcha_type = get_option( 'user_registration_integration_setting_recaptcha_version', 'v2' );
$invisible_recaptcha = get_option( 'user_registration_integration_setting_invisible_recaptcha_v2', 'no' );
$recaptcha_invisible_site_key = get_option( 'user_registration_integration_setting_recaptcha_invisible_site_key' );
$recaptcha_invisible_secret_key = get_option( 'user_registration_integration_setting_recaptcha_invisible_site_secret' );
$recaptcha_site_key = get_option( 'user_registration_integration_setting_recaptcha_site_key' );
$recaptcha_secret_key = get_option( 'user_registration_integration_setting_recaptcha_site_secret' );
$recaptcha_site_key_v3 = get_option( 'user_registration_integration_setting_recaptcha_site_key_v3' );
$recaptcha_site_secret_v3 = get_option( 'user_registration_integration_setting_recaptcha_site_secret_v3' );
$recaptcha_threshold_score_v3 = get_option( 'user_registration_integration_setting_recaptcha_threshold_score_v3' );
$site_key_hcaptcha = get_option( 'user_registration_integration_setting_recaptcha_site_key_hcaptcha' );
$site_secret_hcaptcha = get_option( 'user_registration_integration_setting_recaptcha_site_secret_hcaptcha' );
$auto_generated_pass_email = get_option( 'user_registration_enable_pro_auto_generated_password_email', true );
update_option( 'user_registration_captcha_setting_recaptcha_version', $recaptcha_type );
update_option( 'user_registration_captcha_setting_invisible_recaptcha_v2', $invisible_recaptcha );
update_option( 'user_registration_captcha_setting_recaptcha_invisible_site_key', $recaptcha_invisible_site_key );
update_option( 'user_registration_captcha_setting_recaptcha_invisible_site_secret', $recaptcha_invisible_secret_key );
update_option( 'user_registration_captcha_setting_recaptcha_site_key', $recaptcha_site_key );
update_option( 'user_registration_captcha_setting_recaptcha_site_secret', $recaptcha_secret_key );
update_option( 'user_registration_captcha_setting_recaptcha_site_key_v3', $recaptcha_site_key_v3 );
update_option( 'user_registration_captcha_setting_recaptcha_site_secret_v3', $recaptcha_site_secret_v3 );
update_option( 'user_registration_captcha_setting_recaptcha_threshold_score_v3', $recaptcha_threshold_score_v3 );
update_option( 'user_registration_captcha_setting_recaptcha_site_key_hcaptcha', $site_key_hcaptcha );
update_option( 'user_registration_captcha_setting_recaptcha_site_secret_hcaptcha', $site_secret_hcaptcha );
update_option( 'user_registration_enable_auto_generated_password_email', $auto_generated_pass_email );
delete_option( 'user_registration_integration_setting_recaptcha_version' );
delete_option( 'user_registration_integration_setting_invisible_recaptcha_v2' );
delete_option( 'user_registration_integration_setting_recaptcha_invisible_site_key' );
delete_option( 'user_registration_integration_setting_recaptcha_invisible_site_secret' );
delete_option( 'user_registration_integration_setting_recaptcha_site_key' );
delete_option( 'user_registration_integration_setting_recaptcha_site_secret' );
delete_option( 'user_registration_integration_setting_recaptcha_site_key_v3' );
delete_option( 'user_registration_integration_setting_recaptcha_site_secret_v3' );
delete_option( 'user_registration_integration_setting_recaptcha_threshold_score_v3' );
delete_option( 'user_registration_integration_setting_recaptcha_site_key_hcaptcha' );
delete_option( 'user_registration_integration_setting_recaptcha_site_secret_hcaptcha' );
delete_option( 'user_registration_enable_pro_auto_generated_password_email' );
}
/**
* Set user registration installed date option.
*
* @return void
*/
function ur_update_322_option_migrate() {
$activation_date = get_option( 'user_registration_activated', false );
update_option( 'user_registration_installation_date', $activation_date );
$days_to_validate = strtotime( $activation_date );
$days_to_validate = strtotime( '+1 day', $days_to_validate );
$days_to_validate = date_i18n( 'Y-m-d', $days_to_validate );
$current_date = date_i18n( 'Y-m-d' );
if ( $activation_date && $current_date >= $days_to_validate ) {
update_option( 'user_registration_quick_setup_completed', true );
}
}