loader = new Loader(); } public function run(): void { $this->load_dependencies(); $this->set_locale(); $this->loader->run(); } private function load_dependencies(): void { $this->load_onboarding_dependencies(); $this->load_public_dependencies(); if ( is_admin() ) { $this->load_admin_dependencies(); } if ( defined( 'WP_CLI' ) && WP_CLI ) { new Cli(); } } private function set_locale() { $plugin_i18n = new I18n(); $this->loader->add_action( 'init', $plugin_i18n, 'load_plugin_textdomain' ); } private function surveys(): void { $helper = new Helper(); $config = new Config(); $client = new Client( $config->getConfigValue( 'base_rest_uri', Constants::HOSTINGER_REST_URI ), [ Config::TOKEN_HEADER => $helper->getApiToken(), Config::DOMAIN_HEADER => $helper->getHostInfo(), ] ); if ( class_exists( SurveyManager::class ) ) { $surveysRest = new SurveysRest( $client ); $surveyManager = new SurveyManager( $helper, $config, $surveysRest ); $surveys = new Surveys( $surveyManager ); $surveys->init(); } } private function load_admin_dependencies(): void { $this->surveys(); new AdminAssets(); new AdminHooks(); new AdminMenu(); new AdminRedirects(); new AdminAjax(); new Partnership(); } private function load_public_dependencies(): void { new PreviewAssets(); new Hooks(); new Updates(); $welcome_routes = new WelcomeRoutes(); $step_routes = new StepRoutes(); $woo_routes = new WooRoutes(); $tutorial_routes = new TutorialRoutes(); $routes = new Routes( $welcome_routes, $step_routes, $woo_routes, $tutorial_routes ); $routes->init(); } private function load_onboarding_dependencies(): void { new AutocompleteSteps(); } }