initial commit

This commit is contained in:
greggy
2025-10-07 08:26:46 +02:00
parent ba8483bec2
commit d7682e2073
11 changed files with 399 additions and 160 deletions

165
cron-fetch-forcedbanner.php Normal file
View File

@@ -0,0 +1,165 @@
<?php
require_once 'doctrine-config.php';
use Entity\Werbenetzwerk;
use Entity\User;
use Entity\Kampagne;
try {
// Werbenetzwerk-Entity holen
// Werbenetzwerk-User holen
$werbenetzwerkUser = $entityManager->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);
}