143 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Font Library class.
 | |
|  *
 | |
|  * This file contains the Font Library class definition.
 | |
|  *
 | |
|  * @package    WordPress
 | |
|  * @subpackage Fonts
 | |
|  * @since      6.5.0
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Font Library class.
 | |
|  *
 | |
|  * @since 6.5.0
 | |
|  */
 | |
| class WP_Font_Library {
 | |
| 
 | |
| 	/**
 | |
| 	 * Font collections.
 | |
| 	 *
 | |
| 	 * @since 6.5.0
 | |
| 	 * @var array
 | |
| 	 */
 | |
| 	private $collections = array();
 | |
| 
 | |
| 	/**
 | |
| 	 * Container for the main instance of the class.
 | |
| 	 *
 | |
| 	 * @since 6.5.0
 | |
| 	 * @var WP_Font_Library|null
 | |
| 	 */
 | |
| 	private static $instance = null;
 | |
| 
 | |
| 	/**
 | |
| 	 * Register a new font collection.
 | |
| 	 *
 | |
| 	 * @since 6.5.0
 | |
| 	 *
 | |
| 	 * @param string $slug Font collection slug. May only contain alphanumeric characters, dashes,
 | |
| 	 *                     and underscores. See sanitize_title().
 | |
| 	 * @param array  $args Font collection data. See wp_register_font_collection() for information on accepted arguments.
 | |
| 	 * @return WP_Font_Collection|WP_Error A font collection if it was registered successfully,
 | |
| 	 *                                     or WP_Error object on failure.
 | |
| 	 */
 | |
| 	public function register_font_collection( string $slug, array $args ) {
 | |
| 		$new_collection = new WP_Font_Collection( $slug, $args );
 | |
| 
 | |
| 		if ( $this->is_collection_registered( $new_collection->slug ) ) {
 | |
| 			$error_message = sprintf(
 | |
| 				/* translators: %s: Font collection slug. */
 | |
| 				__( 'Font collection with slug: "%s" is already registered.' ),
 | |
| 				$new_collection->slug
 | |
| 			);
 | |
| 			_doing_it_wrong(
 | |
| 				__METHOD__,
 | |
| 				$error_message,
 | |
| 				'6.5.0'
 | |
| 			);
 | |
| 			return new WP_Error( 'font_collection_registration_error', $error_message );
 | |
| 		}
 | |
| 		$this->collections[ $new_collection->slug ] = $new_collection;
 | |
| 		return $new_collection;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Unregisters a previously registered font collection.
 | |
| 	 *
 | |
| 	 * @since 6.5.0
 | |
| 	 *
 | |
| 	 * @param string $slug Font collection slug.
 | |
| 	 * @return bool True if the font collection was unregistered successfully and false otherwise.
 | |
| 	 */
 | |
| 	public function unregister_font_collection( string $slug ) {
 | |
| 		if ( ! $this->is_collection_registered( $slug ) ) {
 | |
| 			_doing_it_wrong(
 | |
| 				__METHOD__,
 | |
| 				/* translators: %s: Font collection slug. */
 | |
| 				sprintf( __( 'Font collection "%s" not found.' ), $slug ),
 | |
| 				'6.5.0'
 | |
| 			);
 | |
| 			return false;
 | |
| 		}
 | |
| 		unset( $this->collections[ $slug ] );
 | |
| 		return true;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Checks if a font collection is registered.
 | |
| 	 *
 | |
| 	 * @since 6.5.0
 | |
| 	 *
 | |
| 	 * @param string $slug Font collection slug.
 | |
| 	 * @return bool True if the font collection is registered and false otherwise.
 | |
| 	 */
 | |
| 	private function is_collection_registered( string $slug ) {
 | |
| 		return array_key_exists( $slug, $this->collections );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets all the font collections available.
 | |
| 	 *
 | |
| 	 * @since 6.5.0
 | |
| 	 *
 | |
| 	 * @return array List of font collections.
 | |
| 	 */
 | |
| 	public function get_font_collections() {
 | |
| 		return $this->collections;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets a font collection.
 | |
| 	 *
 | |
| 	 * @since 6.5.0
 | |
| 	 *
 | |
| 	 * @param string $slug Font collection slug.
 | |
| 	 * @return WP_Font_Collection|null Font collection object, or null if the font collection doesn't exist.
 | |
| 	 */
 | |
| 	public function get_font_collection( string $slug ) {
 | |
| 		if ( $this->is_collection_registered( $slug ) ) {
 | |
| 			return $this->collections[ $slug ];
 | |
| 		}
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Utility method to retrieve the main instance of the class.
 | |
| 	 *
 | |
| 	 * The instance will be created if it does not exist yet.
 | |
| 	 *
 | |
| 	 * @since 6.5.0
 | |
| 	 *
 | |
| 	 * @return WP_Font_Library The main instance.
 | |
| 	 */
 | |
| 	public static function get_instance() {
 | |
| 		if ( null === self::$instance ) {
 | |
| 			self::$instance = new self();
 | |
| 		}
 | |
| 
 | |
| 		return self::$instance;
 | |
| 	}
 | |
| }
 |