HEX
Server: LiteSpeed
System: Linux server257.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: salhiscp (12590)
PHP: 8.4.12
Disabled: NONE
Upload Files
File: /home/salhiscp/www/wp-content/plugins/image-optimization/classes/migration/migration-manager.php
<?php

namespace ImageOptimization\Classes\Migration;

use ImageOptimization\Classes\Async_Operation\{
	Async_Operation,
	Async_Operation_Hook,
	Async_Operation_Queue,
	Exceptions\Async_Operation_Exception,
};

use ImageOptimization\Classes\Logger;
use ImageOptimization\Classes\Migration\Handlers\{
	Fix_Avif_With_Zero_Dimensions,
	Fix_Mime_Type,
	Fix_Optimized_Size_Keys,
};

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Migration_Manager {
	public static function get_migrations(): array {
		return [
			Fix_Optimized_Size_Keys::class,
			Fix_Mime_Type::class,
			Fix_Avif_With_Zero_Dimensions::class,
		];
	}

	/**
	 * @param $migration_name
	 *
	 * @return \class-string|null
	 */
	public static function get_migration( $migration_name ): ?string {
		foreach ( self::get_migrations() as $migration ) {
			if ( $migration::get_name() === $migration_name ) {
				return $migration;
			}
		}

		return null;
	}

	public static function init() {
		$migrations_passed = ( new Migration_Meta() )->get_migrations_passed();

		foreach ( self::get_migrations() as $migration ) {
			if ( in_array( $migration::get_name(), $migrations_passed, true ) ) {
				continue;
			}

			try {
				Async_Operation::create(
					Async_Operation_Hook::DB_MIGRATION,
					[ 'name' => $migration::get_name() ],
					Async_Operation_Queue::MIGRATION,
					0,
					true
				);
			} catch ( Async_Operation_Exception $aoe ) {
				$name = $migration::get_name();

				Logger::log(
					Logger::LEVEL_ERROR,
					"Error while running migration `$name`: " . $aoe->getMessage()
				);
			}
		}
	}
}