1.3.0
This commit is contained in:
119
verschiebung.php
119
verschiebung.php
@@ -1,6 +1,9 @@
|
||||
<?php
|
||||
define('APP_URL', 'https://domili.borgal.de');
|
||||
|
||||
// 🔒 Testmodus: true = nur User-ID 1, false = alle Benutzer
|
||||
$test_mode = false;
|
||||
|
||||
function load_reschedule_data($conn, $meeting_id, $user_id)
|
||||
{
|
||||
$stmt = mysqli_prepare($conn, "
|
||||
@@ -67,6 +70,8 @@ function load_reschedule_data($conn, $meeting_id, $user_id)
|
||||
|
||||
function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
{
|
||||
global $test_mode;
|
||||
|
||||
// Vorschlag einreichen
|
||||
if (isset($_POST['propose_reschedule']) && isset($_POST['new_date']) && isset($_POST['reason'])) {
|
||||
$new_date = $_POST['new_date'];
|
||||
@@ -100,7 +105,6 @@ function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
$mail = new \PHPMailer\PHPMailer\PHPMailer(true);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->isHTML(false);
|
||||
|
||||
$orig_date = null;
|
||||
$orig_stmt = mysqli_prepare($conn, "SELECT meeting_date FROM meetings WHERE id = ?");
|
||||
@@ -122,15 +126,43 @@ function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
|
||||
$proposer = $_SESSION['username'] ?? 'Ein Benutzer';
|
||||
$new_fmt = date('d.m.Y H:i', strtotime($new_date));
|
||||
$subject = "DoMiLi: Neuer Terminvorschlag für den ursprünglichen Termin vom $orig_str";
|
||||
$body = "Hallo %s,\n\n%s hat einen neuen Vorschlag zur Verschiebung des Termins eingereicht.\nNeuer vorgeschlagener Termin: %s\nGrund: %s\n\nBitte stimme erneut ab, ob du teilnehmen möchtest.\n\nZur Abstimmung: DoMiLi-APP\n%s\n\nDein DoMiLi-Team";
|
||||
|
||||
$users_stmt = mysqli_query($conn, "SELECT username, email FROM users WHERE email IS NOT NULL AND email != ''");
|
||||
// 🔒 Empfängerliste – Testmodus?
|
||||
if ($test_mode) {
|
||||
$users_stmt = mysqli_query($conn, "SELECT username, email FROM users WHERE id = 1 AND email IS NOT NULL AND email != ''");
|
||||
} else {
|
||||
$users_stmt = mysqli_query($conn, "SELECT username, email FROM users WHERE email IS NOT NULL AND email != ''");
|
||||
}
|
||||
|
||||
while ($u = mysqli_fetch_assoc($users_stmt)) {
|
||||
// Überspringe den eigenen Vorschlag – aber im Testmodus ggf. auskommentieren
|
||||
if (isset($_SESSION['email']) && $u['email'] === $_SESSION['email']) continue;
|
||||
|
||||
$mail_body_html = '
|
||||
<div style="font-family: -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, \'Helvetica Neue\', Arial, sans-serif; line-height: 1.6; color: #333; max-width: 700px; margin: 0 auto; padding: 20px; background: #f8f9fa;">
|
||||
<div style="background: white; padding: 24px; border-radius: 8px; box-shadow: 0 2px 6px rgba(0,0,0,0.08);">
|
||||
<h3 style="color: #0d6efd; margin-top: 0;">Neuer Terminvorschlag</h3>
|
||||
<p>Hallo <strong>' . htmlspecialchars($u['username']) . '</strong>,</p>
|
||||
<div style="background: #f0f7ff; border-left: 4px solid #0d6efd; padding: 16px; margin: 16px 0; border-radius: 0 4px 4px 0;">
|
||||
<p><strong>' . htmlspecialchars($proposer) . '</strong> hat einen neuen Vorschlag zur Verschiebung des Termins eingereicht.</p>
|
||||
<p><strong>Neuer vorgeschlagener Termin:</strong><br>
|
||||
' . htmlspecialchars($new_fmt) . '</p>
|
||||
<p><strong>Grund:</strong><br>
|
||||
' . htmlspecialchars($reason) . '</p>
|
||||
</div>
|
||||
<p>Bitte stimme erneut ab, ob du teilnehmen möchtest.</p>
|
||||
<p><a href="' . APP_URL . '/index.php" style="display: inline-block; background: #0d6efd; color: white; text-decoration: none; padding: 8px 16px; border-radius: 4px; font-weight: 500;">Zur Abstimmung</a></p>
|
||||
<p style="margin-top: 24px; padding-top: 16px; border-top: 1px solid #eee; color: #6c757d; font-size: 0.875rem;">
|
||||
Dein DoMiLi-Team
|
||||
</p>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
$mail->isHTML(true);
|
||||
$mail->addAddress($u['email']);
|
||||
$mail->Subject = $subject;
|
||||
$mail->Body = sprintf($body, $u['username'], $proposer, $new_fmt, $reason, APP_URL . '/index.php');
|
||||
$mail->Subject = "DoMiLi: Neuer Terminvorschlag für den ursprünglichen Termin vom $orig_str";
|
||||
$mail->Body = $mail_body_html;
|
||||
$mail->AltBody = "Hallo " . $u['username'] . ",\n\n" . $proposer . " hat einen neuen Vorschlag zur Verschiebung eingereicht.\nNeuer Termin: " . $new_fmt . "\nGrund: " . $reason . "\n\nZur Abstimmung: " . APP_URL . "/index.php\n\nDein DoMiLi-Team";
|
||||
$mail->send();
|
||||
$mail->clearAddresses();
|
||||
}
|
||||
@@ -229,13 +261,13 @@ function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
$meeting_id = $proposal['meeting_id'];
|
||||
$original_date = $proposal['original_date'];
|
||||
|
||||
// Meeting aktualisieren
|
||||
// Meeting aktualisieren – ACHTUNG: nur meeting_date, kein reason hier
|
||||
$update_meeting = mysqli_prepare($conn, "
|
||||
UPDATE meetings
|
||||
SET meeting_date = ?
|
||||
WHERE id = ?
|
||||
");
|
||||
mysqli_stmt_bind_param($update_meeting, "ssi", $new_date, $new_reason, $meeting_id);
|
||||
mysqli_stmt_bind_param($update_meeting, "si", $new_date, $meeting_id);
|
||||
mysqli_stmt_execute($update_meeting);
|
||||
mysqli_stmt_close($update_meeting);
|
||||
|
||||
@@ -264,7 +296,6 @@ function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
$mail = new \PHPMailer\PHPMailer\PHPMailer(true);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->isHTML(false);
|
||||
|
||||
try {
|
||||
$mail->isSMTP();
|
||||
@@ -278,14 +309,41 @@ function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
|
||||
$orig_fmt = date('d.m.Y H:i', strtotime($original_date));
|
||||
$new_fmt = date('d.m.Y H:i', strtotime($new_date));
|
||||
$subject = "DoMiLi: Termin wurde verschoben!";
|
||||
$body = "Hallo %s,\n\nDer Termin wurde vom Admin verschoben.\n\nUrsprünglicher Termin: %s\nNeuer Termin: %s\nGrund: %s\n\nBitte stimme erneut ab, ob du teilnehmen möchtest.\n\nZur Abstimmung: DoMiLi-APP\n%s\n\nDein DoMiLi-Team";
|
||||
|
||||
$users_stmt = mysqli_query($conn, "SELECT username, email FROM users WHERE email IS NOT NULL AND email != ''");
|
||||
if ($test_mode) {
|
||||
$users_stmt = mysqli_query($conn, "SELECT username, email FROM users WHERE id = 1 AND email IS NOT NULL AND email != ''");
|
||||
} else {
|
||||
$users_stmt = mysqli_query($conn, "SELECT username, email FROM users WHERE email IS NOT NULL AND email != ''");
|
||||
}
|
||||
|
||||
while ($u = mysqli_fetch_assoc($users_stmt)) {
|
||||
$mail_body_html = '
|
||||
<div style="font-family: -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, \'Helvetica Neue\', Arial, sans-serif; line-height: 1.6; color: #333; max-width: 700px; margin: 0 auto; padding: 20px; background: #f8f9fa;">
|
||||
<div style="background: white; padding: 24px; border-radius: 8px; box-shadow: 0 2px 6px rgba(0,0,0,0.08);">
|
||||
<h3 style="color: #0d6efd; margin-top: 0;">Termin wurde verschoben!</h3>
|
||||
<p>Hallo <strong>' . htmlspecialchars($u['username']) . '</strong>,</p>
|
||||
<div style="background: #f0f7ff; border-left: 4px solid #0d6efd; padding: 16px; margin: 16px 0; border-radius: 0 4px 4px 0;">
|
||||
<p>Der Termin wurde vom Admin verschoben.</p>
|
||||
<p><strong>Ursprünglicher Termin:</strong><br>
|
||||
' . htmlspecialchars($orig_fmt) . '</p>
|
||||
<p><strong>Neuer Termin:</strong><br>
|
||||
' . htmlspecialchars($new_fmt) . '</p>
|
||||
<p><strong>Grund:</strong><br>
|
||||
' . htmlspecialchars($new_reason) . '</p>
|
||||
</div>
|
||||
<p>Bitte stimme erneut ab, ob du teilnehmen möchtest.</p>
|
||||
<p><a href="' . APP_URL . '/index.php" style="display: inline-block; background: #0d6efd; color: white; text-decoration: none; padding: 8px 16px; border-radius: 4px; font-weight: 500;">Zur Abstimmung</a></p>
|
||||
<p style="margin-top: 24px; padding-top: 16px; border-top: 1px solid #eee; color: #6c757d; font-size: 0.875rem;">
|
||||
Dein DoMiLi-Team
|
||||
</p>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
$mail->isHTML(true);
|
||||
$mail->addAddress($u['email']);
|
||||
$mail->Subject = $subject;
|
||||
$mail->Body = sprintf($body, $u['username'], $orig_fmt, $new_fmt, $new_reason, APP_URL . '/index.php');
|
||||
$mail->Subject = "DoMiLi: Termin wurde verschoben!";
|
||||
$mail->Body = $mail_body_html;
|
||||
$mail->AltBody = "Hallo " . $u['username'] . ",\n\nDer Termin wurde verschoben.\nUrsprünglich: " . $orig_fmt . "\nNeu: " . $new_fmt . "\nGrund: " . $new_reason . "\n\nZur Abstimmung: " . APP_URL . "/index.php\n\nDein DoMiLi-Team";
|
||||
$mail->send();
|
||||
$mail->clearAddresses();
|
||||
}
|
||||
@@ -303,7 +361,6 @@ function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
if (isset($_POST['reject_proposal']) && isset($_POST['proposal_id'])) {
|
||||
$proposal_id = intval($_POST['proposal_id']);
|
||||
|
||||
// Vorschlagdaten laden
|
||||
$proposal_stmt = mysqli_prepare($conn, "
|
||||
SELECT p.proposed_by_user_id, u.username AS proposer_name,
|
||||
m.meeting_date AS original_date
|
||||
@@ -317,7 +374,6 @@ function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
$proposal = mysqli_fetch_assoc(mysqli_stmt_get_result($proposal_stmt));
|
||||
mysqli_stmt_close($proposal_stmt);
|
||||
|
||||
// Vorschlag ablehnen
|
||||
$reject_stmt = mysqli_prepare($conn, "
|
||||
UPDATE meeting_reschedule_proposals
|
||||
SET status = 'rejected'
|
||||
@@ -332,7 +388,6 @@ function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
$mail = new \PHPMailer\PHPMailer\PHPMailer(true);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->isHTML(false);
|
||||
|
||||
try {
|
||||
$mail->isSMTP();
|
||||
@@ -346,14 +401,34 @@ function handle_reschedule_actions($conn, $meeting_id, $user_id)
|
||||
|
||||
$proposer = $proposal['proposer_name'];
|
||||
$original_fmt = date('d.m.Y H:i', strtotime($proposal['original_date']));
|
||||
$subject = "DoMiLi: Verschiebungsvorschlag abgelehnt";
|
||||
$body = "Hallo %s,\n\nDer Verschiebungsvorschlag von {$proposer} wurde vom Admin abgelehnt.\nDer Termin bleibt daher unverändert beim ursprünglichen Termin am {$original_fmt}.\n\nDein DoMiLi-Team";
|
||||
|
||||
$users_stmt = mysqli_query($conn, "SELECT username, email FROM users WHERE email IS NOT NULL AND email != ''");
|
||||
if ($test_mode) {
|
||||
$users_stmt = mysqli_query($conn, "SELECT username, email FROM users WHERE id = 1 AND email IS NOT NULL AND email != ''");
|
||||
} else {
|
||||
$users_stmt = mysqli_query($conn, "SELECT username, email FROM users WHERE email IS NOT NULL AND email != ''");
|
||||
}
|
||||
|
||||
while ($u = mysqli_fetch_assoc($users_stmt)) {
|
||||
$mail_body_html = '
|
||||
<div style="font-family: -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, \'Helvetica Neue\', Arial, sans-serif; line-height: 1.6; color: #333; max-width: 700px; margin: 0 auto; padding: 20px; background: #f8f9fa;">
|
||||
<div style="background: white; padding: 24px; border-radius: 8px; box-shadow: 0 2px 6px rgba(0,0,0,0.08);">
|
||||
<h3 style="color: #dc3545; margin-top: 0;">Verschiebungsvorschlag abgelehnt</h3>
|
||||
<p>Hallo <strong>' . htmlspecialchars($u['username']) . '</strong>,</p>
|
||||
<div style="background: #fff5f5; border-left: 4px solid #dc3545; padding: 16px; margin: 16px 0; border-radius: 0 4px 4px 0;">
|
||||
<p>Der Verschiebungsvorschlag von <strong>' . htmlspecialchars($proposer) . '</strong> wurde vom Admin abgelehnt.</p>
|
||||
<p>Der Termin bleibt daher unverändert beim ursprünglichen Termin am <strong>' . htmlspecialchars($original_fmt) . '</strong>.</p>
|
||||
</div>
|
||||
<p style="margin-top: 24px; padding-top: 16px; border-top: 1px solid #eee; color: #6c757d; font-size: 0.875rem;">
|
||||
Dein DoMiLi-Team
|
||||
</p>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
$mail->isHTML(true);
|
||||
$mail->addAddress($u['email']);
|
||||
$mail->Subject = $subject;
|
||||
$mail->Body = sprintf($body, $u['username']);
|
||||
$mail->Subject = "DoMiLi: Verschiebungsvorschlag abgelehnt";
|
||||
$mail->Body = $mail_body_html;
|
||||
$mail->AltBody = "Hallo " . $u['username'] . ",\n\nDer Verschiebungsvorschlag von " . $proposer . " wurde abgelehnt.\nDer Termin bleibt beim ursprünglichen Termin am " . $original_fmt . ".\n\nDein DoMiLi-Team";
|
||||
$mail->send();
|
||||
$mail->clearAddresses();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user