Генерация лицензионного ключа. PHP код.

SW JProjects - Документация
Категория: Компоненты

Как создать новый лицензионный ключ для одного или нескольких проектов. Пример кода для разработчиков для использования в своих программных решениях.

Чаще всего лицензионные ключи предоставляются пользователям на платной основе. Компонент SW JProjects на данный момент не предоставляет функционал приёма платежей и генерации ключей после успешной оплаты. Однако, вы можете легко автоматизировать этот процесс, организовав приём платежей с помощью любого другого компонента электронной коммерции.

Как правило во всех таких компонентах после события оплаты происходит вызов события для системы плагинов Joomla (паттерн Event Dispathcing). При вызове события срабатывают все плагины группы system и плагины конкретной группы, подписанные на это событие. Таким образом вам достаточно написать плагин для своего компонента, который в нужный момент и при соответствии нужным условиям автоматически создаст лицензионный ключ.

Пример кода для создания лицензионного ключа

Предполагается, что данный код находится в плагине. Однако, его можно использовать и в других местах Joomla с небольшими доработками.

<?php

use Joomla\CMS\Router\Route;
use Joomla\Component\SWJProjects\Site\Helper\RouteHelper;

/**
 * Generate download key for SW JProejects project
 *
 * @param   int     $order_number  Order number
 * @param   int     $project_id    Project id. Or it can be an array of projects ids
 * @param   string  $email         Customer email
 * @param   string  $note          Your admin note for this key
 * @param   string  $domain        WWW-domain for key if you need
 * @param   string  $date_start    Key expiration date start
 * @param   string  $date_end      Key expiration date end
 * @param   int     $user_id       Joomla user id
 *
 */

$modelProject = $this->getApplication()
    ->bootComponent('com_swjprojects')
    ->getMVCFactory()
    ->createModel('Project', 'Site', ['ignore_request' => false]);

/** @var array $keyData Data we will return for customer after successful payment */
$keyData = [];

if (!$project = $modelProject->getItem($project_id)) {
    // We have tried to create a key for non-existent project
    return;
}
/** @var \Joomla\Component\SWJProjects\Administrator\Model\KeyModel $modelKey */
$modelKey = $this->getApplication()
    ->bootComponent('com_swjprojects')
    ->getMVCFactory()
    ->createModel('Key', 'Administrator', ['ignore_request' => true]);

$data     = [
    // string empty for new key
    'key'        => '',
    // int 0 for new key
    'id'         => 0,
    // array Array of project ids
    'projects'   => [$project_id],
    'order'      => $order_number,
    'email'      => $email,
    'date_start' => $date_start,
    'date_end'   => $date_end,
    // int Published or not.
    // If not, you will receive an error
    // when you try to download a file using this key.
    'state'      => 1,
    // Your admin note for this key
    'note'       => $note,
    // WWW-domain for key if you need
    'domain'     => $domain,
];

// Bind the Joomla user id
if ($user_id > 0) {
    $data['user'] = $user_id;
}

// Save data
if ($modelKey->save($data)) {
    $key = $modelKey->getItem();
    // Get the download link with download key for this project.
    // If you generate a key for multiple projects -
    // create a download link for each project in a loop
    $downloadLink = Route::_(
        RouteHelper::getDownloadRoute(
            null,
            $project_id,
            $project->element,
            $key->key
        )
    );

    $keyData['key']           = $key;
    $keyData['download_link'] = $downloadLink;
}

 

 

Расширения Joomla WebTolk

95 Всего расширений
11 Категорий
471 Выпущено версий
503633 Всего скачиваний
Корзина
Корзина пуста