Files
proxmox-selfservice/support-provisioning-portal/includes/class-spp-plugin.php
Sven Steinert 2c1949bf1e new file: CHANGELOG.md
modified:   README.md
	modified:   support-provisioning-portal/assets/portal.css
	modified:   support-provisioning-portal/assets/portal.js
	modified:   support-provisioning-portal/includes/class-spp-activator.php
	modified:   support-provisioning-portal/includes/class-spp-admin-page.php
	modified:   support-provisioning-portal/includes/class-spp-http-proxmox-client.php
	modified:   support-provisioning-portal/includes/class-spp-mock-proxmox-client.php
	new file:   support-provisioning-portal/includes/class-spp-permissions.php
	modified:   support-provisioning-portal/includes/class-spp-plugin.php
	modified:   support-provisioning-portal/includes/class-spp-repository.php
	modified:   support-provisioning-portal/includes/class-spp-rest-controller.php
	modified:   support-provisioning-portal/includes/class-spp-shortcode.php
	modified:   support-provisioning-portal/includes/interface-spp-proxmox-client.php
	modified:   support-provisioning-portal/support-provisioning-portal.php
2026-04-24 15:13:42 +02:00

52 lines
1.5 KiB
PHP

<?php
if (!defined('ABSPATH')) {
exit;
}
final class SPP_Plugin
{
private static ?SPP_Plugin $instance = null;
public static function instance(): SPP_Plugin
{
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
public function boot(): void
{
SPP_Activator::maybe_upgrade();
$repository = new SPP_Repository();
$permissions = new SPP_Permissions();
$proxmox = $this->make_proxmox_client();
$expiration_service = new SPP_Expiration_Service($repository, $proxmox);
add_action('spp_expire_deployments', [$expiration_service, 'expire_due_deployments']);
(new SPP_REST_Controller($repository, $proxmox, $expiration_service, $permissions))->register_hooks();
(new SPP_Admin_Page($repository, $permissions, $proxmox))->register_hooks();
(new SPP_Shortcode($permissions))->register_hooks();
}
private function make_proxmox_client(): SPP_Proxmox_Client
{
$mode = get_option('spp_proxmox_mode', 'mock');
if ($mode === 'http') {
return new SPP_Http_Proxmox_Client([
'base_url' => (string) get_option('spp_proxmox_base_url', ''),
'token_id' => (string) get_option('spp_proxmox_token_id', ''),
'token_secret' => (string) get_option('spp_proxmox_token_secret', ''),
'node' => (string) get_option('spp_proxmox_node', ''),
]);
}
return new SPP_Mock_Proxmox_Client();
}
}