container->set(SettingsController::class, function () { return new SettingsController(); }); $this->container->set(ConnectionController::class, function ($c) { return new ConnectionController( $c->get(ConnectionRepositoryInterface::class), $c->get(OAuthManager::class), $c->get(OAuthStateManager::class), $c->get(SheetsClientInterface::class) ); }); $this->container->set(QueueController::class, function ($c) { return new QueueController( $c->get(QueueRepositoryInterface::class), $c->get(QueueService::class) ); }); $this->container->set(AdminController::class, function ($c) { return new AdminController( $c->get(ConnectionRepositoryInterface::class), $c->get(QueueRepositoryInterface::class), $c->get(LogRepositoryInterface::class), $c->get(SettingsController::class), $c->get(ConnectionController::class), $c->get(QueueController::class) ); }); $this->container->set(MenuManager::class, function ($c) { return new MenuManager($c->get(AdminController::class)); }); } /** * @inheritDoc */ public function boot(): void { if (!is_admin()) { return; } // Hook menu registration at priority 9999 so parent menus (e.g. Forminator) are registered first. add_action('admin_menu', function () { $this->container->get(MenuManager::class)->registerMenus(); }, 9999); // Hook admin form actions processor. add_action('admin_init', function () { $this->container->get(AdminController::class)->handleAdminActions(); }); // Hook AJAX provider toggle action. add_action('wp_ajax_oneclickformsync_toggle_provider_ajax', function () { $this->container->get(AdminController::class)->handleToggleProviderAjax(); }); // Enqueue plugin stylesheet on plugin pages. add_action('admin_enqueue_scripts', function (string $hook) { if (strpos($hook, '1-click-form-sync') !== false) { $this->container->get(AdminController::class)->enqueueAssets(); } }); } }