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