AP_Update_Helper::migrate_reputations()
Description #
Migrate migration data to new table.
Source #
File: admin/update.php
public function migrate_reputations() {
$tasks = $this->get_tasks();
if ( $tasks['reputations'] ) {
return;
}
global $wpdb;
if ( ! $this->meta_table_exists ) {
$options = get_option( 'anspress_updates', [] );
$options['reputations'] = true;
update_option( 'anspress_updates', $options );
$this->send( true, 'reputations', __( 'Successfully migrated all reputations', 'anspress-question-answer' ), true );
}
global $wpdb;
$old_reputations = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM {$wpdb->prefix}ap_meta WHERE apmeta_type = 'reputation' LIMIT 200" ); // DB call okay, Db cache okay.
$total_reputations = $wpdb->get_var( 'SELECT FOUND_ROWS()' ); // DB call okay, Db cache okay.
$fetched = $wpdb->num_rows;
if ( empty( $old_reputations ) ) {
$options = get_option( 'anspress_updates', [] );
$options['reputations'] = true;
update_option( 'anspress_updates', $options );
$this->send( true, 'reputations', __( 'Successfully migrated all reputations', 'anspress-question-answer' ), true );
}
$apmeta_to_delete = [];
foreach ( (array) $old_reputations as $rep ) {
$event = $this->replace_old_reputation_event( $rep->apmeta_param );
ap_insert_reputation( $event, $rep->apmeta_actionid, $rep->apmeta_userid );
$apmeta_to_delete[] = $rep->apmeta_id;
// Delete user meta.
delete_user_meta( $rep->apmeta_userid, 'ap_reputation' ); // @codingStandardsIgnoreLine.
}
// Delete all migrated data.
$apmeta_to_delete = sanitize_comma_delimited( $apmeta_to_delete, 'int' );
$wpdb->query( "DELETE FROM {$wpdb->prefix}ap_meta WHERE apmeta_id IN ({$apmeta_to_delete})" ); // DB call okay, Db cache okay.
$this->send( true, 'reputations', sprintf( __( 'Migrated reputation... %1$d out of %2$d', 'anspress-question-answer' ), $fetched, $total_reputations ), true );
}
Expand full source code Collapse full source code View on GitHub: admin/update.php:326
Add your comment