75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * License Registry
 | |
|  *
 | |
|  * Responsible for holding information about premium EDD extensions in use on this site.
 | |
|  *
 | |
|  * @package   easy-digital-downloads
 | |
|  * @copyright Copyright (c) 2021, Easy Digital Downloads
 | |
|  * @license   GPL2+
 | |
|  * @since     2.11.4
 | |
|  */
 | |
| 
 | |
| namespace EDD\Extensions;
 | |
| 
 | |
| class ExtensionRegistry extends \ArrayObject {
 | |
| 
 | |
| 	/**
 | |
| 	 * Adds an extension to the registry.
 | |
| 	 *
 | |
| 	 * @since 2.11.4
 | |
| 	 *
 | |
| 	 * @param string      $pluginFile     Path to the plugin's main file.
 | |
| 	 * @param string      $pluginName     Display name of the plugin.
 | |
| 	 * @param int         $pluginId       EDD product ID for the plugin.
 | |
| 	 * @param string      $currentVersion Current version number.
 | |
| 	 * @param string|null $optionName     Option name where the license key is stored. If omitted, automatically generated.
 | |
| 	 */
 | |
| 	public function addExtension( $pluginFile, $pluginName, $pluginId, $currentVersion, $optionName = null ) {
 | |
| 		if ( $this->offsetExists( $pluginId ) ) {
 | |
| 			throw new \InvalidArgumentException( sprintf(
 | |
| 				'The extension %d is already registered.',
 | |
| 				$pluginId
 | |
| 			) );
 | |
| 		}
 | |
| 
 | |
| 		$this->offsetSet(
 | |
| 			$pluginId,
 | |
| 			new \EDD_License( $pluginFile, $pluginName, $currentVersion, 'Easy Digital Downloads', $optionName, null, $pluginId )
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns all registered extensions, regardless of whether they have licenses activated.
 | |
| 	 *
 | |
| 	 * At some point we could make this public, just making it private for now so that we have
 | |
| 	 * flexibility to change exactly what it returns in the future.
 | |
| 	 *
 | |
| 	 * @since 2.11.4
 | |
| 	 *
 | |
| 	 * @return \EDD_License[]
 | |
| 	 */
 | |
| 	private function getExtensions() {
 | |
| 		return $this->getArrayCopy();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Counts the number of licensed extensions active on this site.
 | |
| 	 * Note: This only looks at extensions registered via this registry, then filters down
 | |
| 	 * to those that have a license key entered. It does not check to verify if the license
 | |
| 	 * key is actually valid / not expired.
 | |
| 	 *
 | |
| 	 * @since 2.11.4
 | |
| 	 *
 | |
| 	 * @return int
 | |
| 	 */
 | |
| 	public function countLicensedExtensions() {
 | |
| 		$licensedExtensions = array_filter( $this->getExtensions(), function ( \EDD_License $license ) {
 | |
| 			return ! empty( $license->license );
 | |
| 		} );
 | |
| 
 | |
| 		return count( $licensedExtensions );
 | |
| 	}
 | |
| 
 | |
| }
 |