HEX
Server: LiteSpeed
System: Linux eko108.isimtescil.net 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: uyarreklamcomtr (11202)
PHP: 7.4.33
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/uyarreklam.com.tr/httpdocs/Migrator.php.tar
uyarreklam.com.tr/httpdocs/wp-content/plugins/google-listings-and-ads/src/DB/Migration/Migrator.php000064400000003763151552515440032350 0ustar00var/www/vhosts<?php
declare( strict_types=1 );

namespace Automattic\WooCommerce\GoogleListingsAndAds\DB\Migration;

use Automattic\WooCommerce\GoogleListingsAndAds\Infrastructure\Service;

defined( 'ABSPATH' ) || exit;

/**
 * Class Migrator
 *
 * @package Automattic\WooCommerce\GoogleListingsAndAds\DB\Migration
 *
 * @since 1.4.1
 */
class Migrator implements Service {

	/**
	 * @var MigrationInterface[]
	 */
	protected $migrations;

	/**
	 * Migrator constructor.
	 *
	 * @param MigrationInterface[] $migrations An array of all available migrations.
	 */
	public function __construct( array $migrations ) {
		$this->migrations = $migrations;

		// Sort migrations by version.
		uasort(
			$this->migrations,
			function ( MigrationInterface $migration_a, MigrationInterface $migration_b ) {
				return version_compare( $migration_a->get_applicable_version(), $migration_b->get_applicable_version() );
			}
		);
	}

	/**
	 * Run migrations.
	 *
	 * @param string $old_version Previous version before updating.
	 * @param string $new_version Current version after updating.
	 */
	public function migrate( string $old_version, string $new_version ): void {
		// bail if both versions are equal.
		if ( 0 === version_compare( $old_version, $new_version ) ) {
			return;
		}

		foreach ( $this->migrations as $migration ) {
			if ( $this->can_apply( $migration->get_applicable_version(), $old_version, $new_version ) ) {
				$migration->apply();
			}
		}
	}

	/**
	 * @param string $migration_version The applicable version of the migration.
	 * @param string $old_version       Previous version before updating.
	 * @param string $new_version       Current version after updating.
	 *
	 * @return bool True if migration should be applied.
	 */
	protected function can_apply( string $migration_version, string $old_version, string $new_version ): bool {
		return version_compare( $old_version, $new_version, '<' ) &&
			version_compare( $old_version, $migration_version, '<' ) &&
			version_compare( $migration_version, $new_version, '<=' );
	}
}