BossBey File Manager
PHP:
8.2.30
OS:
Linux
User:
imagivibe
Root
/
home
/
imagivibe
/
public_html
/
Main backup
/
wp-content
/
plugins
/
google-site-kit
/
includes
/
Core
/
Util
📤 Upload
📝 New File
📁 New Folder
Close
Editing: Migration_1_3_0.php
<?php /** * Migration for 1.3.0 * * @package Google\Site_Kit\Core\Util * @copyright 2021 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\Authentication\Clients\OAuth_Client; use Google\Site_Kit\Core\Storage\Options; use Google\Site_Kit\Core\Storage\User_Options; use Google\Site_Kit\Core\Tracking\Tracking_Consent; /** * Class Migration_1_3_0 * * @since 1.3.0 * @access private * @ignore */ class Migration_1_3_0 { /** * Target DB version. */ const DB_VERSION = '1.3.0'; /** * Context instance. * * @var Context */ protected $context; /** * Options instance. * * @var Options */ protected $options; /** * User_Options instance. * * @var User_Options */ protected $user_options; /** * Constructor. * * @since 1.3.0 * * @param Context $context Plugin context instance. * @param Options $options Optional. Options instance. * @param User_Options $user_options Optional. User_Options instance. */ public function __construct( Context $context, ?Options $options = null, ?User_Options $user_options = null ) { $this->context = $context; $this->options = $options ?: new Options( $context ); $this->user_options = $user_options ?: new User_Options( $context ); } /** * Registers hooks. * * @since 1.3.0 */ public function register() { add_action( 'admin_init', array( $this, 'migrate' ) ); } /** * Migrates the DB. * * @since 1.3.0 */ public function migrate() { $db_version = $this->options->get( 'googlesitekit_db_version' ); if ( ! $db_version || version_compare( $db_version, self::DB_VERSION, '<' ) ) { $this->migrate_tracking_opt_in(); $this->options->set( 'googlesitekit_db_version', self::DB_VERSION ); } } /** * Migrates the global tracking opt-in to a user option. * * @since 1.3.0 * @since 1.4.0 Migrates preference for up to 20 users. */ private function migrate_tracking_opt_in() { // Only migrate if tracking was opted-in. if ( $this->options->get( Tracking_Consent::OPTION ) ) { $backup_user_id = $this->user_options->get_user_id(); foreach ( $this->get_authenticated_users() as $user_id ) { $this->user_options->switch_user( $user_id ); $this->user_options->set( Tracking_Consent::OPTION, 1 ); } $this->user_options->switch_user( $backup_user_id ); } } /** * Gets the authenticated users connected to Site Kit. * * @since 1.4.0 * * @return string[] User IDs of authenticated users. Maximum of 20. */ private function get_authenticated_users() { return get_users( array( 'meta_key' => $this->user_options->get_meta_key( OAuth_Client::OPTION_ACCESS_TOKEN ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key 'meta_compare' => 'EXISTS', 'number' => 20, 'fields' => 'ID', ) ); } }
Save
Cancel