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 );
|
||
|
}
|
||
|
|
||
|
}
|