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
403 lines
14 KiB
PHP
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 );
|
|
}
|
|
}
|