File: /var/www/agighana.org_backup/Migration_1_123_0.php
<?php
/**
* Migration for 1.123.0
*
* @package Google\Site_Kit\Core\Util
* @copyright 2024 Google LLC
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
* @link https://sitekit.withgoogle.com
*/
namespace Google\Site_Kit\Core\Util;
use Google\Site_Kit\Context;
use Google\Site_Kit\Core\Modules\Module_Sharing_Settings;
use Google\Site_Kit\Core\Modules\Modules;
use Google\Site_Kit\Core\Storage\Options;
use Google\Site_Kit\Modules\Analytics_4;
use Google\Site_Kit\Modules\Analytics_4\Settings as Analytics_Settings;
/**
* Class Migration_1_123_0
*
* @since 1.123.0
* @access private
* @ignore
*/
class Migration_1_123_0 {
/**
* Target DB version.
*/
const DB_VERSION = '1.123.0';
/**
* DB version option name.
*/
const DB_VERSION_OPTION = 'googlesitekit_db_version';
/**
* Legacy analytics module slug.
*/
const LEGACY_ANALYTICS_MODULE_SLUG = 'analytics';
/**
* Legacy analytics option name.
*/
const LEGACY_ANALYTICS_OPTION = 'googlesitekit_analytics_settings';
/**
* Context instance.
*
* @since 1.123.0
* @var Context
*/
protected $context;
/**
* Options instance.
*
* @since 1.123.0
* @var Options
*/
protected $options;
/**
* Analytics_Settings instance.
*
* @since 1.123.0
* @var Analytics_Settings
*/
protected $analytics_settings;
/**
* Constructor.
*
* @since 1.123.0
*
* @param Context $context Plugin context instance.
* @param Options $options Optional. Options instance.
*/
public function __construct(
Context $context,
Options $options = null
) {
$this->context = $context;
$this->options = $options ?: new Options( $context );
$this->analytics_settings = new Analytics_Settings( $this->options );
}
/**
* Registers hooks.
*
* @since 1.123.0
*/
public function register() {
add_action( 'admin_init', array( $this, 'migrate' ) );
}
/**
* Migrates the DB.
*
* @since 1.123.0
*/
public function migrate() {
$db_version = $this->options->get( self::DB_VERSION_OPTION );
if ( ! $db_version || version_compare( $db_version, self::DB_VERSION, '<' ) ) {
$this->migrate_legacy_analytics_settings();
$this->activate_analytics();
$this->migrate_legacy_analytics_sharing_settings();
$this->options->set( self::DB_VERSION_OPTION, self::DB_VERSION );
}
}
/**
* Migrates the legacy analytics settings over to analytics-4.
*
* @since 1.123.0
*/
protected function migrate_legacy_analytics_settings() {
if ( ! $this->analytics_settings->has() ) {
return;
}
$legacy_settings = $this->options->get( self::LEGACY_ANALYTICS_OPTION );
if ( empty( $legacy_settings ) ) {
return;
}
$recovered_settings = array();
$options_to_migrate = array(
'accountID',
'adsConversionID',
'trackingDisabled',
);
array_walk(
$options_to_migrate,
function ( $setting ) use ( &$recovered_settings, $legacy_settings ) {
$recovered_settings[ $setting ] = $legacy_settings[ $setting ];
}
);
if ( ! empty( $recovered_settings ) ) {
$this->analytics_settings->merge(
$recovered_settings
);
}
}
/**
* Activates the analytics-4 module if the legacy analytics module was active.
*
* @since 1.123.0
*/
protected function activate_analytics() {
$option = $this->options->get( Modules::OPTION_ACTIVE_MODULES );
// Check legacy option.
if ( ! is_array( $option ) ) {
$option = $this->options->get( 'googlesitekit-active-modules' );
}
if ( ! is_array( $option ) ) {
return;
}
$analytics_active = in_array( Analytics_4::MODULE_SLUG, $option, true );
// If analytics-4 is already active, bail.
if ( $analytics_active ) {
return;
}
$legacy_analytics_active = in_array(
self::LEGACY_ANALYTICS_MODULE_SLUG,
$option,
true
);
if ( $legacy_analytics_active ) {
$option[] = Analytics_4::MODULE_SLUG;
$this->options->set( Modules::OPTION_ACTIVE_MODULES, $option );
}
}
/**
* Replicates sharing settings from the legacy analytics module to analytics-4.
*
* @since 1.123.0
*/
protected function migrate_legacy_analytics_sharing_settings() {
$option = $this->options->get( Module_Sharing_Settings::OPTION );
if ( ! is_array( $option ) ) {
return;
}
// If sharing settings for analytics-4 already exist, bail.
if ( isset( $option[ Analytics_4::MODULE_SLUG ] ) ) {
return;
}
if ( isset( $option[ self::LEGACY_ANALYTICS_MODULE_SLUG ] ) ) {
$option[ Analytics_4::MODULE_SLUG ] = $option[ self::LEGACY_ANALYTICS_MODULE_SLUG ];
$this->options->set( Module_Sharing_Settings::OPTION, $option );
}
}
}