<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Registry für alle Storage-Adapter.
 *
 * Beide Adapter (Google Drive + Dropbox) werden immer initialisiert.
 * Welcher für eine konkrete Galerie gilt, bestimmt $gallery['provider'].
 */
class CCGAL_Storage {

	/** @var CCGAL_Storage_Adapter[] */
	private static $adapters = array();

	public static function init(): void {
		self::$adapters = array(
			'google_drive' => new CCGAL_Google_Drive_Adapter(),
			'dropbox'      => new CCGAL_Dropbox_Adapter(),
		);
		foreach ( self::$adapters as $adapter ) {
			$adapter->register_hooks();
		}
	}

	/**
	 * Gibt den Adapter für einen bestimmten Provider zurück.
	 * Fallback: google_drive.
	 */
	public static function adapter( string $provider = 'google_drive' ): CCGAL_Storage_Adapter {
		if ( empty( self::$adapters ) ) {
			self::init();
		}
		return self::$adapters[ $provider ] ?? self::$adapters['google_drive'];
	}

	/**
	 * Gibt den Adapter zurück, der zur Galerie gehört ($gallery['provider']).
	 */
	public static function adapter_for_gallery( array $gallery ): CCGAL_Storage_Adapter {
		return self::adapter( $gallery['provider'] ?? 'google_drive' );
	}

	public static function get_available_adapters(): array {
		return array(
			'google_drive' => __( 'Google Drive', 'customer-cloud-gallery' ),
			'dropbox'      => __( 'Dropbox', 'customer-cloud-gallery' ),
		);
	}
}
