llms_update_3160_attempt_migration()
Migrate attempt data from the former location on the wp_usermeta table
Contents
Return Return
(void)
Source Source
File: includes/functions/updates/llms-functions-updates-3160.php
function llms_update_3160_attempt_migration() { global $wpdb; $query = $wpdb->get_results( "SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = 'llms_quiz_data' LIMIT 100;" ); // db call ok; no-cache ok. // Finished. if ( ! $query ) { set_transient( 'llms_update_3160_attempt_migration', 'complete', DAY_IN_SECONDS ); return false; } foreach ( $query as $record ) { if ( ! empty( $record->meta_value ) ) { foreach ( unserialize( $record->meta_value ) as $attempt ) { if ( ! is_array( $attempt ) ) { continue; } $to_insert = array(); $format = array(); $start = $attempt['start_date']; $end = $attempt['end_date']; if ( $end ) { $to_insert['update_date'] = $end; $format[] = '%s'; } elseif ( $start ) { $to_insert['update_date'] = $start; $format[] = '%s'; } else { continue; } foreach ( $attempt as $key => $val ) { $insert_key = $key; $insert_val = $val; if ( 'assoc_lesson' === $key ) { $insert_key = 'lesson_id'; } elseif ( 'id' === $key ) { $insert_key = 'quiz_id'; } elseif ( 'user_id' === $key ) { $insert_key = 'student_id'; } elseif ( 'wpnonce' === $key ) { continue; } elseif ( 'current' === $key ) { continue; } elseif ( 'questions' === $key ) { $insert_val = serialize( $val ); } elseif ( 'passed' === $key ) { $insert_key = 'status'; if ( $val ) { $insert_val = 'pass'; } else { // Quiz has been initialized but hasn't been started yet, // we don't need to migrate these. if ( ! $start && ! $end ) { // $insert_val = 'new'; continue; } elseif ( $start && ! $end ) { // sSill taking the quiz. if ( isset( $attempt['current'] ) && $attempt['current'] ) { $insert_val = 'current'; } // Quiz was abandoned. $insert_val = 'incomplete'; // Actual failure. } else { $insert_val = 'fail'; } } } switch ( $insert_key ) { case 'lesson_id': case 'quiz_id': case 'student_id': case 'attempt': $insert_format = '%d'; break; case 'grade': $insert_format = '%f'; break; default: $insert_format = '%s'; } $to_insert[ $insert_key ] = $insert_val; $format[] = $insert_format; } $wpdb->insert( $wpdb->prefix . 'lifterlms_quiz_attempts', $to_insert, $format ); // db call ok; no-cache ok. } } // Backup original. update_user_meta( $record->user_id, 'llms_legacy_quiz_data', $record->meta_value ); // Selete the original so it's not there on the next run. delete_user_meta( $record->user_id, 'llms_quiz_data' ); } // Needs to run again. return true; }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
3.24.1 | Unknown. |
3.16.0 | Introduced. |