add_authorize_rewrite(); flush_rewrite_rules(); } register_activation_hook( __FILE__, 'abilities_bridge_activate' ); /** * Plugin deactivation hook. * * @return void */ function abilities_bridge_deactivate() { // Unschedule cleanup cron job. require_once ABILITIES_BRIDGE_PLUGIN_DIR . 'includes/class-abilities-bridge-log-cleanup.php'; Abilities_Bridge_Log_Cleanup::unschedule(); wp_unschedule_hook( 'abilities_bridge_run_chat_job' ); wp_unschedule_hook( 'abilities_bridge_recover_openai_chat_job' ); flush_rewrite_rules(); } register_deactivation_hook( __FILE__, 'abilities_bridge_deactivate' ); /** * Initialize the plugin. * * @return void */ function abilities_bridge_init() { require_once ABILITIES_BRIDGE_PLUGIN_DIR . 'includes/class-abilities-bridge.php'; Abilities_Bridge::get_instance(); // Initialize log cleanup cron job. require_once ABILITIES_BRIDGE_PLUGIN_DIR . 'includes/class-abilities-bridge-log-cleanup.php'; // Schedule OAuth cleanup (runs daily). if ( ! wp_next_scheduled( 'abilities_bridge_oauth_cleanup' ) ) { wp_schedule_event( time(), 'daily', 'abilities_bridge_oauth_cleanup' ); } // Hook OAuth cleanup tasks. add_action( 'abilities_bridge_oauth_cleanup', 'abilities_bridge_run_oauth_cleanup' ); // Initialize MCP integration if MCP Adapter is available. if ( class_exists( '\WP\MCP\Core\McpAdapter' ) ) { require_once ABILITIES_BRIDGE_PLUGIN_DIR . 'includes/class-abilities-bridge-mcp-integration.php'; } // Initialize admin interface. if ( is_admin() ) { require_once ABILITIES_BRIDGE_PLUGIN_DIR . 'admin/class-abilities-bridge-welcome-wizard.php'; require_once ABILITIES_BRIDGE_PLUGIN_DIR . 'admin/class-abilities-bridge-ability-permissions-admin.php'; require_once ABILITIES_BRIDGE_PLUGIN_DIR . 'admin/class-abilities-bridge-activity-log-page.php'; } // Register default abilities if flag is set. if ( get_option( 'abilities_bridge_needs_ability_registration' ) ) { add_action( 'admin_init', function () { if ( current_user_can( 'manage_options' ) ) { require_once ABILITIES_BRIDGE_PLUGIN_DIR . 'includes/class-abilities-bridge-mcp-integration.php'; Abilities_Bridge_MCP_Integration::register_default_abilities(); delete_option( 'abilities_bridge_needs_ability_registration' ); } } ); } } add_action( 'plugins_loaded', 'abilities_bridge_init' ); /** * Run OAuth cleanup tasks. * * @return void */ function abilities_bridge_run_oauth_cleanup() { // Cleanup expired authorization codes. $code_manager = new Abilities_Bridge_OAuth_Authorization_Code(); $code_manager->cleanup_expired_codes(); // Cleanup rate limit data. $rate_limiter = new Abilities_Bridge_OAuth_Rate_Limiter(); $rate_limiter->cleanup_expired_data(); // Cleanup old OAuth logs. $logger = new Abilities_Bridge_OAuth_Logger(); $logger->cleanup_old_logs(); // Cleanup expired pending OAuth state (abandoned authorization flows). Abilities_Bridge_Pending_Store::cleanup_expired(); // Cleanup expired access and refresh tokens. Abilities_Bridge_OAuth_Client_Manager::cleanup_expired_tokens(); }