Connectors screen alongside AI provider keys. */ class Connector_Settings { /** * Option name used to store the Unsplash API key. */ const UNSPLASH_API_KEY_OPTION = 'advanced_addons_unsplash_api_key'; /** * PHP constant / environment variable name for the Unsplash API key. */ const UNSPLASH_API_KEY_CONST = 'UNSPLASH_API_KEY'; public function __construct() { add_action( 'wp_connectors_init', array( $this, 'register_connectors' ) ); } /** * Register the Unsplash connector on the Connectors screen. * * @param \WP_Connector_Registry $registry Connector registry instance. */ public function register_connectors( $registry ): void { if ( ! $registry || ! method_exists( $registry, 'register' ) ) { return; } $registry->register( 'unsplash', array( 'name' => __( 'Unsplash', 'advanced-animation' ), 'description' => __( 'Stock photo search used by the WP AI Builder to find images for page sections.', 'advanced-animation' ), 'logo_url' => plugins_url( 'assets/images/unsplash.svg', dirname( __DIR__ ) . '/advanced-animation.php' ), 'type' => 'image_search', 'authentication' => array( 'method' => 'api_key', 'credentials_url' => 'https://unsplash.com/oauth/applications', 'setting_name' => self::UNSPLASH_API_KEY_OPTION, 'constant_name' => self::UNSPLASH_API_KEY_CONST, 'env_var_name' => self::UNSPLASH_API_KEY_CONST, ), 'plugin' => array( 'file' => plugin_basename( dirname( __DIR__ ) . '/advanced-animation.php' ), 'is_active' => static function (): bool { return true; }, ), ) ); } /** * Resolve the Unsplash API key, checking constant and env var before the option. * * @return string The API key, or empty string when not configured. */ public static function get_unsplash_api_key(): string { if ( defined( self::UNSPLASH_API_KEY_CONST ) ) { $const_value = constant( self::UNSPLASH_API_KEY_CONST ); if ( is_string( $const_value ) && '' !== $const_value ) { return $const_value; } } $env_value = getenv( self::UNSPLASH_API_KEY_CONST ); if ( false !== $env_value && '' !== $env_value ) { return $env_value; } $option_value = get_option( self::UNSPLASH_API_KEY_OPTION, '' ); if ( '' === $option_value ) { // Migrate legacy option name from earlier releases. $legacy = get_option( 'wpaib_unsplash_api_key', '' ); if ( is_string( $legacy ) && '' !== $legacy ) { update_option( self::UNSPLASH_API_KEY_OPTION, $legacy, false ); return $legacy; } } return is_string( $option_value ) ? $option_value : ''; } }