false, 'message' => "Environment file not found" ]); exit; } try { $envDir = dirname($envFile); $dotenv = Dotenv::createImmutable($envDir, '.env.db-tables'); $dotenv->load(); } catch (Throwable $e) { http_response_code(500); echo json_encode([ 'success' => false, 'message' => "Dotenv error" ]); } $prefix = $_ENV['DB_PREFIX'] ?? ''; $tableDefinitions = [ 'Teilnehmende' => 'DB_TABLE_TEILNEHMENDE', 'Orders' => 'DB_TABLE_ORDERS', 'BasketItems' => 'DB_TABLE_BASKET_ITEMS', 'Var' => 'DB_TABLE_VARIABLES', 'OTL' => 'DB_TABLE_OTL', 'KrProtokoll' => 'DB_TABLE_KR_PROTOKOLL', 'Programme' => 'DB_TABLE_PROGRAMME', 'InternUsers' => 'DB_TABLE_INTERN_USERS', 'Vereine' => 'DB_TABLE_VEREINE', 'Abt' => 'DB_TABLE_ABTEILUNGEN', 'TeilnehmendeAbt' => 'DB_TABLE_TEILNEHMENDE_ABTEILUNGEN', 'Geraete' => 'DB_TABLE_GERAETE', 'Audiofiles' => 'DB_TABLE_AUDIOFILES', 'TeilnehmendeAudiofiles' => 'DB_TABLE_TEILNEHMENDE_AUDIOFILES', 'Noten' => 'DB_TABLE_NOTEN', 'NotenChanges' => 'DB_TABLE_NOTEN_CHANGES', 'NotenBezeichnungen' => 'DB_TABLE_NOTEN_BEZEICHNUNGEN', 'OrdersLog' => 'DB_TABLE_ORDERS_LOG', 'ZeitplanTypes' => 'DB_TABLE_ZEITPLAN_TYPES', 'AbtZeiten' => 'DB_TABLE_ABTEILUNGEN_ZEITEN', 'RankLiveConfigs' => 'DB_TABLE_RANKLIVE_CONFIGS' ]; foreach ($tableDefinitions as $baseName => $envVarKey) { $rawTableName = $_ENV[$envVarKey] ?? ''; $fullTableName = $prefix . $rawTableName; $variableName = 'table' . ucfirst($baseName); $$variableName = $fullTableName; }