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

84 lines
3.0 KiB
PHP
Executable File

<?php
header('Content-Type: application/json');
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123");
class SubjectTester {
private $spamWords = ['free','winner','click here','act now','limited time','urgent','congratulations','cash','prize','100%','guarantee','no obligation','risk free','order now','buy now','cheap','earn money','make money','work from home','double your','increase your','lose weight','viagra','cialis','pharmacy'];
public function analyze($subject) {
$result = ['subject' => $subject, 'score' => 100, 'issues' => [], 'suggestions' => []];
$lower = strtolower($subject);
// Check spam words
foreach ($this->spamWords as $word) {
if (strpos($lower, $word) !== false) {
$result['score'] -= 10;
$result['issues'][] = "Contains spam trigger: '$word'";
}
}
// Check length
$len = strlen($subject);
if ($len > 60) {
$result['score'] -= 10;
$result['issues'][] = "Too long ($len chars). Keep under 60.";
} elseif ($len < 20) {
$result['score'] -= 5;
$result['issues'][] = "Too short ($len chars). Aim for 30-50.";
}
// Check caps
$caps = preg_match_all('/[A-Z]/', $subject, $m);
$capsRatio = $caps / max(1, $len);
if ($capsRatio > 0.3) {
$result['score'] -= 15;
$result['issues'][] = "Too many capital letters";
}
// Check special chars
if (preg_match('/[!]{2,}|[$]{2,}|[?]{2,}/', $subject)) {
$result['score'] -= 10;
$result['issues'][] = "Excessive punctuation";
}
// Check emojis (sometimes good, sometimes bad)
if (preg_match('/[\x{1F600}-\x{1F6FF}]/u', $subject)) {
$result['suggestions'][] = "Contains emoji - test with and without";
}
$result['score'] = max(0, $result['score']);
$result['rating'] = $result['score'] >= 80 ? 'good' : ($result['score'] >= 50 ? 'moderate' : 'poor');
return $result;
}
public function encode($subject) {
return '=?UTF-8?B?' . base64_encode($subject) . '?=';
}
}
$action = $_GET['action'] ?? $_POST['action'] ?? '';
$tester = new SubjectTester();
switch ($action) {
case 'analyze':
echo json_encode($tester->analyze($_POST['subject'] ?? $_GET['subject']));
break;
case 'encode':
$subject = $_POST['subject'] ?? $_GET['subject'];
echo json_encode(['original' => $subject, 'encoded' => $tester->encode($subject)]);
break;
case 'bulk':
$subjects = explode("\n", $_POST['subjects'] ?? '');
$results = [];
foreach ($subjects as $s) {
if (trim($s)) $results[] = $tester->analyze(trim($s));
}
echo json_encode(['results' => $results]);
break;
default:
echo json_encode(['actions' => ['analyze', 'encode', 'bulk']]);
}