'ID' ) ) as $user_id ) { $followers = get_user_meta( $user_id, 'activitypub_followers', true ); if ( $followers ) { foreach ( $followers as $follower ) { $meta = get_remote_metadata_by_actor( $actor ); $follower = new Follower( $actor ); if ( is_tombstone( $meta ) ) { continue; } if ( empty( $meta ) || ! is_array( $meta ) || is_wp_error( $meta ) ) { $follower->set_error( $meta ); } else { $follower->from_meta( $meta ); } $follower->upsert(); $result = wp_set_object_terms( $user_id, $follower->get_actor(), self::TAXONOMY, true ); } } } } /** * Updates the custom template to use shortcodes instead of the deprecated templates. * * @return void */ private static function migrate_from_0_16() { // Get the custom template. $old_content = \get_option( 'activitypub_custom_post_content', ACTIVITYPUB_CUSTOM_POST_CONTENT ); // If the old content exists but is a blank string, we're going to need a flag to updated it even // after setting it to the default contents. $need_update = false; // If the old contents is blank, use the defaults. if ( '' === $old_content ) { $old_content = ACTIVITYPUB_CUSTOM_POST_CONTENT; $need_update = true; } // Set the new content to be the old content. $content = $old_content; // Convert old templates to shortcodes. $content = \str_replace( '%title%', '[ap_title]', $content ); $content = \str_replace( '%excerpt%', '[ap_excerpt]', $content ); $content = \str_replace( '%content%', '[ap_content]', $content ); $content = \str_replace( '%permalink%', '[ap_permalink type="html"]', $content ); $content = \str_replace( '%shortlink%', '[ap_shortlink type="html"]', $content ); $content = \str_replace( '%hashtags%', '[ap_hashtags]', $content ); $content = \str_replace( '%tags%', '[ap_hashtags]', $content ); // Store the new template if required. if ( $content !== $old_content || $need_update ) { \update_option( 'activitypub_custom_post_content', $content ); } } }