License Handler · Eliasis PHP Framework plugin
, (*1)
Versión en español, (*2)
Licensing and applications manager., (*3)
Requirements
This plugin is supported by PHP versions 5.6 or higher and is compatible with HHVM versions 3.0 or higher., (*4)
Installation
The preferred way to install this extension is through Composer., (*5)
To install License Handler, simply:, (*6)
composer require eliasis-framework/license-handler
The previous command will only install the necessary files, if you prefer to download the entire source code you can use:, (*7)
composer require eliasis-framework/license-handler --prefer-source
You can also clone the complete repository with Git:, (*8)
git clone https://github.com/eliasis-framework/license-handler.git
Available Methods
Available methods in this plugin:, (*9)
Applications
- Add application
$application->add($name, $type, $category, $active);
Atttribute |
Description |
Type |
Required |
$name |
Application name. |
string |
Yes |
$type |
Application type. |
string |
Yes |
$category |
Application category. |
string |
Yes |
$active |
Application state. |
boolean |
Yes |
@return (int) → Application inserted ID., (*10)
- Update application
$application->update($id, $name, $type, $category, $active);
Atttribute |
Description |
Type |
Required |
$id |
Application ID. |
string |
Yes |
$name |
Application name. |
string |
Yes |
$type |
Application type. |
string |
Yes |
$category |
Application category. |
string |
Yes |
$active |
Application state. |
boolean |
Yes |
@return (int) → Rows affected., (*11)
Sites
- Add site
$site->add($domain, $host, $ip, $authorized);
Atttribute |
Description |
Type |
Required |
$domain |
Site domain. |
string |
Yes |
$host |
Site host. |
string |
Yes |
$ip |
Site ip. |
string |
Yes |
$authorized |
Authorized?. |
boolean |
Yes |
@return (int) → Site inserted ID., (*12)
- Update site
$site->update($id, $domain, $host, $ip, $authorized);
Atttribute |
Description |
Type |
Required |
$id |
Site ID. |
string |
Yes |
$domain |
Site domain. |
string |
Yes |
$host |
Site host. |
string |
Yes |
$ip |
Site ip. |
string |
Yes |
$authorized |
Authorized?. |
boolean |
Yes |
@return (int) → Rows affected., (*13)
License
- Generate license key
$license->generateKey($characters, $segments);
Atttribute |
Description |
Type |
Required |
Default |
$characters |
Characters number by segments. |
int |
No |
5 |
$segments |
Segments number. |
int |
No |
5 |
@return (string) → License key., (*14)
- Add license
$license->add($appID, $siteID, $key, $state, $expire);
Atttribute |
Description |
Type |
Required |
$appID |
Application table id. |
int |
Yes |
$siteID |
Site table id. |
int |
Yes |
$key |
License key. |
string |
Yes |
$state |
License state. |
bool |
Yes |
$expire |
License expiration date. |
string |
Yes |
@return (int) → License inserted ID., (*15)
- Update license
$license->update($id, $appID, $siteID, $key, $state, $expire);
Atttribute |
Description |
Type |
Required |
$id |
License ID. |
string |
Yes |
$appID |
Application table id. |
int |
Yes |
$siteID |
Site table id. |
int |
Yes |
$key |
License key. |
string |
Yes |
$state |
License state. |
bool |
Yes |
$expire |
License expiration date. |
string |
Yes |
@return (int) → Rows affected., (*16)
- Check if license exists
$license->keyExists($license);
Atttribute |
Description |
Type |
Required |
$license |
License key. |
string |
Yes |
@return (boolean), (*17)
Options
- Add option
$option->add($licenseID, $name, $value);
Atttribute |
Description |
Type |
Required |
$licenseID |
License table id. |
string |
Yes |
$name |
Option name. |
string |
Yes |
$value |
Option value. |
string |
Yes |
@return (int) → Option inserted ID., (*18)
- Update option
$option->update($id, $licenseID, $name, $value);
Atttribute |
Description |
Type |
Required |
$id |
Option ID. |
string |
Yes |
$licenseID |
License table id. |
string |
Yes |
$name |
Option name. |
string |
Yes |
$value |
Option value. |
string |
Yes |
@return (int) → Rows affected., (*19)
Quick Start
To use this plugin, your Eliasis application must use the PHP-Database library and add the following to the application configuration files:, (*20)
/**
* eliasis-app/config/complements.php
*/
return [
'plugin' => [
'license-handler' => [
'db-id' => 'app',
'db-prefix' => 'test_',
'db-charset' => 'utf8',
'db-engine' => 'innodb'
],
],
];
And get the instances from each table:, (*21)
use Eliasis\Complement\Type\Plugin;
$site = Plugin::WP_Plugin_Info()->getControllerInstance('Site');
$option = Plugin::WP_Plugin_Info()->getControllerInstance('Option');
$license = Plugin::WP_Plugin_Info()->getControllerInstance('License);
$application = Plugin::WP_Plugin_Info()->getControllerInstance('Application');
Usage
Applications
- Add application
$appID = $application->add('app-name', 'plugin', 'WordPress', 1);
- Update application
$application->update($appID, 'new-app-name', 'module', 'Prestashop', 1);
Sites
- Add site
$siteID = $site->add(
'domain.com',
'host.domain.com',
'87.142.85.70', 1
);
- Update site
$site->update(
$siteID,
'new-domain.com',
'host.new-domain.com',
'87.142.85.70', 1
);
License
- Generate license key
$license = $license->generateKey(); // 3FGSV-BZ49N-U79EA-S96ZY-MFQ63
$license = $license->generateKey(5, 5); // 3FGSV-BZ49N-U79EA-S96ZY-MFQ63
$license = $license->generateKey(4, 4); // 3FGS-BZ4N-U7EA-S9ZY
$license = $license->generateKey(6, 5); // SF4W2H-FEJKZ5-PU7KAD-N77486-BKMJSW
$license = $license->generateKey(4, 2); // FT3Q-EBT5
- Add license
$licenseID = $license->add(1, 1, $key, $license, '+1day');
$licenseID = $license->add(1, 1, $key, $license, '+10days');
$licenseID = $license->add(1, 1, $key, $license, '+1week');
$licenseID = $license->add(1, 1, $key, $license, '+1month');
$licenseID = $license->add(1, 1, $key, $license, '+2months');
$licenseID = $license->add(1, 1, $key, $license, '+1year');
$licenseID = $license->add(1, 1, $key, $license, '+2years');
- Update license
$license->update(1, 1, $key, $license, '+3weeks');
- Check if license exists
$license->keyExists('SF4W2H-FEJKZ5-PU7KAD-N77486-BKMJSW');
Options
- Add option
$option->add($licenseID, 'lang', 'es-ES');
- Update option
$option->update($id, $licenseID, 'lang', 'en-EN');
Database
This plugin will create the following tables., (*22)
- test_applications
The table structure created is as follows:, (*23)
Columns |
Data type |
app_id |
INT(9) |
app_name |
VARCHAR(80) |
app_type |
VARCHAR(80) |
app_category |
VARCHAR(80) |
app_state |
INT(1) |
updated |
TIMESTAMP |
created |
TIMESTAMP |
- test_sites
The table structure created is as follows:, (*24)
Columns |
Data type |
site_id |
INT(9) |
site_domain |
VARCHAR(255) |
site_host |
VARCHAR(255) |
site_ip |
VARCHAR(1) |
site_authorized |
INT(1) |
updated |
TIMESTAMP |
created |
TIMESTAMP |
- test_licenses
The table structure created is as follows:, (*25)
Columns |
Data type |
lic_id |
INT(9) |
app_id |
INT(9) |
site_id |
INT(9) |
lic_key |
VARCHAR(29) |
lic_state |
INT(1) |
lic_expire |
DATETIME |
site_authorized |
INT(1) |
updated |
TIMESTAMP |
created |
TIMESTAMP |
- test_options
The table structure created is as follows:, (*26)
Columns |
Data type |
option_id |
INT(9) |
lic_id |
INT(9) |
option_name |
VARCHAR(180) |
option_value |
LONGTEXT |
Tests
To run tests you just need composer and to execute the following:, (*27)
git clone https://github.com/eliasis-framework/license-handler.git
cd license-handler
composer install
Run unit tests with PHPUnit:, (*28)
composer phpunit
Run PSR2 code standard tests with PHPCS:, (*29)
composer phpcs
Run PHP Mess Detector tests to detect inconsistencies in code style:, (*30)
composer phpmd
Run all previous tests:, (*31)
composer tests
If this project helps you to reduce your development time,
you can sponsor me to support my open source work :blush:, (*32)
License
This repository is licensed under the MIT License., (*33)
Copyright © 2017-2022, Josantonius, (*34)