getRepository(User::class)->findByUsername('adcity-eu'); if (!$werbenetzwerkUser) { echo "werbenetzwerkUser-Daten nicht gefunden.\n"; exit(1); } $werbenetzwerk = $entityManager->getRepository(Werbenetzwerk::class)->findByUser($werbenetzwerkUser); if (!$werbenetzwerk) { echo "Werbenetzwerk-Daten nicht gefunden.\n"; exit(1); } if (!$werbenetzwerkUser) { echo "Kein Werbenetzwerk-User gefunden.\n"; exit(1); } // API-Parameter vorbereiten $apiUrl = 'https://www.adcity.eu/interface/'; $params = [ 'typ' => 'forcedtextlink', 'id' => $werbenetzwerk->getUserId(), 'pw' => $werbenetzwerk->getInterfacepasswort(), 'uebrig' => 20, 'reload' => 99999, 'verguetung' => 0.0001, 'ma' => 99999 ]; $fullUrl = $apiUrl . '?' . http_build_query($params); // API-Anfrage durchführen $response = file_get_contents($fullUrl); if ($response === false) { echo "Fehler beim Abrufen der API-Daten.\n"; exit(1); } echo "Response received:\n"; echo $response . "\n\n"; // Flatfile-Response parsen (alle Kampagnen pipe-getrennt in einer Zeile) $parts = explode('|', trim($response)); $kampagnenCount = 0; $updatedCount = 0; $createdCount = 0; // Durch alle Kampagnen iterieren (je 5, 6 oder 7 Felder pro Kampagne) $i = 0; while ($i < count($parts)) { // Mindestens 5 Felder erforderlich if ($i + 4 >= count($parts)) { break; } // Erste 5 Felder auslesen $kid = $parts[$i]; $linktext = $parts[$i + 1]; $reload = (int) $parts[$i + 2]; $uebrig = (int) $parts[$i + 3]; $verdienst = (float) $parts[$i + 4]; // Prüfen ob MA-Feld vorhanden ist (6. Feld) $ma = 0; $mailtext = null; $fieldsConsumed = 5; // Heuristik: Wenn das nächste Feld numerisch ist und klein, ist es wahrscheinlich MA if ($i + 5 < count($parts) && is_numeric($parts[$i + 5]) && $parts[$i + 5] < 1000) { $ma = (int) $parts[$i + 5]; $fieldsConsumed = 6; // Prüfen ob Nachrichtentext vorhanden ist (7. Feld) if ($i + 6 < count($parts) && !is_numeric($parts[$i + 6])) { $mailtext = $parts[$i + 6]; $fieldsConsumed = 7; } } $i += $fieldsConsumed; $kampagnenCount++; // Link-URL und Bild-URL generieren (USERID und SEITENID werden später beim Einbau ersetzt) $destUrl = "https://www.adcity.eu/codes/forcedtextlinkklick.php?id={USERID}&bid=$kid&aid={SEITENID}"; echo "Processing: $linktext (KID: $kid, MA: $ma, Reload: $reload, Uebrig: $uebrig)\n"; // Prüfen ob Kampagne bereits existiert (anhand user_id, KID und is_tr=1) $existingKampagne = $entityManager->getRepository(Kampagne::class) ->findOneBy([ 'user' => $werbenetzwerkUser, 'kid' => $kid, 'is_tr' => true ]); if ($existingKampagne) { // Kampagne aktualisieren (verguetung, reload, uebrig) $existingKampagne->setVerguetung($verdienst); $existingKampagne->setReload($reload); $existingKampagne->setUebrig($uebrig); $existingKampagne->setLinktext($linktext); $existingKampagne->setMa($ma); if ($mailtext) { $existingKampagne->setMailtext($mailtext); $existingKampagne->setIsMail(true); } $entityManager->persist($existingKampagne); $updatedCount++; echo " → Updated existing campaign (verguetung: $verdienst, reload: $reload, uebrig: $uebrig)\n"; } else { // Neue Kampagne erstellen $kampagne = new Kampagne(); $kampagne->setDestUrl($destUrl); $kampagne->setKid($kid); $kampagne->setLinktext($linktext); $kampagne->setMa($ma); $kampagne->setReload($reload); $kampagne->setVerguetung($verdienst); $kampagne->setUebrig($uebrig); $kampagne->setIsFb(false); $kampagne->setIsTr(true); $kampagne->setIsMail(false); if ($mailtext) { $kampagne->setMailtext($mailtext); $kampagne->setIsMail(true); } $kampagne->setUser($werbenetzwerkUser); $entityManager->persist($kampagne); $createdCount++; echo " → Created new campaign\n"; } } $entityManager->flush(); echo "\n=== Summary ===\n"; echo "Total campaigns processed: $kampagnenCount\n"; echo "Created: $createdCount\n"; echo "Updated: $updatedCount\n"; echo "\nCron job completed successfully.\n"; } catch (\Exception $e) { echo "Fehler: " . $e->getMessage() . "\n"; echo $e->getTraceAsString() . "\n"; exit(1); }