- Préparation de la nouvelle branche pour les évolutions - Mise à jour de la version vers 3.2.4 - Intégration des modifications en cours 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
186 lines
5.4 KiB
PHP
Executable File
186 lines
5.4 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
|
|
/**
|
|
* Script de test pour vérifier le processeur de queue d'emails
|
|
* Affiche les emails en attente sans les envoyer
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
// Simuler l'environnement web pour AppConfig en CLI
|
|
if (php_sapi_name() === 'cli') {
|
|
$_SERVER['SERVER_NAME'] = $_SERVER['SERVER_NAME'] ?? 'app.geo.dev'; // DVA par défaut
|
|
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_HOST'] ?? $_SERVER['SERVER_NAME'];
|
|
$_SERVER['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
|
|
|
|
// Définir getallheaders si elle n'existe pas (CLI)
|
|
if (!function_exists('getallheaders')) {
|
|
function getallheaders() {
|
|
return [];
|
|
}
|
|
}
|
|
}
|
|
|
|
require_once __DIR__ . '/../../src/Core/Database.php';
|
|
require_once __DIR__ . '/../../src/Config/AppConfig.php';
|
|
|
|
try {
|
|
// Initialiser la configuration
|
|
$appConfig = AppConfig::getInstance();
|
|
$dbConfig = $appConfig->getDatabaseConfig();
|
|
|
|
// Initialiser la base de données avec la configuration
|
|
Database::init($dbConfig);
|
|
$db = Database::getInstance();
|
|
|
|
echo "=== TEST DE LA QUEUE D'EMAILS ===\n\n";
|
|
|
|
// Statistiques générales
|
|
$stmt = $db->query('
|
|
SELECT
|
|
status,
|
|
COUNT(*) as count,
|
|
MIN(created_at) as oldest,
|
|
MAX(created_at) as newest
|
|
FROM email_queue
|
|
GROUP BY status
|
|
');
|
|
|
|
$stats = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
echo "STATISTIQUES:\n";
|
|
echo "-------------\n";
|
|
foreach ($stats as $stat) {
|
|
echo sprintf(
|
|
"Status: %s - Nombre: %d (Plus ancien: %s, Plus récent: %s)\n",
|
|
$stat['status'],
|
|
$stat['count'],
|
|
$stat['oldest'] ?? 'N/A',
|
|
$stat['newest'] ?? 'N/A'
|
|
);
|
|
}
|
|
|
|
echo "\n";
|
|
|
|
// Emails en attente
|
|
$stmt = $db->prepare('
|
|
SELECT
|
|
eq.id,
|
|
eq.fk_pass,
|
|
eq.to_email,
|
|
eq.subject,
|
|
eq.created_at,
|
|
eq.attempts,
|
|
eq.status,
|
|
p.fk_type,
|
|
p.montant,
|
|
p.nom_recu
|
|
FROM email_queue eq
|
|
LEFT JOIN ope_pass p ON eq.fk_pass = p.id
|
|
WHERE eq.status = ?
|
|
ORDER BY eq.created_at DESC
|
|
LIMIT 10
|
|
');
|
|
|
|
$stmt->execute(['pending']);
|
|
$pendingEmails = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
if (empty($pendingEmails)) {
|
|
echo "Aucun email en attente.\n";
|
|
} else {
|
|
echo "EMAILS EN ATTENTE (10 plus récents):\n";
|
|
echo "------------------------------------\n";
|
|
foreach ($pendingEmails as $email) {
|
|
echo sprintf(
|
|
"ID: %d | Passage: %d | Destinataire: %s\n",
|
|
$email['id'],
|
|
$email['fk_pass'],
|
|
$email['to_email']
|
|
);
|
|
echo sprintf(
|
|
" Sujet: %s\n",
|
|
$email['subject']
|
|
);
|
|
echo sprintf(
|
|
" Créé le: %s | Tentatives: %d\n",
|
|
$email['created_at'],
|
|
$email['attempts']
|
|
);
|
|
if ($email['fk_pass'] > 0) {
|
|
echo sprintf(
|
|
" Passage - Type: %s | Montant: %.2f€ | Reçu: %s\n",
|
|
$email['fk_type'] == 1 ? 'DON' : 'Autre',
|
|
$email['montant'] ?? 0,
|
|
$email['nom_recu'] ?? 'Non généré'
|
|
);
|
|
}
|
|
echo "---\n";
|
|
}
|
|
}
|
|
|
|
// Emails échoués
|
|
$stmt = $db->prepare('
|
|
SELECT
|
|
id,
|
|
fk_pass,
|
|
to_email,
|
|
subject,
|
|
created_at,
|
|
attempts,
|
|
error_message
|
|
FROM email_queue
|
|
WHERE status = ?
|
|
ORDER BY created_at DESC
|
|
LIMIT 5
|
|
');
|
|
|
|
$stmt->execute(['failed']);
|
|
$failedEmails = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
if (!empty($failedEmails)) {
|
|
echo "\nEMAILS ÉCHOUÉS (5 plus récents):\n";
|
|
echo "--------------------------------\n";
|
|
foreach ($failedEmails as $email) {
|
|
echo sprintf(
|
|
"ID: %d | Passage: %d | Destinataire: %s\n",
|
|
$email['id'],
|
|
$email['fk_pass'],
|
|
$email['to_email']
|
|
);
|
|
echo sprintf(
|
|
" Sujet: %s\n",
|
|
$email['subject']
|
|
);
|
|
echo sprintf(
|
|
" Tentatives: %d | Erreur: %s\n",
|
|
$email['attempts'],
|
|
$email['error_message'] ?? 'Non spécifiée'
|
|
);
|
|
echo "---\n";
|
|
}
|
|
}
|
|
|
|
// Vérifier la configuration SMTP
|
|
echo "\nCONFIGURATION SMTP:\n";
|
|
echo "-------------------\n";
|
|
|
|
$smtpConfig = $appConfig->getSmtpConfig();
|
|
$emailConfig = $appConfig->getEmailConfig();
|
|
|
|
echo "Host: " . ($smtpConfig['host'] ?? 'Non configuré') . "\n";
|
|
echo "Port: " . ($smtpConfig['port'] ?? 'Non configuré') . "\n";
|
|
echo "Username: " . ($smtpConfig['user'] ?? 'Non configuré') . "\n";
|
|
echo "Password: " . (isset($smtpConfig['pass']) ? '***' : 'Non configuré') . "\n";
|
|
echo "Encryption: " . ($smtpConfig['secure'] ?? 'Non configuré') . "\n";
|
|
echo "From Email: " . ($emailConfig['from'] ?? 'Non configuré') . "\n";
|
|
echo "Contact Email: " . ($emailConfig['contact'] ?? 'Non configuré') . "\n";
|
|
|
|
echo "\n=== FIN DU TEST ===\n";
|
|
|
|
} catch (Exception $e) {
|
|
echo "ERREUR: " . $e->getMessage() . "\n";
|
|
exit(1);
|
|
}
|
|
|
|
exit(0); |