159 lines
5.5 KiB
PHP
159 lines
5.5 KiB
PHP
<?php
|
|
defined( 'ABSPATH' ) or die();
|
|
add_action( 'init', 'burst_check_upgrade', 10, 2 );
|
|
|
|
/**
|
|
* Run an upgrade procedure if the version has changed
|
|
*/
|
|
function burst_check_upgrade() {
|
|
// only run upgrade check if cron, or if admin.
|
|
if ( ! is_admin() && ! wp_doing_cron() ) {
|
|
return;
|
|
}
|
|
|
|
$prev_version = get_option( 'burst-current-version', false );
|
|
$new_version = burst_version;
|
|
|
|
// strip off everything after '#'
|
|
if ( strpos( $new_version, '#' ) !== false ) {
|
|
$new_version = substr( $new_version, 0, strpos( $new_version, '#' ) );
|
|
}
|
|
if ( $prev_version === $new_version ) {
|
|
return;
|
|
} // no upgrade
|
|
|
|
// add burst capabilities
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.1.1', '<' )
|
|
) {
|
|
burst_add_view_capability();
|
|
burst_add_manage_capability();
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.3.0', '<' ) ) {
|
|
if ( is_multisite() ) {
|
|
$tour_shown = get_site_option( 'burst_tour_shown_once', false );
|
|
} else {
|
|
$tour_shown = get_option( 'burst_tour_shown_once', false );
|
|
}
|
|
|
|
if ( $tour_shown ) {
|
|
burst_update_option( 'burst_tour_shown_once', $tour_shown );
|
|
}
|
|
}
|
|
|
|
// add capability to multisite as well
|
|
if ( is_multisite() ) {
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.3.4', '<' )
|
|
) {
|
|
burst_add_view_capability();
|
|
burst_add_manage_capability();
|
|
}
|
|
}
|
|
|
|
// Version 1.3.5
|
|
// - Upgrade to new bounce table
|
|
// - Upgrade to remove `event` and `action` columns from `burst_statistics` table
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.4.2.1', '<' ) ) {
|
|
update_option( 'burst_db_upgrade_bounces', true );
|
|
update_option( 'burst_db_upgrade_goals_remove_columns', true );
|
|
}
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.5.2', '<' ) ) {
|
|
update_option( 'burst_db_upgrade_goals_set_conversion_metric', true );
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.5.3', '<' ) ) {
|
|
update_option( 'burst_db_upgrade_strip_domain_names_from_entire_page_url', true );
|
|
update_option( 'burst_db_upgrade_empty_referrer_when_current_domain', true );
|
|
update_option( 'burst_db_upgrade_drop_user_agent', true );
|
|
|
|
// remove the endpoint file from the old location
|
|
if ( file_exists( ABSPATH . '/burst-statistics-endpoint.php' ) ) {
|
|
unlink( ABSPATH . '/burst-statistics-endpoint.php' );
|
|
}
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.6.0', '<' ) ) {
|
|
BURST()->summary->restart_update_summary_table_alltime();
|
|
}
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.6.1', '<' ) ) {
|
|
// add the admin to the email reports mailing list
|
|
$mailinglist = burst_get_option( 'email_reports_mailinglist' );
|
|
if ( ! $mailinglist ) {
|
|
$defaults = [
|
|
array(
|
|
'email' => get_option( 'admin_email' ),
|
|
'frequency' => 'monthly',
|
|
),
|
|
];
|
|
burst_update_option( 'email_reports_mailinglist', $defaults );
|
|
}
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.6.1', '<' ) ) {
|
|
// add the admin to the email reports mailing list
|
|
$mailinglist = burst_get_option( 'email_reports_mailinglist' );
|
|
if ( ! $mailinglist ) {
|
|
$defaults = [
|
|
array(
|
|
'email' => get_option( 'admin_email' ),
|
|
'frequency' => 'monthly',
|
|
),
|
|
];
|
|
burst_update_option( 'email_reports_mailinglist', $defaults );
|
|
}
|
|
}
|
|
|
|
// check if column 'device_id' exists in the table 'burst_statistics'
|
|
$is_version_upgrade = $prev_version && version_compare( $prev_version, '1.7.0', '<' );
|
|
$lookup_table_incomplete = version_compare( $prev_version, '1.7.1', '=' ) && ! BURST()->db_upgrade->column_exists( 'burst_statistics', 'device_id' );
|
|
if ( $lookup_table_incomplete || $is_version_upgrade ) {
|
|
update_option( 'burst_last_cron_hit', time(), false );
|
|
update_option( 'burst_db_upgrade_create_lookup_tables', true, true ); // this option is used in the tracking, so should autoload until completed
|
|
update_option( 'burst_db_upgrade_init_lookup_ids', true, false );
|
|
update_option( 'burst_db_upgrade_upgrade_lookup_tables', true, false );
|
|
update_option( 'burst_db_upgrade_upgrade_lookup_tables_drop_columns', true, false );
|
|
|
|
// for each table separately, for fine grained control
|
|
update_option( 'burst_db_upgrade_create_lookup_tables_browser', true, false );
|
|
update_option( 'burst_db_upgrade_create_lookup_tables_browser_version', true, false );
|
|
update_option( 'burst_db_upgrade_create_lookup_tables_platform', true, false );
|
|
update_option( 'burst_db_upgrade_create_lookup_tables_device', true, false );
|
|
update_option( 'burst_db_upgrade_upgrade_lookup_tables_browser', true, false );
|
|
update_option( 'burst_db_upgrade_upgrade_lookup_tables_browser_version', true, false );
|
|
update_option( 'burst_db_upgrade_upgrade_lookup_tables_platform', true, false );
|
|
update_option( 'burst_db_upgrade_upgrade_lookup_tables_device', true, false );
|
|
|
|
// drop post_meta feature
|
|
update_option( 'burst_db_upgrade_drop_page_id_column', true, false );
|
|
|
|
wp_schedule_single_event( time() + 300, 'burst_upgrade_iteration' );
|
|
|
|
$mu_plugin = trailingslashit( WPMU_PLUGIN_DIR ) . 'burst_rest_api_optimizer.php';
|
|
if ( file_exists( $mu_plugin ) ) {
|
|
unlink( $mu_plugin );
|
|
}
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '1.7.3', '<' ) ) {
|
|
wp_clear_scheduled_hook( 'burst_every_5_minutes' );
|
|
update_option( 'burst_db_upgrade_rename_entire_page_url_column', true, false );
|
|
update_option( 'burst_db_upgrade_drop_path_from_parameters_column', true, false );
|
|
|
|
wp_schedule_single_event( time() + 300, 'burst_upgrade_iteration' );
|
|
}
|
|
|
|
do_action( 'burst_upgrade', $prev_version );
|
|
update_option( 'burst-current-version', $new_version, false );
|
|
}
|