73 lines
2.4 KiB
PHP
Executable File
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']]);
|
|
}
|
|
|