add migration for 2.7.0

This commit is contained in:
Matthias Pfefferle 2024-07-22 11:16:38 +02:00
parent e35f782a7f
commit 6cc071d270
10 changed files with 82 additions and 29 deletions

View file

@ -21,7 +21,7 @@ use function Activitypub\site_supports_blocks;
require_once __DIR__ . '/includes/compat.php';
require_once __DIR__ . '/includes/functions.php';
\define( 'ACTIVITYPUB_PLUGIN_VERSION', '2.6.1' );
\define( 'ACTIVITYPUB_PLUGIN_VERSION', '2.7.0' );
/**
* Initialize the plugin constants.

View file

@ -155,10 +155,10 @@ class Admin {
wp_enqueue_media();
wp_enqueue_script( 'activitypub-header-image' );
\load_template( ACTIVITYPUB_PLUGIN_DIR . 'templates/blog-user-settings.php' );
\load_template( ACTIVITYPUB_PLUGIN_DIR . 'templates/blog-settings.php' );
break;
case 'followers':
\load_template( ACTIVITYPUB_PLUGIN_DIR . 'templates/blog-user-followers-list.php' );
\load_template( ACTIVITYPUB_PLUGIN_DIR . 'templates/blog-followers-list.php' );
break;
case 'welcome':
default:
@ -288,8 +288,8 @@ class Admin {
// Blog-User Settings
\register_setting(
'activitypub_blog_user',
'activitypub_blog_user_description',
'activitypub_blog',
'activitypub_blog_description',
array(
'type' => 'string',
'description' => \esc_html__( 'The Description of the Blog-User', 'activitypub' ),
@ -298,8 +298,8 @@ class Admin {
)
);
\register_setting(
'activitypub_blog_user',
'activitypub_blog_user_identifier',
'activitypub_blog',
'activitypub_blog_identifier',
array(
'type' => 'string',
'description' => \esc_html__( 'The Identifier of the Blog-User', 'activitypub' ),
@ -329,8 +329,8 @@ class Admin {
if ( $user->results ) {
add_settings_error(
'activitypub_blog_user_identifier',
'activitypub_blog_user_identifier',
'activitypub_blog_identifier',
'activitypub_blog_identifier',
\esc_html__( 'You cannot use an existing author\'s name for the blog profile ID.', 'activitypub' ),
'error'
);
@ -343,7 +343,7 @@ class Admin {
)
);
\register_setting(
'activitypub_blog_user',
'activitypub_blog',
'activitypub_header_image',
array(
'type' => 'integer',
@ -362,7 +362,7 @@ class Admin {
}
public static function add_profile( $user ) {
$description = get_user_meta( $user->ID, 'activitypub_user_description', true );
$description = \get_user_option( 'activitypub_description', $user->ID );
wp_enqueue_media();
wp_enqueue_script( 'activitypub-header-image' );
@ -396,11 +396,11 @@ class Admin {
) {
return false;
}
$description = ! empty( $_POST['activitypub_user_description'] ) ? sanitize_text_field( wp_unslash( $_POST['activitypub_user_description'] ) ) : false;
$description = ! empty( $_POST['activitypub_description'] ) ? sanitize_text_field( wp_unslash( $_POST['activitypub_description'] ) ) : false;
if ( $description ) {
update_user_meta( $user_id, 'activitypub_user_description', $description );
\update_user_option( $user_id, 'activitypub_description', $description );
} else {
delete_user_meta( $user_id, 'activitypub_user_description' );
\delete_user_option( $user_id, 'activitypub_description' );
}
$header_image = ! empty( $_POST['activitypub_header_image'] ) ? sanitize_text_field( wp_unslash( $_POST['activitypub_header_image'] ) ) : false;

View file

@ -132,6 +132,9 @@ class Migration {
if ( version_compare( $version_from_db, '2.3.0', '<' ) ) {
self::migrate_from_2_2_0();
}
if ( version_compare( $version_from_db, '2.7.0', '<' ) ) {
self::migrate_from_2_6_0();
}
update_option( 'activitypub_db_version', self::get_target_version() );
@ -255,6 +258,20 @@ class Migration {
self::add_activitypub_capability();
}
/**
* Rename DB fields
*
* @return void
*/
private static function migrate_from_2_6_0() {
wp_cache_flush();
self::update_usermeta_key( 'activitypub_user_description', 'activitypub_description' );
self::update_options_key( 'activitypub_blog_user_description', 'activitypub_blog_description' );
self::update_options_key( 'activitypub_blog_user_identifier', 'activitypub_blog_identifier' );
}
/**
* Set the defaults needed for the plugin to work
*
@ -284,4 +301,40 @@ class Migration {
$user->add_cap( 'activitypub' );
}
}
/**
* Rename meta keys.
*
* @param string $old The old commentmeta key
* @param string $new The new commentmeta key
*/
private static function update_usermeta_key( $old, $new ) { // phpcs:ignore
global $wpdb;
$wpdb->update( // phpcs:ignore
$wpdb->usermeta,
array( 'meta_key' => $new ), // phpcs:ignore
array( 'meta_key' => $old ), // phpcs:ignore
array( '%s' ),
array( '%s' )
);
}
/**
* Rename option keys.
*
* @param string $old The old option key
* @param string $new The new option key
*/
private static function update_options_key( $old, $new ) { // phpcs:ignore
global $wpdb;
$wpdb->update( // phpcs:ignore
$wpdb->options,
array( 'option_name' => $new ), // phpcs:ignore
array( 'option_name' => $old ), // phpcs:ignore
array( '%s' ),
array( '%s' )
);
}
}

View file

@ -76,7 +76,7 @@ class Users {
return new Blog();
}
if ( get_option( 'activitypub_blog_user_identifier' ) === $username ) {
if ( get_option( 'activitypub_blog_identifier' ) === $username ) {
return new Blog();
}

View file

@ -132,7 +132,7 @@ class Blog extends Actor {
* @return string The User-Description.
*/
public function get_summary() {
$summary = \get_option( 'activitypub_blog_user_description', null );
$summary = \get_option( 'activitypub_blog_description', null );
if ( ! $summary ) {
$summary = \get_bloginfo( 'description' );
@ -188,7 +188,7 @@ class Blog extends Actor {
* @return string The User-Name.
*/
public function get_preferred_username() {
$username = \get_option( 'activitypub_blog_user_identifier' );
$username = \get_option( 'activitypub_blog_identifier' );
if ( $username ) {
return $username;

View file

@ -13,7 +13,7 @@
<div class="activitypub-settings activitypub-settings-page hide-if-no-js">
<form method="post" action="options.php">
<?php \settings_fields( 'activitypub_blog_user' ); ?>
<?php \settings_fields( 'activitypub_blog' ); ?>
<div class="box">
<h3><?php \esc_html_e( 'Blog-Profile', 'activitypub' ); ?></h3>
@ -94,8 +94,8 @@
<?php \esc_html_e( 'Change profile ID', 'activitypub' ); ?>
</th>
<td>
<label for="activitypub_blog_user_identifier">
<input class="blog-user-identifier" name="activitypub_blog_user_identifier" id="activitypub_blog_user_identifier" type="text" value="<?php echo esc_attr( \get_option( 'activitypub_blog_user_identifier', \Activitypub\Model\Blog::get_default_username() ) ); ?>" />
<label for="activitypub_blog_identifier">
<input class="blog-user-identifier" name="activitypub_blog_identifier" id="activitypub_blog_identifier" type="text" value="<?php echo esc_attr( \get_option( 'activitypub_blog_identifier', \Activitypub\Model\Blog::get_default_username() ) ); ?>" />
@<?php echo esc_html( \wp_parse_url( \home_url(), PHP_URL_HOST ) ); ?>
</label>
<p class="description">
@ -113,14 +113,14 @@
<?php \esc_html_e( 'Change Description', 'activitypub' ); ?>
</th>
<td>
<label for="activitypub_blog_user_description">
<label for="activitypub_blog_description">
<textarea
class="blog-user-description large-text"
rows="5"
name="activitypub_blog_user_description"
id="activitypub_blog_user_description"
name="activitypub_blog_description"
id="activitypub_blog_description"
placeholder="<?php echo esc_attr( \get_bloginfo( 'description' ) ); ?>"
><?php echo \esc_html( \get_option( 'activitypub_blog_user_description' ) ); ?></textarea>
><?php echo \esc_html( \get_option( 'activitypub_blog_description' ) ); ?></textarea>
</label>
<p class="description">
<?php \esc_html_e( 'By default the ActivityPub plugin uses the WordPress tagline as a description for the blog profile.', 'activitypub' ); ?>

View file

@ -22,12 +22,12 @@ $user = \Activitypub\Collection\Users::get_by_id( \get_current_user_id() ); ?>
<p class="description"><?php \printf( \esc_html__( 'Follow "@%s" by searching for it on Mastodon, Friendica, etc.', 'activitypub' ), \esc_html( $user->get_webfinger() ) ); ?></p>
</td>
</tr>
<tr class="activitypub-user-description-wrap">
<tr class="activitypub-description-wrap">
<th>
<label for="activitypub_user_description"><?php \esc_html_e( 'Biography', 'activitypub' ); ?></label>
<label for="activitypub_description"><?php \esc_html_e( 'Biography', 'activitypub' ); ?></label>
</th>
<td>
<textarea name="activitypub_user_description" id="activitypub_user_description" rows="5" cols="30" placeholder="<?php echo \esc_html( get_user_meta( \get_current_user_id(), 'description', true ) ); ?>"><?php echo \esc_html( $args['description'] ); ?></textarea>
<textarea name="activitypub_description" id="activitypub_description" rows="5" cols="30" placeholder="<?php echo \esc_html( get_user_meta( \get_current_user_id(), 'description', true ) ); ?>"><?php echo \esc_html( $args['description'] ); ?></textarea>
<p class="description"><?php \esc_html_e( 'If you wish to use different biographical info for the fediverse, enter your alternate bio here.', 'activitypub' ); ?></p>
</td>
</tr>

View file

@ -43,7 +43,7 @@
<?php \esc_html_e( 'This blog profile will federate all posts written on your blog, regardless of the author who posted it.', 'activitypub' ); ?>
<p>
<p>
<a href="<?php echo \esc_url_raw( \admin_url( '/options-general.php?page=activitypub&tab=settings' ) ); ?>">
<a href="<?php echo \esc_url_raw( \admin_url( '/options-general.php?page=activitypub&tab=blog-profile ' ) ); ?>">
<?php \esc_html_e( 'Customize the blog profile', 'activitypub' ); ?>
</a>
</p>

View file

@ -4,7 +4,7 @@ class Test_Activitypub_Users_Collection extends WP_UnitTestCase {
public function set_up() {
parent::set_up();
add_option( 'activitypub_blog_user_identifier', 'blog' );
add_option( 'activitypub_blog_identifier', 'blog' );
add_user_meta( 1, 'activitypub_user_identifier', 'admin' );
}
/**