Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/awesomemotive/edd-addon-tools
https://github.com/awesomemotive/edd-addon-tools
List: edd-addon-tools
Last synced: 3 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/awesomemotive/edd-addon-tools
- Owner: awesomemotive
- Created: 2021-09-27T13:01:18.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2021-12-06T13:57:59.000Z (almost 3 years ago)
- Last Synced: 2024-04-13T16:12:14.612Z (7 months ago)
- Language: PHP
- Size: 23.4 KB
- Stars: 1
- Watchers: 7
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Tools for Easy Digital Downloads Extensions
## Installation and set up
The extension in question needs to have a `composer.json` file, specifically with the following:
```json
"require": {
"easydigitaldownloads/edd-addon-tools": "*"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/awesomemotive/edd-addon-tools"
}
]
```Once set up, run `composer install --no-dev`. This should create a new `vendors/` folder with `easydigitaldownloads/edd-addon-tools/` inside.
## Using the extension loader
The `ExtensionLoader` class can be used to conditionally load an extension if all the requirements are met. Here's an example:
```php
require_once dirname( __FILE__ ) . '/vendor/autoload.php';
\EDD\ExtensionUtils\v1\ExtensionLoader::loadOrQuit( __FILE__, 'EDD_Content_Restriction_load', array(
'php' => '5.5',
'easy-digital-downloads' => '2.9',
) );
```- The `vendor/autoload.php` file needs to be included.
- Call `\EDD\ExtensionUtils\v1\ExtensionLoader::loadOrQuit()`. This function takes three parameters:
1. The path to the main plugin file (`__FILE__` assuming this is included in the main plugin file).
2. The function/closure/callback you want to execute if all requirements are met. In this example that's a function called `EDD_Content_Restriction_load()`.
3. An array of requirements that must be met in order to load the plugin.If the requirements are all met, the callback function is triggered on the `plugins_loaded` hook.
If the requirements are not met, then the callback is not triggered, and instead a warning is printed in the plugin's row in the admin table.### Custom requirements
You can also set up custom/arbitrary requirements. Here's an example for where an extension could arbitrarily require a version of any plugin (in this case, MailPoet):
```php
\EDD\ExtensionUtils\v1\ExtensionLoader::loadOrQuit( __FILE__, 'edd_mailpoet_load', array(
'php' => '5.5',
'easy-digital-downloads' => '2.9',
'mailpoet' => array(
'minimum' => '2.0',
'name' => 'MailPoet',
'exists' => static function () {
return defined( 'MAILPOET_VERSION' ) || class_exists( 'WYSIJA_object' );
},
'current' => static function () {
if ( defined( 'MAILPOET_VERSION' ) ) {
return MAILPOET_VERSION;
} elseif ( class_exists( 'WYSIJA_object' ) ) {
return WYSIJA_object::$version;
} else {
return false;
}
},
),
) );
```Note the use of closures. This ensures the constants are only evaluated on `plugins_loaded` instead of immediately. This is to ensure the dependencies are loaded before we check them.