80 lines
3.1 KiB
PHP
Executable File
80 lines
3.1 KiB
PHP
Executable File
<?php
|
|
require_once('/opt/wevads/config/mta_helper.php');
|
|
require_once('/opt/wevads/public/api/adx-tag-engine.php');
|
|
/**
|
|
* BRAIN SEND v5 - ADX FORMAT with offer_creatives + tag engine
|
|
*/
|
|
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123");
|
|
$toEmail = $argv[3] ?? null;
|
|
$ispTarget = strtoupper($argv[2] ?? 'GMAIL');
|
|
$requestedOffer = $argv[1] ?? null;
|
|
|
|
$winner = $pdo->query("SELECT c.*, w.inbox_rate FROM admin.brain_configs c JOIN admin.brain_winners w ON w.config_id = c.id WHERE w.is_active = true ORDER BY w.inbox_rate DESC LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
|
if (!$winner) die("No winner\n");
|
|
|
|
// === ADX FORMAT: Use offer_creatives ===
|
|
$sql = $requestedOffer
|
|
? "SELECT oc.*, o.name as offer_name, o.tracking_url
|
|
FROM admin.offer_creatives oc
|
|
JOIN affiliate.offers o ON o.id = oc.offer_id
|
|
WHERE oc.offer_id = $requestedOffer AND oc.status='active' AND oc.html_body IS NOT NULL AND oc.html_body != ''
|
|
ORDER BY RANDOM() LIMIT 1"
|
|
: "SELECT oc.*, o.name as offer_name, o.tracking_url
|
|
FROM admin.offer_creatives oc
|
|
JOIN affiliate.offers o ON o.id = oc.offer_id
|
|
WHERE oc.status='active' AND oc.html_body IS NOT NULL AND oc.html_body != ''
|
|
ORDER BY RANDOM() LIMIT 1";
|
|
|
|
$cr = $pdo->query($sql)->fetch(PDO::FETCH_ASSOC);
|
|
if (!$cr) die("No active creative in offer_creatives\n");
|
|
|
|
$subject = $cr['subject_line'] ?? 'Special offer';
|
|
$fromName = $cr['from_name'] ?? 'Customer Support';
|
|
$domain = $cr['from_domain'] ?? 'culturellemejean.charity';
|
|
$fromEmail = "hello@$domain";
|
|
|
|
// Build ADX context for tag engine
|
|
$adxCtx = [
|
|
"domain" => $domain,
|
|
"email" => $toEmail,
|
|
"from_name" => $fromName,
|
|
"subject" => $subject,
|
|
"process_id" => rand(100,999),
|
|
"user_id" => 1,
|
|
"vmta_id" => rand(1,50),
|
|
"offer_id" => (int)($cr['offer_id'] ?? 0),
|
|
"list_id" => rand(1,10),
|
|
"client_id" => rand(10000,99999),
|
|
"process_type" => "md",
|
|
"link_type" => "routing",
|
|
"placeholders" => [
|
|
$cr["landing_url"] ?? $cr["tracking_url"] ?? "",
|
|
$cr["s3_image_url"] ?? "",
|
|
$cr["preheader"] ?? "",
|
|
$domain
|
|
],
|
|
"content_transfer_encoding" => "quoted-printable",
|
|
"content_type" => "text/html",
|
|
"charset" => "UTF-8"
|
|
];
|
|
|
|
$body = adx_replace_tags($cr['html_body'], $adxCtx);
|
|
$subject = adx_replace_tags($subject, $adxCtx);
|
|
|
|
echo "BRAIN v5 (ADX)\n";
|
|
echo " Offer: #{$cr['offer_id']} - " . substr($cr['offer_name'],0,45) . "\n";
|
|
echo " Creative: {$cr['creative_name']}\n";
|
|
echo " From: $fromName <$fromEmail>\n";
|
|
echo " Subject: $subject\n";
|
|
echo " To: $toEmail\n";
|
|
echo " HTML: " . strlen($body) . " bytes\n\n";
|
|
|
|
// Send via MTA-EU with DKIM
|
|
$response = mta_eu_send($toEmail, $subject, $body, $domain, $fromName, $fromEmail);
|
|
|
|
// Update stats
|
|
$pdo->exec("UPDATE admin.brain_winners SET times_used = times_used + 1, last_used_at = NOW() WHERE config_id = {$winner['id']}");
|
|
$pdo->prepare("UPDATE admin.offer_creatives SET times_used = COALESCE(times_used,0) + 1, last_used = NOW() WHERE id = ?")->execute([$cr['id']]);
|
|
|
|
echo strpos($response,'OK')!==false ? "ENVOYE!\n" : "FAIL: $response\n";
|