init(); } /** * Initialize all plugin subsystems. * * @return void */ private function init(): void { // Load plugin textdomain for i18n translations. add_action( 'init', array( $this, 'load_textdomain' ) ); // Deferred upgrade check: runs only in admin context. add_action( 'admin_init', array( $this, 'maybe_upgrade' ) ); // Scaffolding settings register. \AISupportAssistant\Admin\Settings::get_instance(); // Scaffolding admin panels. if ( is_admin() ) { \AISupportAssistant\Admin\Menu::get_instance(); } // REST API controller. \AISupportAssistant\REST\RestController::get_instance(); // Shortcode and Frontend Widget. \AISupportAssistant\Frontend\Shortcode::get_instance(); \AISupportAssistant\Frontend\Block::get_instance(); } /** * Load translation textdomain. * * @return void */ public function load_textdomain(): void { // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound load_plugin_textdomain( 'ai-support-assistant', false, dirname( plugin_basename( AI_SUPPORT_ASSISTANT_FILE ) ) . '/languages' ); } /** * Run one-time data/schema migrations. * * @return void */ public function maybe_upgrade(): void { $db_version = get_option( 'ai_support_assistant_db_version', '0' ); if ( version_compare( $db_version, AI_SUPPORT_ASSISTANT_VERSION, '<' ) ) { \AISupportAssistant\Database\DatabaseManager::activate(); update_option( 'ai_support_assistant_db_version', AI_SUPPORT_ASSISTANT_VERSION ); } } /** * Static Plugin Activation Callback. */ public static function activate(): void { \AISupportAssistant\Database\DatabaseManager::activate(); update_option( 'ai_support_assistant_db_version', AI_SUPPORT_ASSISTANT_VERSION ); } /** * Static Plugin Deactivation Callback. */ public static function deactivate(): void { // Cleanup rewrite rules or temporary state if needed. } }