bavarianrankengine/bavarian-rank-engine/includes/Core.php

79 lines
3.1 KiB
PHP

<?php
namespace BavarianRankEngine;
class Core {
private static ?Core $instance = null;
public static function instance(): self {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
public function init(): void {
$this->load_dependencies();
$this->register_hooks();
}
private function load_dependencies(): void {
require_once BRE_DIR . 'includes/Providers/ProviderInterface.php';
require_once BRE_DIR . 'includes/Providers/ProviderRegistry.php';
require_once BRE_DIR . 'includes/Providers/OpenAIProvider.php';
require_once BRE_DIR . 'includes/Providers/AnthropicProvider.php';
require_once BRE_DIR . 'includes/Providers/GeminiProvider.php';
require_once BRE_DIR . 'includes/Providers/GrokProvider.php';
require_once BRE_DIR . 'includes/Helpers/KeyVault.php';
require_once BRE_DIR . 'includes/Helpers/TokenEstimator.php';
require_once BRE_DIR . 'includes/Helpers/FallbackMeta.php';
require_once BRE_DIR . 'includes/Helpers/BulkQueue.php';
require_once BRE_DIR . 'includes/Features/MetaGenerator.php';
require_once BRE_DIR . 'includes/Features/SchemaEnhancer.php';
require_once BRE_DIR . 'includes/Features/LlmsTxt.php';
require_once BRE_DIR . 'includes/Features/RobotsTxt.php';
require_once BRE_DIR . 'includes/Features/CrawlerLog.php';
require_once BRE_DIR . 'includes/Features/GeoBlock.php';
require_once BRE_DIR . 'includes/Admin/SettingsPage.php';
require_once BRE_DIR . 'includes/Admin/AdminMenu.php';
require_once BRE_DIR . 'includes/Admin/ProviderPage.php';
require_once BRE_DIR . 'includes/Admin/MetaPage.php';
require_once BRE_DIR . 'includes/Admin/BulkPage.php';
require_once BRE_DIR . 'includes/Admin/LlmsPage.php';
require_once BRE_DIR . 'includes/Admin/MetaEditorBox.php';
require_once BRE_DIR . 'includes/Admin/SeoWidget.php';
require_once BRE_DIR . 'includes/Admin/LinkAnalysis.php';
require_once BRE_DIR . 'includes/Admin/RobotsPage.php';
require_once BRE_DIR . 'includes/Admin/GeoPage.php';
require_once BRE_DIR . 'includes/Admin/GeoEditorBox.php';
}
private function register_hooks(): void {
$registry = ProviderRegistry::instance();
$registry->register( new Providers\OpenAIProvider() );
$registry->register( new Providers\AnthropicProvider() );
$registry->register( new Providers\GeminiProvider() );
$registry->register( new Providers\GrokProvider() );
( new Features\MetaGenerator() )->register();
( new Features\SchemaEnhancer() )->register();
( new Features\LlmsTxt() )->register();
( new Features\RobotsTxt() )->register();
( new Features\CrawlerLog() )->register();
( new Features\GeoBlock() )->register();
if ( is_admin() ) {
$menu = new Admin\AdminMenu();
$menu->register();
( new Admin\ProviderPage() )->register();
( new Admin\MetaPage() )->register();
( new Admin\BulkPage() )->register();
( new Admin\LlmsPage() )->register();
( new Admin\MetaEditorBox() )->register();
( new Admin\SeoWidget() )->register();
( new Admin\LinkAnalysis() )->register();
( new Admin\RobotsPage() )->register();
( new Admin\GeoPage() )->register();
( new Admin\GeoEditorBox() )->register();
}
}
}