Files
WooNooW/includes/Modules/SoftwareSettings.php

114 lines
3.0 KiB
PHP

<?php
/**
* Software Distribution Settings Schema
*
* @package WooNooW\Modules
*/
namespace WooNooW\Modules;
if (!defined('ABSPATH')) exit;
use WooNooW\Core\ModuleRegistry;
class SoftwareSettings
{
private static $option_key = 'woonoow_module_software_settings';
/**
* Initialize settings
*/
public static function init()
{
// Register module with ModuleRegistry
add_filter('woonoow/modules/registry', [__CLASS__, 'register_module']);
}
/**
* Register the software module
*/
public static function register_module($modules)
{
$modules['software'] = [
'id' => 'software',
'name' => __('Software Distribution', 'woonoow'),
'description' => __('Sell and distribute software with version tracking, changelogs, and automatic update checking. Works with any software type.', 'woonoow'),
'icon' => 'Package',
'category' => 'sales',
'requires' => ['licensing'], // Depends on licensing module
'settings' => self::get_settings_schema(),
];
return $modules;
}
/**
* Get settings schema
*/
public static function get_settings_schema()
{
return [
[
'id' => 'rate_limit',
'type' => 'number',
'label' => __('API Rate Limit', 'woonoow'),
'description' => __('Maximum update check requests per minute per license', 'woonoow'),
'default' => 10,
'min' => 1,
'max' => 100,
],
[
'id' => 'token_expiry',
'type' => 'number',
'label' => __('Download Token Expiry', 'woonoow'),
'description' => __('Minutes until download token expires (default: 5)', 'woonoow'),
'default' => 5,
'min' => 1,
'max' => 60,
],
[
'id' => 'cache_ttl',
'type' => 'number',
'label' => __('Client Cache TTL', 'woonoow'),
'description' => __('Hours to cache update check results on client (default: 12)', 'woonoow'),
'default' => 12,
'min' => 1,
'max' => 168,
],
];
}
/**
* Get current settings
*/
public static function get_settings()
{
$defaults = [
'rate_limit' => 10,
'token_expiry' => 5,
'cache_ttl' => 12,
];
$settings = get_option(self::$option_key, []);
return wp_parse_args($settings, $defaults);
}
/**
* Save settings
*/
public static function save_settings($settings)
{
$sanitized = [
'rate_limit' => absint($settings['rate_limit'] ?? 10),
'token_expiry' => absint($settings['token_expiry'] ?? 5),
'cache_ttl' => absint($settings['cache_ttl'] ?? 12),
];
update_option(self::$option_key, $sanitized);
return $sanitized;
}
}