_migrate_awards( string $type )
Migrate deprecated meta values for user awards by type.
Description Description
Queries 50 earned awards at a time and migrates their data by moving meta data to the new location and then deleting the deprecated meta values.
Parameters Parameters
- $type
-
(string) (Required) Award type, either "achievement" or "certificate".
Return Return
(boolean) Returns true
if there are more results and false
if there are no further results.
Source Source
File: includes/functions/updates/llms-functions-updates-600.php
function _migrate_awards( $type ) { $per_page = llms_update_util_get_items_per_page(); $query_args = array( 'orderby' => array( 'ID' => 'ASC' ), 'post_type' => "llms_my_{$type}", 'post_status' => 'any', 'posts_per_page' => $per_page, 'no_found_rows' => true, // We don't care about found rows since we'll run the query as many times as needed anyway. 'fields' => 'ids', // We just need the ID for the updates we'll perform. 'meta_query' => array( 'relation' => 'OR', array( 'key' => "_llms_{$type}_title", 'compare' => 'EXISTS', ), array( 'key' => "_llms_{$type}_template", 'compare' => 'EXISTS', ), array( 'key' => "_llms_{$type}_image", 'compare' => 'EXISTS', ), ), ); if ( 'achievement' === $type ) { $query_args['meta_query'][] = array( 'key' => '_llms_achievement_content', 'compare' => 'EXISTS', ); } $query = new \WP_Query( $query_args ); // Don't trigger deprecations. remove_filter( 'get_post_metadata', 'llms_engagement_handle_deprecated_meta_keys', 20, 3 ); // Don't trigger save hooks. remove_action( "save_post_llms_my_{$type}", array( 'LLMS_Controller_Awards', 'on_save' ), 20 ); $legacy_option_added = false; foreach ( $query->posts as $post_id ) { $image_migrated = _migrate_award( $post_id, $type ); if ( ! $legacy_option_added && ! $image_migrated ) { _add_legacy_opt( $type ); $legacy_option_added = true; } } // Re-enable deprecations. add_filter( 'get_post_metadata', 'llms_engagement_handle_deprecated_meta_keys', 20, 3 ); // Re-enabled save hooks. add_action( "save_post_llms_my_{$type}", array( 'LLMS_Controller_Awards', 'on_save' ), 20 ); // If there was 50 results assume there's another page and run again, otherwise we're done. return ( count( $query->posts ) === $per_page ); }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
6.0.0 | Introduced. |