Files
wevads-platform/scripts/sync-wevads-data.php
2026-02-26 04:53:11 +01:00

208 lines
7.2 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* SYNC WEVADS DATA TO DELIVERADS
* Import existing configuration and data
*/
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123", [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
echo "🔄 SYNCING WEVADS DATA TO DELIVERADS...\n\n";
// ============================================
// 1. SYNC AI PROVIDER KEYS
// ============================================
echo "1⃣ Syncing AI Provider Keys...\n";
// Check possible source tables
$sources = ['hamid_providers', 'ai_providers', 'api_providers', 'ai_config'];
$foundTable = null;
foreach ($sources as $table) {
try {
$count = $pdo->query("SELECT COUNT(*) FROM admin.$table")->fetchColumn();
if ($count > 0) {
$foundTable = $table;
echo " Found: admin.$table ($count records)\n";
break;
}
} catch (Exception $e) {
continue;
}
}
if ($foundTable) {
// Get column names
$cols = $pdo->query("SELECT column_name FROM information_schema.columns WHERE table_schema = 'admin' AND table_name = '$foundTable'")->fetchAll(PDO::FETCH_COLUMN);
echo " Columns: " . implode(', ', $cols) . "\n";
// Show data
$data = $pdo->query("SELECT * FROM admin.$foundTable LIMIT 5")->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $row) {
$name = $row['provider_name'] ?? $row['name'] ?? $row['provider'] ?? 'unknown';
$hasKey = !empty($row['api_key']);
echo " - $name: " . ($hasKey ? '✓ Key configured' : '✗ No key') . "\n";
}
}
// ============================================
// 2. SYNC HUAWEI ACCOUNTS
// ============================================
echo "\n2⃣ Syncing Huawei Accounts...\n";
try {
$huawei = $pdo->query("SELECT * FROM admin.huawei_accounts WHERE is_active = true")->fetchAll(PDO::FETCH_ASSOC);
echo " Found " . count($huawei) . " active Huawei accounts\n";
foreach ($huawei as $acc) {
$name = $acc['name'] ?? 'Main';
$region = $acc['region'] ?? $acc['default_region'] ?? 'af-south-1';
$hasAK = !empty($acc['ak']) || !empty($acc['access_key']);
echo " - $name ($region): " . ($hasAK ? '✓ Configured' : '✗ No credentials') . "\n";
}
} catch (Exception $e) {
echo " ⚠ No Huawei accounts table found\n";
}
// ============================================
// 3. SYNC O365 ACCOUNTS
// ============================================
echo "\n3⃣ Syncing O365 Accounts...\n";
$o365Tables = ['o365_accounts', 'office365_accounts', 'smtp_accounts'];
foreach ($o365Tables as $table) {
try {
$count = $pdo->query("SELECT COUNT(*) FROM admin.$table")->fetchColumn();
if ($count > 0) {
echo " Found: admin.$table ($count accounts)\n";
// Get status breakdown
try {
$statuses = $pdo->query("SELECT status, COUNT(*) as cnt FROM admin.$table GROUP BY status")->fetchAll(PDO::FETCH_ASSOC);
foreach ($statuses as $s) {
echo " - {$s['status']}: {$s['cnt']} accounts\n";
}
} catch (Exception $e) {
// No status column
}
// Check for aged accounts
try {
$aged = $pdo->query("SELECT COUNT(*) FROM admin.$table WHERE created_at < NOW() - INTERVAL '90 days'")->fetchColumn();
echo " - Aged (90+ days): $aged accounts\n";
} catch (Exception $e) {}
break;
}
} catch (Exception $e) {
continue;
}
}
// ============================================
// 4. SYNC SPONSORS & OFFERS
// ============================================
echo "\n4⃣ Syncing Sponsors & Offers...\n";
try {
$sponsors = $pdo->query("SELECT * FROM admin.sponsors WHERE is_active = true OR is_active IS NULL")->fetchAll(PDO::FETCH_ASSOC);
echo " Found " . count($sponsors) . " sponsors\n";
foreach ($sponsors as $sp) {
$name = $sp['name'] ?? $sp['sponsor_name'] ?? 'Unknown';
echo " - $name\n";
}
} catch (Exception $e) {
echo " ⚠ Checking alternate tables...\n";
}
try {
$offers = $pdo->query("SELECT COUNT(*) FROM admin.offers")->fetchColumn();
echo " Found $offers offers total\n";
// Get by vertical
$verticals = $pdo->query("SELECT vertical, COUNT(*) as cnt FROM admin.offers GROUP BY vertical ORDER BY cnt DESC LIMIT 5")->fetchAll(PDO::FETCH_ASSOC);
foreach ($verticals as $v) {
echo " - {$v['vertical']}: {$v['cnt']} offers\n";
}
} catch (Exception $e) {}
// ============================================
// 5. SYNC EMAIL DATA
// ============================================
echo "\n5⃣ Syncing Email Data...\n";
$dataTables = ['emails', 'contacts', 'data_profiles', 'subscribers', 'leads'];
foreach ($dataTables as $table) {
try {
$count = $pdo->query("SELECT COUNT(*) FROM admin.$table")->fetchColumn();
if ($count > 0) {
echo " Found: admin.$table ($count records)\n";
break;
}
} catch (Exception $e) {
continue;
}
}
// ============================================
// 6. SYNC DOMAINS
// ============================================
echo "\n6⃣ Syncing Domains...\n";
try {
$domains = $pdo->query("SELECT COUNT(*) FROM admin.domains")->fetchColumn();
echo " Found $domains domains\n";
$active = $pdo->query("SELECT domain, status FROM admin.domains WHERE status = 'active' OR is_active = true LIMIT 10")->fetchAll(PDO::FETCH_ASSOC);
foreach ($active as $d) {
echo " - {$d['domain']}\n";
}
} catch (Exception $e) {
echo " ⚠ No domains table found\n";
}
// ============================================
// 7. SYNC CLOUDFLARE
// ============================================
echo "\n7⃣ Syncing Cloudflare...\n";
try {
$cf = $pdo->query("SELECT * FROM admin.cloudflare_accounts LIMIT 1")->fetch(PDO::FETCH_ASSOC);
if ($cf) {
echo " Found Cloudflare config\n";
echo " - Email: " . ($cf['email'] ?? 'N/A') . "\n";
$hasKey = !empty($cf['api_key']) || !empty($cf['api_token']);
echo " - API: " . ($hasKey ? '✓ Configured' : '✗ Not configured') . "\n";
}
} catch (Exception $e) {
echo " ⚠ No Cloudflare config found\n";
}
// ============================================
// 8. CHECK WINNING CONFIGS
// ============================================
echo "\n8⃣ Checking Winning Configurations...\n";
try {
// Check for campaign stats
$stats = $pdo->query("SELECT * FROM admin.campaign_stats ORDER BY open_rate DESC LIMIT 5")->fetchAll(PDO::FETCH_ASSOC);
if ($stats) {
echo " Top performing campaigns:\n";
foreach ($stats as $s) {
echo " - Campaign {$s['campaign_id']}: {$s['open_rate']}% open rate\n";
}
}
} catch (Exception $e) {}
try {
// Check ISP performance
$isp = $pdo->query("SELECT isp, AVG(success_rate) as rate FROM admin.isp_stats GROUP BY isp ORDER BY rate DESC LIMIT 5")->fetchAll(PDO::FETCH_ASSOC);
if ($isp) {
echo " Best performing ISPs:\n";
foreach ($isp as $i) {
echo " - {$i['isp']}: " . round($i['rate'], 1) . "% success\n";
}
}
} catch (Exception $e) {}
echo "\n✅ SYNC COMPLETE!\n";