PHP Classes

File: README-ES.md

Recommend this page to a friend!
  Classes of Josantonius   PHP License System   README-ES.md   Download  
File: README-ES.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: PHP License System
Manage PHP applications license keys
Author: By
Last change:
Date: 6 years ago
Size: 12,915 bytes
 

Contents

Class file image Download

License Handler · Eliasis PHP Framework plugin

Packagist Downloads License Codacy Badge Build Status PSR2 PSR4 codecov

English version

Gestión de licencias y aplicaciones.

Requisitos

Este plugin es soportado por versiones de PHP 5.6 o superiores y es compatible con versiones de HHVM 3.0 o superiores.

Instalación

La mejor forma de instalar este plugin es a través de Composer.

Para instalar License Handler, simplemente escribe:

$ composer require eliasis-framework/license-handler

El comando anterior sólo instalará los archivos necesarios, si prefieres descargar todo el código fuente puedes utilizar:

$ composer require eliasis-framework/license-handler --prefer-source

También puedes clonar el repositorio completo con Git:

$ git clone https://github.com/eliasis-framework/license-handler.git

Métodos disponibles

Métodos disponibles en este plugin:

Aplicaciones

- Agregar aplicación:

$application->add($name, $type, $category, $active);

| Atributo | Descripción | Tipo de dato | Requerido | --- | --- | --- | --- | | $name | Nombre de la aplicación. | string | Sí | | $type | Tipo de aplicación. | string | Sí | | $category | Categoría para la aplicación. | string | Sí | | $active | Estado de la aplicación. | boolean| Sí |

@return (int) ? ID de aplicación insertada.

- Actualizar aplicación:

$application->update($id, $name, $type, $category, $active);

| Atributo | Descripción | Tipo de dato | Requerido | --- | --- | --- | --- | | $id | ID de la aplicación. | string | Sí | | $name | Nombre de la aplicación. | string | Sí | | $type | Tipo de aplicación. | string | Sí | | $category | Categoría para la aplicación. | string | Sí | | $active | Estado de la aplicación. | boolean| Sí |

@return (int) ? Filas afectadas.

Sitios

- Agregar sitio:

$site->add($domain, $host, $ip, $authorized);

| Atributo | Descripción | Tipo de dato | Requerido | --- | --- | --- | --- | | $domain | Dominio del sitio. | string | Sí | | $host | Host del sitio. | string | Sí | | $ip | Dirección IP del sitio. | string | Sí | | $authorized | Autorizado?. | boolean| Sí |

@return (int) ? Site inserted ID.

- Actualizar sitio:

$site->update($id, $domain, $host, $ip, $authorized);

| Atributo | Descripción | Tipo de dato | Requerido | --- | --- | --- | --- | | $id | Site ID. | string | Sí | | $domain | Dominio del sitio. | string | Sí | | $host | Host del sitio. | string | Sí | | $ip | Dirección IP del sitio. | string | Sí | | $authorized | Autorizado?. | boolean| Sí |

@return (int) ? ID del sitio insertado.

Licencia

- Generar clave de licencia:

$license->generateKey($characters, $segments);

| Atributo | Descripción | Tipo de dato | Requerido | Por defecto | --- | --- | --- | --- | --- | | $characters | Número de caracteres por segmentos. | int | No | 5 | | $segments | Número de segmentos. | int | No | 5 |

@return (string) ? Clave de licencia.

- Agregar licencia:

$license->add($appID, $siteID, $key, $state, $expire);

| Atributo | Descripción | Tipo de dato | Requerido | --- | --- | --- | --- | | $appID | ID de la aplicación en la base de datos. | int | Sí | | $siteID | ID del sitio en la base de datos. | int | Sí | | $key | Clave de licencia. | string | Sí | | $state | Estado de licencia. | bool | Sí | | $expire | Fecha de expiración de la licencia. | string| Sí |

@return (int) ? ID de la licencia insertada.

- Actualizar licencia:

$license->update($id, $appID, $siteID, $key, $state, $expire);

| Atributo | Descripción | Tipo de dato | Requerido | --- | --- | --- | --- | | $id | License ID. | string | Sí | | $appID | ID de la aplicación en la base de datos. | int | Sí | | $siteID | ID del sitio en la base de datos. | int | Sí | | $key | Clave de licencia. | string | Sí | | $state | Estado de licencia. | bool | Sí | | $expire | Fecha de expiración de la licencia. | string| Sí |

@return (int) ? Filas afectadas.

- Verificar si existe la licencia:

$license->keyExists($license);

| Atributo | Descripción | Tipo de dato | Requerido | --- | --- | --- | --- | | $license | Clave de licencia. | string | Sí |

@return (boolean)

Opciones

- Agregar opción:

$option->add($licenseID, $name, $value);

| Atributo | Descripción | Tipo de dato | Requerido | --- | --- | --- | --- | | $licenseID | ID de la licencia en la base de datos. | string | Sí | | $name | Nombre de la opción. | string | Sí | | $value | Valor de la opción. | string | Sí |

@return (int) ? ID de la opción insertada.

- Actualizar opción:

$option->update($id, $licenseID, $name, $value);

| Atributo | Descripción | Tipo de dato | Requerido | --- | --- | --- | --- | | $id | ID de la opción. | string | Sí | | $licenseID | ID de la licencia en la base de datos. | string | Sí | | $name | Nombre de la opción. | string | Sí | | $value | Valor de la opción. | string | Sí |

@return (int) ? Filas afectadas.

Cómo empezar

To use this plugin, your Eliasis application must use the PHP-Database library and add the following to the application configuration files:

/
 * 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:

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

Aplicaciones

- Agregar aplicación:

$appID = $application->add('app-name', 'plugin', 'WordPress', 1);

- Actualizar aplicación:

$application->update($appID, 'new-app-name', 'module', 'Prestashop', 1);

Sitios

- Agregar sitio:

$siteID = $site->add(
    'domain.com', 
    'host.domain.com',
    '87.142.85.70', 1
);

- Actualizar sitio:

$site->update(
    $siteID, 
    'new-domain.com', 
    'host.new-domain.com', 
    '87.142.85.70', 1
);

Licencia

- Generar clave de licencia:

$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

- Agregar licencia:

$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');

- Actualizar licencia:

$license->update(1, 1, $key, $license, '+3weeks');

- Check if license exists:

$license->keyExists('SF4W2H-FEJKZ5-PU7KAD-N77486-BKMJSW');

Opciones

- Agregar opción:

$option->add($licenseID, 'lang', 'es-ES');

- Actualizar opción:

$option->update($id, $licenseID, 'lang', 'en-EN');

Database

This plugin will create the following tables.

- test_applications:

The table structure created is as follows:

| 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:

| 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:

| 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:

| Columns | Data type | | --- | --- | | option_id | INT(9) | | lic_id | INT(9) | | option_name | VARCHAR(180) | | option_value | LONGTEXT |

Tests

Para ejecutar las pruebas necesitarás Composer y seguir los siguientes pasos:

$ git clone https://github.com/eliasis-framework/license-handler.git

$ cd license-handler

$ composer install

Ejecutar pruebas unitarias con PHPUnit:

$ composer phpunit

Ejecutar pruebas de estándares de código PSR2 con PHPCS:

$ composer phpcs

Ejecutar pruebas con PHP Mess Detector para detectar inconsistencias en el estilo de codificación:

$ composer phpmd

Ejecutar todas las pruebas anteriores:

$ composer tests

? Tareas pendientes

  • [ ] Hacer funcionar PHPUnit en Travis CI.
  • [ ] Agregar métodos de obtención (getter).
  • [ ] Añadir nueva funcionalidad.
  • [ ] Mejorar pruebas.
  • [ ] Mejorar documentación.
  • [ ] Refactorizar código para las reglas de estilo de código deshabilitadas. Ver phpmd.xml y .php_cs.dist.

Contribuir

Si deseas colaborar, puedes echar un vistazo a la lista de issues o tareas pendientes.

Pull requests

  • Fork and clone.
  • Ejecuta el comando `composer install` para instalar dependencias. Esto también instalará las dependencias de desarrollo.
  • Ejecuta el comando `composer fix` para estandarizar el código.
  • Ejecuta las pruebas.
  • Crea una nueva rama (branch), commit, push y envíame un pull request.

Repositorio

La estructura de archivos de este repositorio se creó con PHP-Skeleton.

Licencia

Este proyecto está licenciado bajo licencia MIT. Consulta el archivo LICENSE para más información.

Copyright

2016 - 2018 Josantonius, josantonius.com

Si te ha resultado útil, házmelo saber :wink:

Puedes contactarme en Twitter o a través de mi correo electrónico.