context = $context; $this->options = $options ?: new Options( $context ); $this->rrm_settings = new Reader_Revenue_Manager_Settings( $this->options ); } /** * Registers hooks. * * @since 1.177.0 */ public function register() { add_action( 'admin_init', array( $this, 'migrate' ) ); } /** * Migrates the DB. * * @since 1.177.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_rrm_content_policy_status(); $this->options->set( self::DB_VERSION_OPTION, self::DB_VERSION ); } } /** * Migrates the legacy nested `contentPolicyStatus` setting into * flat `contentPolicyState` and `policyInfoLink` settings. * * @since 1.177.0 */ protected function migrate_rrm_content_policy_status() { if ( ! $this->rrm_settings->has() ) { return; } $rrm_settings = $this->rrm_settings->get(); if ( ! is_array( $rrm_settings ) || empty( $rrm_settings ) ) { return; } if ( ! array_key_exists( 'contentPolicyStatus', $rrm_settings ) ) { return; } $content_policy_status = (array) $rrm_settings['contentPolicyStatus']; $rrm_settings['contentPolicyState'] = $content_policy_status['contentPolicyState'] ?? ''; $rrm_settings['policyInfoLink'] = $content_policy_status['policyInfoLink'] ?? ''; unset( $rrm_settings['contentPolicyStatus'] ); $this->rrm_settings->set( $rrm_settings ); } }