define_constants(); $this->setup_classes(); } /** * Define legacy admin core paths. Reuses the same constant names as * admin-loader.php so legacy files require no source changes — only the * resolved path differs. */ public function define_constants() { define( 'CARTFLOWS_ADMIN_CORE_DIR', CARTFLOWS_DIR . 'admin-legacy-core/' ); define( 'CARTFLOWS_ADMIN_CORE_URL', CARTFLOWS_URL . 'admin-legacy-core/' ); } /** * External code (importer, abilities runtime, SureTriggers compat) imports * CartflowsAdmin\AdminCore\Inc\* classes by FQN. Those classes don't exist * in legacy mode — autoload would miss and fatal on first reference. Alias * the legacy classes under the AdminCore FQN so external callers resolve * transparently regardless of which UI is active. */ public function alias_admin_core_classes() { $aliases = array( 'CartflowsAdmin\\AdminLegacyCore\\Inc\\AdminHelper' => 'CartflowsAdmin\\AdminCore\\Inc\\AdminHelper', 'CartflowsAdmin\\AdminLegacyCore\\Inc\\AdminMenu' => 'CartflowsAdmin\\AdminCore\\Inc\\AdminMenu', ); foreach ( $aliases as $source => $target ) { if ( ! class_exists( $target, false ) ) { class_alias( $source, $target ); } } } /** * Boot legacy admin classes. */ public function setup_classes() { $this->alias_admin_core_classes(); ApiInit::get_instance(); if ( is_admin() ) { StoreCheckout::get_instance(); AdminMenu::get_instance(); AjaxInit::get_instance(); WizardAjaxInit::get_instance(); WizardCore::get_instance(); } } } Admin_Legacy_Loader::get_instance();