| Current Path : /home/wirbesti/public_html/ |
| Current File : /home/wirbesti/public_html/mail-PDF-de.php |
<?php
error_reporting(E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/logs/php_errors.log');
$logFile = __DIR__ . '/logs/debug_de.log';
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Script started\n", FILE_APPEND);
// Start session
session_start();
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Session started\n", FILE_APPEND);
// Get URL parameters
$nachname = $_GET['nachname'] ?? '';
$vorname = $_GET['vorname'] ?? '';
$email = $_GET['email'] ?? '';
$campaign = $_GET['campaign'] ?? '';
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Parameters: nachname=$nachname, vorname=$vorname, email=$email, campaign=$campaign\n", FILE_APPEND);
// Validate email
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Invalid email: $email\n", FILE_APPEND);
die('Invalid email address');
}
// Validate campaign
if (!is_numeric($campaign)) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Invalid campaign ID: $campaign\n", FILE_APPEND);
die('Invalid campaign ID');
}
// Check for duplicate email
$sessionKey = 'email_sent_de_' . $campaign . '_' . $email;
if (isset($_SESSION[$sessionKey])) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Email already sent, redirecting\n", FILE_APPEND);
header('Location: https://wirbestimmen.ch/de/unterschriftsbogen-dl-de');
exit;
}
// Include dependencies
$requiredFiles = [
'vendor/phpmailer/phpmailer/src/PHPMailer.php',
'vendor/phpmailer/phpmailer/src/SMTP.php',
'vendor/phpmailer/phpmailer/src/Exception.php',
'php/DBConnection.php',
'php/Metadata.php',
'php/setting.config.php',
'php/InitiatorCoverSheet.php',
'libraries2/dompdf/vendor/autoload.php'
];
foreach ($requiredFiles as $file) {
$filePath = __DIR__ . '/' . $file;
if (file_exists($filePath)) {
require_once $filePath;
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Included file: $file\n", FILE_APPEND);
} else {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - File not found: $file\n", FILE_APPEND);
die("Required file not found: $file");
}
}
// Verify PHPMailer
if (!class_exists('PHPMailer\PHPMailer\PHPMailer')) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Error: PHPMailer class not found\n", FILE_APPEND);
die('PHPMailer class not available');
}
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
file_put_contents($logFile, date('Y-m-d H:i:s') . " - PHPMailer loaded successfully\n", FILE_APPEND);
// Database connection
try {
$db = new DBConnection($config);
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Database connection established\n", FILE_APPEND);
} catch (Exception $e) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Database connection failed: " . $e->getMessage() . "\n", FILE_APPEND);
die('Database connection failed');
}
// Metadata query
try {
$meta = new Metadata($db);
$metaEntry = $meta->getMetadataByCampaignid($campaign);
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Metadata query executed\n", FILE_APPEND);
} catch (Exception $e) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Metadata query failed: " . $e->getMessage() . "\n", FILE_APPEND);
die('Metadata query failed');
}
if ($metaEntry) {
$signatureFilePath = $metaEntry['signature-form-path-pdf-de'] ?? 'Name.pdf';
$subjectname = $metaEntry['slogan-de'] ?? '"Text der initiative"';
} else {
$signatureFilePath = 'Name.pdf';
$subjectname = '"Text der initiative"';
}
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Metadata: signature_file=$signatureFilePath, subjectname=$subjectname\n", FILE_APPEND);
// Generate cover sheet
$coverSheetFilePath = '';
try {
$coverSheet = new InitiatorCoverSheet();
$coverSheetData = [
'initiatorname' => $metaEntry['initiatorname'] ?? '',
'initiatorstreet' => $metaEntry['initiatorstreet'] ?? '',
'initiatorzipcode' => $metaEntry['initiatorzipcode'] ?? '',
'initiatortown' => $metaEntry['initiatortown'] ?? '',
'language' => 'de',
'randnum' => rand(1000, 9999),
'slogan' => $subjectname
];
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Generating cover sheet with data: " . json_encode($coverSheetData) . "\n", FILE_APPEND);
$coverSheetFile = $coverSheet->generateCoverSheet($coverSheetData);
$coverSheetFilePath = $coverSheetFile ? '/home/wirbesti/public_html/images/CoverSheets/' . $coverSheetFile : '';
if (!$coverSheetFile || !file_exists($coverSheetFilePath)) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Cover sheet generation failed or file not found: $coverSheetFilePath\n", FILE_APPEND);
die('Failed to generate cover sheet');
}
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Cover sheet generated: $coverSheetFilePath\n", FILE_APPEND);
} catch (Exception $e) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Cover sheet generation failed: " . $e->getMessage() . "\n", FILE_APPEND);
die('Failed to generate cover sheet');
}
// Signature form attachment
$path = getcwd();
$signatureFile = $path . '/' . ltrim($signatureFilePath, '/');
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Signature file path: $signatureFile\n", FILE_APPEND);
if (!empty($signatureFilePath) && !file_exists($signatureFile)) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Signature file not found: $signatureFile\n", FILE_APPEND);
if (file_exists($coverSheetFilePath)) {
unlink($coverSheetFilePath);
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Cover sheet file deleted on error: $coverSheetFilePath\n", FILE_APPEND);
}
die('Attachment file not found');
}
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Signature file size: " . filesize($signatureFile) . " bytes\n", FILE_APPEND);
// Email setup
$mail = new PHPMailer(true);
try {
$mail->SMTPDebug = 2;
$mail->Debugoutput = function($str, $level) use ($logFile) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - [PHPMailer Level $level] $str\n", FILE_APPEND);
};
$mail->isSendmail();
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Using Sendmail\n", FILE_APPEND);
$mail->setFrom('kontakt@wirbestimmen.ch', 'Wir bestimmen');
$mail->addAddress($email);
$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->Subject = 'Unterschriftsbogen leer - ' . $subjectname;
$mail->Body = '<p><strong>Hallo ' . htmlspecialchars($vorname) . ' ' . htmlspecialchars($nachname) . '</strong></p>
<p>Wir danken Ihnen im Namen des Initiativekomitees.</p>
<p>Wir haben Ihnen im Anhang ein leeres Unterschriftsblatt, resp. einen Strassenbogen sowie ein Deckblatt zugestellt.</p>
<p><strong>WICHTIG:</strong><br />Damit Ihre Mühe nicht umsonst war und die <strong>Unterschriften gültig sind</strong>, müssen wenige aber <strong>WICHTIGE</strong> Regeln beachtet werden:</p>
<ol>
<li>Alle Personen müssen aus dem gleichen Dorf oder aus der gleichen Stadt (PLZ) sein, wie oben in Politische Gemeinde eingetragen.</li>
<li>Alle Felder "Name, Vorname, Geburtsdatum, Strasse & Nr." müssen ausgefüllt und zuhinterst mit der Unterschrift der Person versehen sein.</li>
<li>Das Feld "Namen und Vornamen" muss von der unterzeichnenden Person handschriftlich ausgefüllt werden.</li>
</ol>
<p>Weitere Bögen können bei uns auf kontakt@wirbesimmen.ch oder unter +41 840 123 456 bestellt werden.</p>
<p>Dürfen wir Sie bitten, uns den Unterschriftsbogen gefalten in einem Couvert, oder gefalten und mit einem Klebestreifen verschlossen in den nächsten Briefkasten zu werfen. Sie machen den Organisatoren der Volksinitiative <strong>einen grossen Gefallen</strong>, wenn diese die Unterschriften nicht in aller letzten Sekunde erhalten. Die Prüfung auf Fehler nimmt einige Zeit in Anspruch.<br />Dafür danken wir Ihnen herzlich.</p>
<p>Wenn Sie mögen, bitte unterstützen Sie unsere Sammlung mit einer Briefmarke. Auch dafür danken wir Ihnen herzlich.</p>
<p>Wir wünschen Ihnen weiterhin grossen Elan für die Schweiz und die Zukunft einzustehen und Grüssen Sie herzlich.<br /><a href="http://www.wirbestimmen.ch" target="_blank" rel="noopener noreferrer"><br />Wir bestimmen<br /></a>Tel.: +41 840 123 456<br />Mail: <a href="mailto:kontakt@wirbestimmen.ch">kontakt@wirbestimmen.ch</a></p>
<p> </p>
<p>Unser Engagement für eine starke und breite direkte Demokratie kostet viel Geld. <br />Für Ihre Unterstützung durch eine Spende sind wir sehr dankbar.<br /><br /><em><strong>Spenden können Sie direkt auf folgendes Konto einzahlen:</strong></em></p>
<p>Wir bestimmen<br />3006 Bern<br /><br />Konto: 61-933005-1<br />IBAN: CH68 0900 0000 6193 3005 1</p>';
// Attachments
if (!empty($signatureFile) && file_exists($signatureFile)) {
$mail->addAttachment($signatureFile, 'SignatureForm.pdf');
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Signature file attached: $signatureFile\n", FILE_APPEND);
}
if (!empty($coverSheetFilePath) && file_exists($coverSheetFilePath)) {
$mail->addAttachment($coverSheetFilePath, 'CoverSheet.pdf');
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Cover sheet attached: $coverSheetFilePath\n", FILE_APPEND);
}
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Attempting to send email\n", FILE_APPEND);
$mail->send();
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Email sent successfully\n", FILE_APPEND);
// Mark email as sent
$_SESSION[$sessionKey] = true;
// Clean up cover sheet
if (file_exists($coverSheetFilePath)) {
unlink($coverSheetFilePath);
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Cover sheet file deleted: $coverSheetFilePath\n", FILE_APPEND);
}
header('Location: https://wirbestimmen.ch/de/unterschriftsbogen-dl-de');
exit;
} catch (Exception $e) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Mailer Error: " . $e->getMessage() . "\n", FILE_APPEND);
if (file_exists($coverSheetFilePath)) {
unlink($coverSheetFilePath);
file_put_contents($logFile, date('Y-m-d H:i:s') . " - Cover sheet file deleted on error: $coverSheetFilePath\n", FILE_APPEND);
}
die("Email failed: " . htmlspecialchars($e->getMessage()));
}
?>