laipower/wp-content/plugins/easy-digital-downloads/includes/extensions/ExtensionRegistry.php

75 lines
2.2 KiB
PHP
Raw Normal View History

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