fix: replace sendMail loop with bcc loop in order to send one mail instead of way too many

This commit is contained in:
Marvin Flock
2025-05-04 22:38:33 +02:00
parent e3283af13f
commit a1ae678f6d
2 changed files with 57 additions and 35 deletions
@@ -5217,7 +5217,7 @@ function adminKategorien(): void
$kategorien[5] = array(); $kategorien[5] = array();
$kategorien[6] = array(); $kategorien[6] = array();
foreach ($rows as $row) foreach ($rows as $row)
$kategorien[$row->typ][$row->nummer] = $row->bezeichnung; $kategorien[$row->typ][$row->nummer] = $row->bezeichnung;
@@ -9943,9 +9943,13 @@ function adminSaveBegegnungSpielplan(): void
} }
$rows = $db->loadObjectList(); $rows = $db->loadObjectList();
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer(); $mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
$mailer->setSender($mailfrom, $fromname);
$mailer->setSubject($subject);
$mailer->setBody($body);
foreach ($rows as $row) { foreach ($rows as $row) {
$mailer->sendMail($mailfrom, $fromname, $row->email, $subject, $body); $mailer->addBcc($row->email);
} }
$mailer->send();
} }
begegnungChanged($begegnung, $begegnung_alt, $modus, $heim_team, $gast_team, $spiele); begegnungChanged($begegnung, $begegnung_alt, $modus, $heim_team, $gast_team, $spiele);
@@ -10274,9 +10278,13 @@ function adminBegegnungSpielplanBestaetigen(): void
} }
$rows = $db->loadObjectList(); $rows = $db->loadObjectList();
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer(); $mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
$mailer->setSender($mailfrom, $fromname);
$mailer->setSubject($subject);
$mailer->setBody($body);
foreach ($rows as $row) { foreach ($rows as $row) {
$mailer->sendMail($mailfrom, $fromname, $row->email, $subject, $body); $mailer->addBcc($row->email);
} }
$mailer->send();
if (isJson()) { if (isJson()) {
begegnungSpielplan(); begegnungSpielplan();
@@ -11213,8 +11221,8 @@ function adminBegegnungenExportForm(): void
$veranstaltung = $rows[0]; $veranstaltung = $rows[0];
//Alle Ligen einer Saison ermitteln //Alle Ligen einer Saison ermitteln
$query = "SELECT * FROM #__sportsmanager_veranstaltung $query = "SELECT * FROM #__sportsmanager_veranstaltung
WHERE saison_id = " . $veranstaltung->saison_id . " WHERE saison_id = " . $veranstaltung->saison_id . "
AND #__sportsmanager_veranstaltung.bezeichnung NOT IN ('Schiedsrichter') AND #__sportsmanager_veranstaltung.bezeichnung NOT IN ('Schiedsrichter')
ORDER BY #__sportsmanager_veranstaltung.reihenfolge;"; ORDER BY #__sportsmanager_veranstaltung.reihenfolge;";
$db->setQuery($query); $db->setQuery($query);
@@ -11224,7 +11232,7 @@ function adminBegegnungenExportForm(): void
$rows = $db->loadObjectList(); $rows = $db->loadObjectList();
if (count($rows) < 1) die("Wrong id!"); if (count($rows) < 1) die("Wrong id!");
$saison = $rows; $saison = $rows;
HTML_sportsmanager_admin::adminBegegnungenExport($veranstaltung,$saison); HTML_sportsmanager_admin::adminBegegnungenExport($veranstaltung,$saison);
} }
@@ -11260,8 +11268,8 @@ function adminBegegnungenExportForm(): void
$dateiname = ""; $dateiname = "";
if ($export == "spieler") { if ($export == "spieler") {
$query = " $query = "
SELECT t5.bezeichnung AS Veranstaltung, t2.vereinsname AS Verein, t1.teamname AS Team, SELECT t5.bezeichnung AS Veranstaltung, t2.vereinsname AS Verein, t1.teamname AS Team,
t4.spielernr AS Passnummer, t4.nachname AS Nachname, t4.vorname AS Vorname, t4.geburtsjahr AS Geburtsjahr, t4.spielernr AS Passnummer, t4.nachname AS Nachname, t4.vorname AS Vorname, t4.geburtsjahr AS Geburtsjahr,
t6.saisonbezeichnung AS Saison, t3.erster_spieltag AS Spielberechtigt_von, t3.letzter_spieltag AS Spielberechtigt_bis t6.saisonbezeichnung AS Saison, t3.erster_spieltag AS Spielberechtigt_von, t3.letzter_spieltag AS Spielberechtigt_bis
FROM #__sportsmanager_team AS t1 FROM #__sportsmanager_team AS t1
LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t1.veranstaltung_id = t5.veranstaltung_id LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t1.veranstaltung_id = t5.veranstaltung_id
@@ -11284,10 +11292,10 @@ function adminBegegnungenExportForm(): void
if ($export == "spielplan" or $export == "spielberichte") { if ($export == "spielplan" or $export == "spielberichte") {
$query = " $query = "
SELECT t1.begegnung_id AS ID, t5.saisonbezeichnung AS Saison, SELECT t1.begegnung_id AS ID, t5.saisonbezeichnung AS Saison,
t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart, t2.teamname AS Heim, t3.teamname AS Gast, t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart, t2.teamname AS Heim, t3.teamname AS Gast,
t1.spieltag AS Spieltag_Nr, t1.heim_punkte AS Heim_Tore, t1.gast_punkte AS Gast_Tore, t1.spieltag AS Spieltag_Nr, t1.heim_punkte AS Heim_Tore, t1.gast_punkte AS Gast_Tore,
t1.heim_spielpunkte AS Heim_Satzpunkte, t1.gast_spielpunkte AS Gast_Satzpunkte t1.heim_spielpunkte AS Heim_Satzpunkte, t1.gast_spielpunkte AS Gast_Satzpunkte
FROM #__sportsmanager_begegnung AS t1 FROM #__sportsmanager_begegnung AS t1
LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id
LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id
LEFT JOIN #__sportsmanager_veranstaltung AS t4 ON t2.veranstaltung_id = t4.veranstaltung_id LEFT JOIN #__sportsmanager_veranstaltung AS t4 ON t2.veranstaltung_id = t4.veranstaltung_id
@@ -11326,7 +11334,7 @@ function adminBegegnungenExportForm(): void
foreach ($rows as $value) { foreach ($rows as $value) {
// letze Änderung // letze Änderung
$query = " $query = "
SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von
@@ -11337,16 +11345,16 @@ function adminBegegnungenExportForm(): void
ORDER BY eingetragen DESC ORDER BY eingetragen DESC
LIMIT 1; LIMIT 1;
"; ";
$letzterEintrag = null; $letzterEintrag = null;
$db->setQuery($query); $db->setQuery($query);
if ($db->execute()) { if ($db->execute()) {
$letzterEintrag = $db->loadObjectList(); $letzterEintrag = $db->loadObjectList();
} }
$value->gespeichert_um = $letzterEintrag[0]->gespeichert_um; $value->gespeichert_um = $letzterEintrag[0]->gespeichert_um;
$value->gespeichert_von = $letzterEintrag[0]->gespeichert_von; $value->gespeichert_von = $letzterEintrag[0]->gespeichert_von;
// Spielbericht // Spielbericht
$query = " $query = "
SELECT SELECT
@@ -11355,13 +11363,13 @@ function adminBegegnungenExportForm(): void
t5.spielernr AS Pass_Gast1, t6.spielernr AS Pass_Gast2, t5.spielernr AS Pass_Gast1, t6.spielernr AS Pass_Gast2,
t1.teamspiel_heim_punkte AS Heim_Tore, t1.teamspiel_gast_punkte AS Gast_Tore, t1.teamspiel_heim_punkte AS Heim_Tore, t1.teamspiel_gast_punkte AS Gast_Tore,
t1.teamspiel_heim_spielpunkte AS Heim_Punkte, t1.teamspiel_gast_spielpunkte AS Gast_Punkte t1.teamspiel_heim_spielpunkte AS Heim_Punkte, t1.teamspiel_gast_spielpunkte AS Gast_Punkte
FROM #__sportsmanager_teamspiel AS t1 FROM #__sportsmanager_teamspiel AS t1
LEFT JOIN #__sportsmanager_begegnung AS t2 ON t1.begegnung_id = t2.begegnung_id LEFT JOIN #__sportsmanager_begegnung AS t2 ON t1.begegnung_id = t2.begegnung_id
LEFT JOIN #__sportsmanager_spieler AS t3 ON t1.heim_spieler_1_id = t3.spieler_id LEFT JOIN #__sportsmanager_spieler AS t3 ON t1.heim_spieler_1_id = t3.spieler_id
LEFT JOIN #__sportsmanager_spieler AS t4 ON t1.heim_spieler_2_id = t4.spieler_id LEFT JOIN #__sportsmanager_spieler AS t4 ON t1.heim_spieler_2_id = t4.spieler_id
LEFT JOIN #__sportsmanager_spieler AS t5 ON t1.gast_spieler_1_id = t5.spieler_id LEFT JOIN #__sportsmanager_spieler AS t5 ON t1.gast_spieler_1_id = t5.spieler_id
LEFT JOIN #__sportsmanager_spieler AS t6 ON t1.gast_spieler_2_id = t6.spieler_id LEFT JOIN #__sportsmanager_spieler AS t6 ON t1.gast_spieler_2_id = t6.spieler_id
WHERE t1.begegnung_id = " . $value->ID . " WHERE t1.begegnung_id = " . $value->ID . "
ORDER BY t1.teamspiel_nummer; ORDER BY t1.teamspiel_nummer;
"; ";
@@ -11392,7 +11400,7 @@ function adminBegegnungenExportForm(): void
} }
$dateiname = "Spielberichte " . $veranstaltung->bezeichnung; $dateiname = "Spielberichte " . $veranstaltung->bezeichnung;
} }
$dateiname .= ".csv"; $dateiname .= ".csv";
$dateiname = bereinigterDateiname($dateiname); $dateiname = bereinigterDateiname($dateiname);
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
@@ -16348,12 +16356,6 @@ function termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten = false)
$from = $app->getCfg('mailfrom'); $from = $app->getCfg('mailfrom');
$fromName = $app->getCfg('fromname'); $fromName = $app->getCfg('fromname');
$mode = 1;
$cc = null;
$bcc = null;
$attachment = null;
$replyTo = null;
$replyToName = null;
if ($terminaktion->status == 2) { if ($terminaktion->status == 2) {
$subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt: " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); $subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt: " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true);
$body = "<p>Das " . htmlentities_utf8($aktion[$terminaktion->typ]) . " des folgenden Termins wurde beantragt und wird nun von den Moderatoren gepr&uuml;ft. Sobald der Termin bearbeitet wurde, wird eine E-Mail-Benachrichtigung verschickt.</p>"; $body = "<p>Das " . htmlentities_utf8($aktion[$terminaktion->typ]) . " des folgenden Termins wurde beantragt und wird nun von den Moderatoren gepr&uuml;ft. Sobald der Termin bearbeitet wurde, wird eine E-Mail-Benachrichtigung verschickt.</p>";
@@ -16363,17 +16365,16 @@ function termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten = false)
} }
$body .= "<table>\r\n" . $termin_beschreibung . $termin_moderationsstatus . "</table>\r\n"; $body .= "<table>\r\n" . $termin_beschreibung . $termin_moderationsstatus . "</table>\r\n";
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer(); $mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
$mailer->setSender($from, $fromName);
$mailer->setSubject($subject);
$mailer->isHtml(true);
$mailer->setBody($body);
foreach ($benachrichtigung_emails as $email) foreach ($benachrichtigung_emails as $email)
$mailer->sendMail($from, $fromName, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyTo, $replyToName); $mailer->addBcc($email);
$mailer->send();
$from = $app->getCfg('mailfrom'); $from = $app->getCfg('mailfrom');
$fromName = $app->getCfg('fromname'); $fromName = $app->getCfg('fromname');
$mode = 1;
$cc = null;
$bcc = null;
$attachment = null;
$replyTo = null;
$replyToName = null;
if ($terminaktion->status == 2) { if ($terminaktion->status == 2) {
$subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt von " . $terminaktion->aktion_user_name . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); $subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt von " . $terminaktion->aktion_user_name . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true);
$body = "<p>Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " beantragt:</p>\r\n"; $body = "<p>Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " beantragt:</p>\r\n";
@@ -16385,12 +16386,25 @@ function termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten = false)
$body = "<p>Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " abgelehnt:</p>"; $body = "<p>Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " abgelehnt:</p>";
} }
$body .= "<table>\r\n" . $termin_beschreibung . $termin_moderationsstatus . "</table>\r\n"; $body .= "<table>\r\n" . $termin_beschreibung . $termin_moderationsstatus . "</table>\r\n";
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
$mailer->setSender($from, $fromName);
$mailer->setSubject($subject);
$mailer->isHtml(true);
$mailer->setBody($body);
foreach ($benachrichtigung_moderatoren_informieren as $email) foreach ($benachrichtigung_moderatoren_informieren as $email)
$mailer->sendMail($from, $fromName, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyTo, $replyToName); $mailer->addBcc($email);
$mailer->send();
$body .= "<p>Bitte <a href=\"" . SportsManagerURL('&task=admin_termin_details&nur_beantragte=1&id=' . $terminaktion->termin_aktion_id, -1) . "\">hier</a> klicken, um den Termin zu moderieren.</p>\r\n"; $body .= "<p>Bitte <a href=\"" . SportsManagerURL('&task=admin_termin_details&nur_beantragte=1&id=' . $terminaktion->termin_aktion_id, -1) . "\">hier</a> klicken, um den Termin zu moderieren.</p>\r\n";
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
$mailer->setSender($from, $fromName);
$mailer->setSubject($subject);
$mailer->isHtml(true);
$mailer->setBody($body);
foreach ($benachrichtigung_moderatoren_aendern as $email) foreach ($benachrichtigung_moderatoren_aendern as $email)
$mailer->sendMail($from, $fromName, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyTo, $replyToName); $mailer->addBcc($email);
$mailer->send();
return true; return true;
} }
@@ -4562,9 +4562,13 @@ function begegnungVerlegen(): void
} }
$rows = $db->loadObjectList(); $rows = $db->loadObjectList();
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer(); $mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
$mailer->setSender($mailfrom, $fromname);
$mailer->setSubject($subject);
$mailer->setBody($body);
foreach ($rows as $row) { foreach ($rows as $row) {
$mailer->sendMail($mailfrom, $fromname, $row->email, $subject, $body); $mailer->addBcc($row->email);
} }
$mailer->send();
begegnungVerlegenNotify($begegnung, $rows, $vorschlagendes_team_id, $heim_team, $gast_team); begegnungVerlegenNotify($begegnung, $rows, $vorschlagendes_team_id, $heim_team, $gast_team);
@@ -4711,9 +4715,13 @@ function begegnungVerlegen(): void
} }
$rows = $db->loadObjectList(); $rows = $db->loadObjectList();
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer(); $mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
$mailer->setSender($mailfrom, $fromname);
$mailer->setSubject($subject);
$mailer->setBody($body);
foreach ($rows as $row) { foreach ($rows as $row) {
$mailer->sendMail($mailfrom, $fromname, $row->email, $subject, $body); $mailer->addBcc($row->email);
} }
$mailer->send();
if (isJson()) { if (isJson()) {
JSON_sportsmanager::JSON([]); JSON_sportsmanager::JSON([]);