diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 8e839ba..ce50406 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -6147,10 +6147,9 @@ function adminOrdnungsstrafeMailen(): void if (!benutzerZugriff("benutzerVeranstalterModerator")) keinZugriff(true); - $query = "SELECT *, t2.verstoss, t2.paragraph_spo, t2.paragraph_go, t2.zusatztext, t10.regelwerk," - . "\n t4.teamname, t9.verein_id, t9.vereinsname, t8.name AS aussteller, t1.ausstelldatum, t1.status," - . "\n t7.bezeichnung as veranstaltung, CONCAT(t3.spieltag, '. Spieltag') as spieltag," + . "\n t4.teamname, t9.verein_id, t9.vereinsname, t8.name AS aussteller, t1.ausstelldatum, t1.ordnungsstrafen_id," + . "\n t7.bezeichnung as veranstaltung, CONCAT(t3.spieltag, '. Spieltag') as spieltag, t7.saison_id," . "\n t3.spieltag_titel, DATE_FORMAT(t3.zeitpunkt, '%d.%m.%Y') AS spieldatum," . "\n CONCAT(t5.teamname, ' - ', t6.teamname) AS begegnung," . "\n (t1.multiplikator * t2.gebuehr + t2.zusatzgebuehr) AS gebuehr" @@ -6211,9 +6210,80 @@ function adminOrdnungsstrafeMailen(): void $bcc = $vorlagen[0]->bcc; $subject = $vorlagen[0]->betreff; $message = renderTemplate($template, $var); - $back = "admin_ordnungsstrafen"; + $backtomail = "admin_ordnungsstrafe_mailen&id=" . $id; + $backtosender = "admin_ordnungsstrafen"; + + $vorlage = new stdClass(); + $vorlage->id = $ordnungsstrafe->ordnungsstrafen_id; + $vorlage->name = 'Ordnungsstrafe'; + + HTML_sportsmanager_admin::adminMailto($to,$cc,$bcc,$subject,$message,$backtomail,$backtosender,$vorlage); +} - HTML_sportsmanager_admin::adminMailto($to,$cc,$bcc,$subject,$message,$back); +function sendJoomlaMail() +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + $config = Factory::getConfig(); + + $back = $db->escape(trim($jInput->get('back', '', 'RAW'))); + $to = $db->escape(trim($jInput->get('an', '', 'RAW'))); + $cc = $db->escape(trim($jInput->get('cc', '', 'RAW'))); + $bcc = $db->escape(trim($jInput->get('bcc', '', 'RAW'))); + $subject = $db->escape(trim($jInput->get('betreff', '', 'RAW'))); + $body = nl2br(trim($jInput->get('nachricht', '', 'RAW'))); + $isHtml = true; + + // Joomla From-Adresse aus Konfiguration + $fromEmail = $config->get('mailfrom'); + $fromName = 'STFV'; + + // Mailer erstellen über FactoryInterface + $mailer = Factory::getContainer() + ->get(MailerFactoryInterface::class) + ->createMailer(); + + // From setzen + $mailer->setSender([$fromEmail, $fromName]); + + // Hauptempfänger + $toAddresses = array_map('trim', explode(';', $to)); + foreach ($toAddresses as $recipient) { + if (!empty($recipient)) { + $mailer->addRecipient($recipient); + } + } + + // CC-Empfänger + $ccAddresses = array_map('trim', explode(';', $cc)); + foreach ($ccAddresses as $recipient) { + if (!empty($recipient)) { + $mailer->addCc($recipient); + } + } + + // BCC-Empfänger + $bccAddresses = array_map('trim', explode(';', $bcc)); + foreach ($bccAddresses as $recipient) { + if (!empty($recipient)) { + $mailer->addBcc($recipient); + } + } + + // Betreff und Body + $mailer->setSubject($subject); + $mailer->setBody($body); + $mailer->isHtml($isHtml); + + // Senden + $result = $mailer->send(); + + //return ($result === true) ? true : 'Fehler beim Versand: ' . $result->__toString(); + + if ($result === true) + redirectSportsManagerURL('&task=' . $back, Text::_('COM_SPORTSMANAGER_EMAIL_WAS_SEND')); + else + redirectSportsManagerURL('&task=' . $back, Text::_('COM_SPORTSMANAGER_EMAIL_WAS_NOT_SEND')); } function adminOrdnungsstrafen(): void @@ -6267,9 +6337,10 @@ function adminOrdnungsstrafen(): void if (!isset($filter['aussteller'])) $filter['aussteller'] = 0; - $query = "SELECT *, t2.verstoss, t4.teamname, t9.vereinsname, t8.name, t1.ausstelldatum, t1.status," + $query = "SELECT *, t2.verstoss, t4.teamname, t9.vereinsname, t8.name, t1.ausstelldatum," . "\n CONCAT(t5.teamname, ' - ', t6.teamname, ' (', t7.bezeichnung, ')') AS begegnung," - . "\n (t1.multiplikator * t2.gebuehr + t2.zusatzgebuehr) AS gebuehr" + . "\n (t1.multiplikator * t2.gebuehr + t2.zusatzgebuehr) AS gebuehr," + . "\n if (t1.rechnungsdatum IS NOT NULL, 'Rechnung erstellt', if (t1.versendedatum IS NOT NULL, 'Versendet', 'ausgestellt')) AS status" . "\n FROM #__sportsmanager_ordnungsstrafen AS t1" . "\n LEFT JOIN #__sportsmanager_verstoesse AS t2 ON t1.verstoesse_id = t2.verstoesse_id" . "\n LEFT JOIN #__sportsmanager_begegnung AS t3 ON t1.begegnung_id = t3.begegnung_id" @@ -6288,7 +6359,7 @@ function adminOrdnungsstrafen(): void $query .= "\n AND t8.id = '" . $filter['aussteller'] . "'"; $query .= "\n ORDER BY ordnungsstrafen_id"; $rows = loadObjectList($db, $query); - + HTML_sportsmanager_admin::adminOrdnungsstrafen($rows,$saisons,$veranstaltungen,$vereine,$aussteller,$filter); } @@ -6303,12 +6374,17 @@ function adminEditOrdnungsstrafe(): void $id = $jInput->get('id', 0, 'INT'); $begegnungid = $jInput->get('begegnungid', 0, 'INT'); $veranstaltungid = $jInput->get('veranstaltungid', 0, 'INT'); - + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id); + if ($id == 0){ $row = null; - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id); } else { - $query = "SELECT * FROM #__sportsmanager_ordnungsstrafen WHERE ordnungsstrafen_id = $id"; + $query = "SELECT t1.*, t2.name as aussteller, t3.name as versender, t4.name as rechnungssteller" + . "\n FROM #__sportsmanager_ordnungsstrafen AS t1" + . "\n LEFT JOIN #__users AS t2 ON t1.aussteller_id = t2.id" + . "\n LEFT JOIN #__users AS t3 ON t1.versender_id = t3.id" + . "\n LEFT JOIN #__users AS t4 ON t1.rechnungssteller_id = t4.id" + . "\n WHERE ordnungsstrafen_id = $id;"; $rows = loadObjectList($db, $query); if (count($rows) < 1) die("Wrong id!"); $row = $rows[0]; @@ -6319,12 +6395,12 @@ function adminEditOrdnungsstrafe(): void if ($begegnungid == 0) redirectSportsManagerURL('&task=admin_ordnungsstrafen', 'Missing id'); - $query = "SELECT * FROM #__users WHERE id = '$user_id';"; + $query = "SELECT id, name FROM #__users WHERE id = '$user_id';"; $aussteller = loadObjectList($db, $query); $query = "SELECT t1.begegnung_id, t1.heim_team_id, t1.gast_team_id, t1.gast_team_id," . "\n t2.teamname AS heim_name, t3.teamname AS gast_name," - . "\n t1.zeitpunkt, t1.spieltag, t1.spieltag_titel, t1.spiel_nr," + . "\n t1.zeitpunkt, t1.spieltag, t1.spieltag_titel, t1.spiel_nr, t4.saison_id," . "\n t4.veranstaltung_id as veranstaltung_id, t4.bezeichnung AS veranstaltung, t4.regelwerke_id," . "\n CONCAT(t2.teamname, ' - ', t3.teamname, ' (', t4.bezeichnung, ')') AS begegnung" . "\n FROM #__sportsmanager_begegnung AS t1" @@ -6358,7 +6434,9 @@ function adminEditOrdnungsstrafe(): void if ($jInput->get('cancel', false, 'BOOL')) { redirectSportsManagerURL('&task=admin_ordnungsstrafen'); } - + + $filter_saison_id = $jInput->get('filter_saison_id', 0, 'INT'); + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id); $id = $jInput->get('id', 0, 'INT'); $verstoesse_id = $jInput->get('verstoesse_id', 0, 'INT'); $begegnung_id = $jInput->get('begegnung_id', 0, 'INT'); @@ -6369,28 +6447,62 @@ function adminEditOrdnungsstrafe(): void $weitere_angaben = $db->escape(trim($jInput->get('weitere_angaben', '', 'RAW'))); $status = $db->escape($jInput->get('status', '', 'RAW')); - if ($id == 0) - $query = "INSERT INTO #__sportsmanager_ordnungsstrafen" - . "\n (ordnungsstrafen_id,verstoesse_id,begegnung_id,team_id,aussteller_id,ausstelldatum,multiplikator,weitere_angaben,status)" - . "\n VALUES (NULL,'$verstoesse_id','$begegnung_id','$team_id','$aussteller_id','$ausstelldatum','$multiplikator','$weitere_angaben','$status');"; - else { - $query = "UPDATE #__sportsmanager_ordnungsstrafen" - . "\n SET verstoesse_id = '$verstoesse_id'," - . "\n begegnung_id = '$begegnung_id'," - . "\n team_id = '$team_id'," - . "\n aussteller_id = '$aussteller_id'," - . "\n ausstelldatum = '$ausstelldatum'," - . "\n multiplikator = '$multiplikator'," - . "\n weitere_angaben = '$weitere_angaben'," - . "\n status = '$status'" - . "\n WHERE ordnungsstrafen_id = $id"; - } - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } + if ($jInput->get('save', false, 'BOOL')) { + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_ordnungsstrafen" + . "\n (ordnungsstrafen_id,verstoesse_id,begegnung_id,team_id,aussteller_id,ausstelldatum,multiplikator,weitere_angaben)" + . "\n VALUES (NULL,'$verstoesse_id','$begegnung_id','$team_id','$aussteller_id','$ausstelldatum','$multiplikator','$weitere_angaben');"; + } else { + $query = "UPDATE #__sportsmanager_ordnungsstrafen" + . "\n SET verstoesse_id = '$verstoesse_id'," + . "\n begegnung_id = '$begegnung_id'," + . "\n team_id = '$team_id'," + . "\n aussteller_id = '$aussteller_id'," + . "\n ausstelldatum = '$ausstelldatum'," + . "\n multiplikator = '$multiplikator'," + . "\n weitere_angaben = '$weitere_angaben'" + . "\n WHERE ordnungsstrafen_id = $id;"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_ordnungsstrafen&filter_saison_id='.$filter_saison_id); + } - redirectSportsManagerURL('&task=admin_ordnungsstrafen'); + if ($jInput->get('set_versender', '', 'RAW') == 'set') { + echo "Set Versender"; + $query = "UPDATE #__sportsmanager_ordnungsstrafen" + . "\n SET versender_id = '$user_id'," + . "\n versendedatum = CURTIME()" + . "\n WHERE ordnungsstrafen_id = $id;"; + } + if ($jInput->get('set_versender', '', 'RAW') == 'reset') { + $query = "UPDATE #__sportsmanager_ordnungsstrafen" + . "\n SET versender_id = NULL," + . "\n versendedatum = NULL," + . "\n rechnungssteller_id = NULL," + . "\n rechnungsdatum = NULL" + . "\n WHERE ordnungsstrafen_id = $id;"; + } + if ($jInput->get('set_rechnung', '', 'RAW') == 'set') { + echo "Set Versender"; + $query = "UPDATE #__sportsmanager_ordnungsstrafen" + . "\n SET rechnungssteller_id = '$user_id'," + . "\n rechnungsdatum = CURTIME()" + . "\n WHERE ordnungsstrafen_id = $id;"; + } + if ($jInput->get('set_rechnung', '', 'RAW') == 'reset') { + $query = "UPDATE #__sportsmanager_ordnungsstrafen" + . "\n SET rechnungssteller_id = NULL," + . "\n rechnungsdatum = NULL" + . "\n WHERE ordnungsstrafen_id = $id;"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + redirectSportsManagerURL('&task=admin_ordnungsstrafe_edit&id='.$id); } #[NoReturn] function adminRemoveOrdnungsstrafe(): void @@ -6425,9 +6537,11 @@ function adminEditOrdnungsstrafe(): void keinZugriff(true); $query = "SELECT t1.ordnungsstrafen_id AS ID, t3.begegnung_id AS Spiel_ID, t7.bezeichnung AS Liga," - . "\n t3.spieltag AS Spieltag, t9.vereinsname AS Verein, t2.verstoss AS Verstoss, t8.name AS Aussteller," + . "\n t3.spieltag AS Spieltag, t9.vereinsname AS Verein, t2.verstoss AS Verstoss," . "\n (t1.multiplikator * t2.gebuehr + t2.zusatzgebuehr) AS Gebuehr," - . "\n t1.ausstelldatum AS Ausstelldatum, t1.status AS Status" + . "\n t8.name AS Aussteller, t1.ausstelldatum AS Ausstelldatum," + . "\n t10.name AS Versender, t1.versendedatum AS Versendedatum," + . "\n t11.name AS Rechnung, t1.rechnungsdatum AS Rechnungsdatum" . "\n FROM #__sportsmanager_ordnungsstrafen AS t1" . "\n LEFT JOIN #__sportsmanager_verstoesse AS t2 ON t1.verstoesse_id = t2.verstoesse_id" . "\n LEFT JOIN #__sportsmanager_begegnung AS t3 ON t1.begegnung_id = t3.begegnung_id" @@ -6437,6 +6551,8 @@ function adminEditOrdnungsstrafe(): void . "\n LEFT JOIN #__sportsmanager_team AS t6 ON t3.gast_team_id = t6.team_id" . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t7 ON t4.veranstaltung_id = t7.veranstaltung_id" . "\n LEFT JOIN #__users AS t8 ON t1.aussteller_id = t8.id" + . "\n LEFT JOIN #__users AS t10 ON t1.versender_id = t10.id" + . "\n LEFT JOIN #__users AS t11 ON t1.rechnungssteller_id = t11.id" . "\n WHERE t7.saison_id = '" . $filter['saison'] . "'"; if (!empty($filter['verein'])) $query .= "\n AND t9.verein_id = '" . $filter['verein'] . "'"; diff --git a/src/structure/components/com_sportsmanager/database/update.php b/src/structure/components/com_sportsmanager/database/update.php index edddbfc..2ee9bf3 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -5447,10 +5447,13 @@ function updateDatabase(): void . "\n `begegnung_id` int(11) NOT NULL DEFAULT 0," . "\n `team_id` int(11) NOT NULL DEFAULT 0," . "\n `aussteller_id` int(11) NOT NULL DEFAULT 0," - . "\n `ausstelldatum` date NOT NULL DEFAULT current_timestamp()," + . "\n `ausstelldatum` datetime NOT NULL DEFAULT current_timestamp()," + . "\n `versender_id` int(11) DEFAULT NULL," + . "\n `versendedatum` datetime DEFAULT NULL," + . "\n `rechnungssteller_id` int(11) DEFAULT NULL," + . "\n `rechnungsdatum` datetime DEFAULT NULL," . "\n `multiplikator` tinyint(1) NOT NULL DEFAULT 1," - . "\n `weitere_angaben` text NOT NULL DEFAULT ''," - . "\n `status` varchar(16) NOT NULL DEFAULT ''," + . "\n `weitere_angaben` text NOT NULL DEFAULT ''" . "\n PRIMARY KEY (`ordnungsstrafen_id`)" . "\n ) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 233be91..e6f986e 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -350,6 +350,9 @@ if ($task == "spielerbild") { case 'admin_rechnung_remove': adminRemoveRechnung(); break; + case 'admin_joomla_mail_senden': + sendJoomlaMail(); + break; case 'admin_regelwerke': adminRegelwerke(); break; diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php index eb9a900..8ba6f5e 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -6771,7 +6771,7 @@ class HTML_sportsmanager_admin
@@ -6820,9 +6820,17 @@ class HTML_sportsmanager_admin - - - + + + name == "Ordnungsstrafe"){ ?> + + + + + + @@ -6967,8 +6975,8 @@ class HTML_sportsmanager_admin Match - + @@ -6990,9 +6998,9 @@ class HTML_sportsmanager_admin begegnung_id; ?> teamname; ?> verstoss; ?> - name; ?> gebuehr; ?> - ausstelldatum; ?> + name; ?> + ausstelldatum)); ?> status; ?>
@@ -7035,7 +7042,7 @@ class HTML_sportsmanager_admin + id="issuer" size="1" style='height: 34px; width: 200px;' readonly + value="aussteller_id) ? $aussteller->name : $row->aussteller); ?>"/> + value="aussteller_id) ? $aussteller->id : $row->aussteller_id); ?>"/> + + - + + + + + + + + + + + + + + + + versendedatum)){ ?> + + + + +
+ + + + "/> + setQuery( $query );