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

73 lines
2.4 KiB
PHP
Executable File

<?php
header('Content-Type: application/json');
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123");
class ListCleaner {
private $pdo;
public function __construct($pdo) { $this->pdo = $pdo; }
public function clean($emails) {
$results = ['total' => count($emails), 'valid' => [], 'invalid' => [], 'duplicates' => [], 'suppressed' => []];
$seen = [];
foreach ($emails as $email) {
$email = strtolower(trim($email));
if (empty($email)) continue;
// Duplicate check
if (isset($seen[$email])) {
$results['duplicates'][] = $email;
continue;
}
$seen[$email] = true;
// Format check
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$results['invalid'][] = ['email' => $email, 'reason' => 'invalid_format'];
continue;
}
// Suppression check
$stmt = $this->pdo->prepare("SELECT 1 FROM admin.suppressions WHERE email = ?");
$stmt->execute([$email]);
if ($stmt->fetch()) {
$results['suppressed'][] = $email;
continue;
}
$results['valid'][] = $email;
}
$results['valid_count'] = count($results['valid']);
$results['invalid_count'] = count($results['invalid']);
$results['duplicate_count'] = count($results['duplicates']);
$results['suppressed_count'] = count($results['suppressed']);
return $results;
}
public function dedupe($emails) {
return array_values(array_unique(array_map('strtolower', array_map('trim', $emails))));
}
}
$action = $_POST['action'] ?? $_GET['action'] ?? '';
$cleaner = new ListCleaner($pdo);
switch ($action) {
case 'clean':
$emails = is_array($_POST['emails']) ? $_POST['emails'] : explode("\n", $_POST['emails']);
echo json_encode($cleaner->clean($emails));
break;
case 'dedupe':
$emails = is_array($_POST['emails']) ? $_POST['emails'] : explode("\n", $_POST['emails']);
$result = $cleaner->dedupe($emails);
echo json_encode(['original' => count($emails), 'deduped' => count($result), 'emails' => $result]);
break;
default:
echo json_encode(['actions' => ['clean', 'dedupe']]);
}