Rename marketplace plugin to meetletacbfree (mdl_modules.name limit + CI table prefixes)
This commit is contained in:
@@ -4,12 +4,12 @@
|
||||
/**
|
||||
* HTTP client for MeetLet registration API.
|
||||
*
|
||||
* @package mod_meetletacbmarketplace
|
||||
* @package mod_meetletacbfree
|
||||
* @copyright 2026 MeetLet
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace mod_meetletacbmarketplace\registration;
|
||||
namespace mod_meetletacbfree\registration;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
/**
|
||||
* Ed25519 + canonical JSON helpers (compatible with @meetlet/crypto).
|
||||
*
|
||||
* @package mod_meetletacbmarketplace
|
||||
* @package mod_meetletacbfree
|
||||
* @copyright 2026 MeetLet
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace mod_meetletacbmarketplace\registration;
|
||||
namespace mod_meetletacbfree\registration;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
@@ -85,7 +85,7 @@ PEM;
|
||||
}
|
||||
$raw = base64_decode(strtr($b64, '-_', '+/'), true);
|
||||
if ($raw === false) {
|
||||
throw new \moodle_exception('registration_crypto_error', 'meetletacbmarketplace');
|
||||
throw new \moodle_exception('registration_crypto_error', 'meetletacbfree');
|
||||
}
|
||||
return $raw;
|
||||
}
|
||||
@@ -95,7 +95,7 @@ PEM;
|
||||
*/
|
||||
public static function generate_installation_keypair(): array {
|
||||
if (!function_exists('sodium_crypto_sign_keypair')) {
|
||||
throw new \moodle_exception('registration_sodium_required', 'meetletacbmarketplace');
|
||||
throw new \moodle_exception('registration_sodium_required', 'meetletacbfree');
|
||||
}
|
||||
$kp = sodium_crypto_sign_keypair();
|
||||
$secret = sodium_crypto_sign_secretkey($kp);
|
||||
@@ -129,7 +129,7 @@ PEM;
|
||||
$b64 = preg_replace('/\s+/', '', $b64);
|
||||
$der = base64_decode($b64, true);
|
||||
if ($der === false || strlen($der) < 32) {
|
||||
throw new \moodle_exception('registration_crypto_error', 'meetletacbmarketplace');
|
||||
throw new \moodle_exception('registration_crypto_error', 'meetletacbfree');
|
||||
}
|
||||
return substr($der, -32);
|
||||
}
|
||||
@@ -140,7 +140,7 @@ PEM;
|
||||
$b64 = preg_replace('/\s+/', '', $b64);
|
||||
$der = base64_decode($b64, true);
|
||||
if ($der === false || strlen($der) < 48) {
|
||||
throw new \moodle_exception('registration_crypto_error', 'meetletacbmarketplace');
|
||||
throw new \moodle_exception('registration_crypto_error', 'meetletacbfree');
|
||||
}
|
||||
$seed = substr($der, -32);
|
||||
$kp = sodium_crypto_sign_seed_keypair($seed);
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
/**
|
||||
* Map registration API / local error codes → product status and UX behaviour.
|
||||
*
|
||||
* @package mod_meetletacbmarketplace
|
||||
* @package mod_meetletacbfree
|
||||
* @copyright 2026 MeetLet
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace mod_meetletacbmarketplace\registration;
|
||||
namespace mod_meetletacbfree\registration;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
@@ -107,8 +107,8 @@ class error_mapper {
|
||||
}
|
||||
|
||||
public static function user_message(string $messagekey, string $fallback = ''): string {
|
||||
if ($messagekey !== '' && get_string_manager()->string_exists($messagekey, 'meetletacbmarketplace')) {
|
||||
return get_string($messagekey, 'meetletacbmarketplace');
|
||||
if ($messagekey !== '' && get_string_manager()->string_exists($messagekey, 'meetletacbfree')) {
|
||||
return get_string($messagekey, 'meetletacbfree');
|
||||
}
|
||||
return $fallback !== '' ? $fallback : $messagekey;
|
||||
}
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
* Hard-locks all plugin features until the administrator completes voluntary
|
||||
* online activation. After activation, every Marketplace feature unlocks.
|
||||
*
|
||||
* @package mod_meetletacbmarketplace
|
||||
* @package mod_meetletacbfree
|
||||
* @copyright 2026 MeetLet
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace mod_meetletacbmarketplace\registration;
|
||||
namespace mod_meetletacbfree\registration;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
@@ -28,7 +28,7 @@ class manager {
|
||||
public const DEFAULT_API_URL = 'https://license.webatsign.com';
|
||||
|
||||
public static function api_base_url(): string {
|
||||
$url = trim((string)get_config('meetletacbmarketplace', self::CONFIG_API_URL));
|
||||
$url = trim((string)get_config('meetletacbfree', self::CONFIG_API_URL));
|
||||
$url = rtrim($url, '/');
|
||||
return $url !== '' ? $url : self::DEFAULT_API_URL;
|
||||
}
|
||||
@@ -53,16 +53,16 @@ class manager {
|
||||
*/
|
||||
public static function settings_tab_url(string $tab): \moodle_url {
|
||||
return new \moodle_url('/admin/settings.php', [
|
||||
'section' => 'modsettingmeetletacbmarketplace',
|
||||
'section' => 'modsettingmeetletacbfree',
|
||||
], $tab);
|
||||
}
|
||||
|
||||
public static function settings_url(): \moodle_url {
|
||||
return self::settings_tab_url('meetletacbmarketplace_registration');
|
||||
return self::settings_tab_url('meetletacbfree_registration');
|
||||
}
|
||||
|
||||
public static function privacy_tab_url(): \moodle_url {
|
||||
return self::settings_tab_url('meetletacbmarketplace_privacy');
|
||||
return self::settings_tab_url('meetletacbfree_privacy');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,7 +82,7 @@ class manager {
|
||||
if (self::is_registered()) {
|
||||
return;
|
||||
}
|
||||
throw new \moodle_exception('registration_required', 'meetletacbmarketplace', self::settings_url());
|
||||
throw new \moodle_exception('registration_required', 'meetletacbfree', self::settings_url());
|
||||
}
|
||||
|
||||
/** @deprecated Use require_registered() */
|
||||
@@ -96,9 +96,9 @@ class manager {
|
||||
}
|
||||
$url = self::settings_url();
|
||||
return \html_writer::div(
|
||||
\html_writer::tag('strong', get_string('registration_gate_title', 'meetletacbmarketplace')) .
|
||||
' ' . get_string('registration_gate_body', 'meetletacbmarketplace') . ' ' .
|
||||
\html_writer::link($url, get_string('registration_gate_link', 'meetletacbmarketplace')),
|
||||
\html_writer::tag('strong', get_string('registration_gate_title', 'meetletacbfree')) .
|
||||
' ' . get_string('registration_gate_body', 'meetletacbfree') . ' ' .
|
||||
\html_writer::link($url, get_string('registration_gate_link', 'meetletacbfree')),
|
||||
'alert alert-warning meetlet-registration-gate mb-3'
|
||||
);
|
||||
}
|
||||
@@ -113,7 +113,7 @@ class manager {
|
||||
|
||||
public static function activate(): array {
|
||||
if (self::is_registered()) {
|
||||
throw new \moodle_exception('registration_already_active', 'meetletacbmarketplace');
|
||||
throw new \moodle_exception('registration_already_active', 'meetletacbfree');
|
||||
}
|
||||
$row = store::get_record();
|
||||
$stale = $row && in_array($row->status ?? '', [
|
||||
@@ -194,7 +194,7 @@ class manager {
|
||||
'status' => $status,
|
||||
'status_label' => self::status_label($active ? error_mapper::STATUS_ACTIVE : $status),
|
||||
'product' => $active ? self::PRODUCT_SLUG : '',
|
||||
'product_label' => $active ? get_string('registration_product_free', 'meetletacbmarketplace') : '',
|
||||
'product_label' => $active ? get_string('registration_product_free', 'meetletacbfree') : '',
|
||||
'can_deactivate' => self::can_deactivate($row),
|
||||
'auth_expires_at' => self::parse_unix_timestamp($payload['expires_at'] ?? null),
|
||||
'features' => is_array($payload['features'] ?? null) ? $payload['features'] : [],
|
||||
@@ -263,8 +263,8 @@ class manager {
|
||||
|
||||
public static function status_label(string $status): string {
|
||||
$key = 'registration_status_' . $status;
|
||||
if (get_string_manager()->string_exists($key, 'meetletacbmarketplace')) {
|
||||
return get_string($key, 'meetletacbmarketplace');
|
||||
if (get_string_manager()->string_exists($key, 'meetletacbfree')) {
|
||||
return get_string($key, 'meetletacbfree');
|
||||
}
|
||||
return $status;
|
||||
}
|
||||
@@ -301,7 +301,7 @@ class manager {
|
||||
if ($expires !== null && time() >= $expires) {
|
||||
self::invalidate_local([
|
||||
'code' => 'LICENSE_EXPIRED',
|
||||
'message' => get_string('registration_err_expired', 'meetletacbmarketplace'),
|
||||
'message' => get_string('registration_err_expired', 'meetletacbfree'),
|
||||
'at' => time(),
|
||||
], error_mapper::STATUS_EXPIRED);
|
||||
return true;
|
||||
@@ -424,7 +424,7 @@ class manager {
|
||||
'runtime' => 'php',
|
||||
'runtime_version' => PHP_VERSION,
|
||||
'metadata' => [
|
||||
'plugin' => 'mod_meetletacbmarketplace',
|
||||
'plugin' => 'mod_meetletacbfree',
|
||||
'plugin_release' => self::plugin_release(),
|
||||
],
|
||||
];
|
||||
@@ -555,7 +555,7 @@ class manager {
|
||||
*/
|
||||
protected static function status_error_message(string $status, ?array $lasterror): ?string {
|
||||
if ($status === error_mapper::STATUS_EXPIRED) {
|
||||
return get_string('registration_err_expired', 'meetletacbmarketplace');
|
||||
return get_string('registration_err_expired', 'meetletacbfree');
|
||||
}
|
||||
return $lasterror['message'] ?? null;
|
||||
}
|
||||
@@ -603,14 +603,14 @@ class manager {
|
||||
public static function plugin_release(): string {
|
||||
global $CFG;
|
||||
$plugin = new \stdClass();
|
||||
$versionfile = $CFG->dirroot . '/mod/meetletacbmarketplace/version.php';
|
||||
$versionfile = $CFG->dirroot . '/mod/meetletacbfree/version.php';
|
||||
if (is_readable($versionfile)) {
|
||||
include($versionfile);
|
||||
}
|
||||
if (!empty($plugin->release)) {
|
||||
return (string)$plugin->release;
|
||||
}
|
||||
$ver = get_config('meetletacbmarketplace', 'version');
|
||||
$ver = get_config('meetletacbfree', 'version');
|
||||
return $ver !== false ? (string)$ver : '0';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
/**
|
||||
* Structured registration API / local client exception.
|
||||
*
|
||||
* @package mod_meetletacbmarketplace
|
||||
* @package mod_meetletacbfree
|
||||
* @copyright 2026 MeetLet
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace mod_meetletacbmarketplace\registration;
|
||||
namespace mod_meetletacbfree\registration;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
@@ -40,7 +40,7 @@ class registration_exception extends \moodle_exception {
|
||||
$this->requestid = $requestid !== null && $requestid !== '' ? $requestid : null;
|
||||
parent::__construct(
|
||||
'registration_api_error',
|
||||
'meetletacbmarketplace',
|
||||
'meetletacbfree',
|
||||
'',
|
||||
$this->apicode . ': ' . $this->apimessage
|
||||
);
|
||||
|
||||
@@ -4,20 +4,20 @@
|
||||
/**
|
||||
* Persist MeetLet installation identity + cached runtime authorization.
|
||||
*
|
||||
* @package mod_meetletacbmarketplace
|
||||
* @package mod_meetletacbfree
|
||||
* @copyright 2026 MeetLet
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace mod_meetletacbmarketplace\registration;
|
||||
namespace mod_meetletacbfree\registration;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
* Single-row registration store in meetlet_marketplace_license.
|
||||
* Single-row registration store in meetletacbfree_license.
|
||||
*/
|
||||
class store {
|
||||
public const TABLE = 'meetlet_marketplace_license';
|
||||
public const TABLE = 'meetletacbfree_license';
|
||||
|
||||
/**
|
||||
* @return \stdClass|null
|
||||
|
||||
Reference in New Issue
Block a user