Benachrichtigung an den Webmaster bei Eintrag in Temin
Benachrichtigung an den Webmaster bei Eintrag in Temin
Ich habe Rechte an Redakteure vergeben, so dass sie selbständig Termine eintragen können.
funktioniert prima.
Irgendwie habe ich aber (noch) nicht gefunden, wie man in solchen Fällen eine Benachrichtigung an den Webmaster aktivieren kann.
So etwas wäre hilfreich, sonst muss der Webmaster permanent kontrollieren, ob es einen neuen Termin irgendwo gibt.
Mit RSS ist das zwar halbwegs kontrollierbar. nur wenn es viel Termin gibt und der neue Termin liegt weiter in der Zukunft, dann muss der Feadreader auf eine sehr große Zahl von Feeds eingestellt werden. Geht zwar, aber.
Hat jemand bitte einen Tipp. Danke im voraus.
Herbert
funktioniert prima.
Irgendwie habe ich aber (noch) nicht gefunden, wie man in solchen Fällen eine Benachrichtigung an den Webmaster aktivieren kann.
So etwas wäre hilfreich, sonst muss der Webmaster permanent kontrollieren, ob es einen neuen Termin irgendwo gibt.
Mit RSS ist das zwar halbwegs kontrollierbar. nur wenn es viel Termin gibt und der neue Termin liegt weiter in der Zukunft, dann muss der Feadreader auf eine sehr große Zahl von Feeds eingestellt werden. Geht zwar, aber.
Hat jemand bitte einen Tipp. Danke im voraus.
Herbert
-
- Former team member
- Beiträge: 1087
- Registriert: 2. Sep 2007, 17:12
- Wohnort: Itzstedt
- Kontaktdaten:
Diese Funktion existiert so nicht!
Man müsste da selbst Hand anlegen und z.B. sendmail nutzen. So fern das auf Deinem Webspace korrekt eingerichtet ist (gehe ich mal von aus), könnte das so aussehen:
Datei: ADMIDIO\adm_program\modules\dates\dates_function.php
Zeile: 161, einfügen (innerhalb der if-Schleife, hinter das SQL Statement)
Zeile: 97, einfügen
Zeile: 90, einfügen
Hierdurch wird eine einfache Mail-Funktion erzeugt, die im Falle eines neuen Termins eine kurze Email mit den Standardangaben des Termins an die hinterlegte Adresse versendet.
Schwachstellen: Wenn beim Speichern des Termins ein Error erzeugt wird (weswegen nun auch immer), erhälst Du die Email trotzdem, das müsste man noch mit einer Schleife o.ä. abpfangen. Ausserdem könnte man das ganze etwas transparenter machen und als Empfängeradresse die Standardemailadresse des Webmasters hinterlegen, wie es innerhalb von Admidio an diversen Stellen genutzt wird. Es gibt sicherlich noch weitere Verbesserungen, aber für eine einfach Emailbenachrichtigung wird es wohl reichen...
Gruss,
Matze
Man müsste da selbst Hand anlegen und z.B. sendmail nutzen. So fern das auf Deinem Webspace korrekt eingerichtet ist (gehe ich mal von aus), könnte das so aussehen:
Datei: ADMIDIO\adm_program\modules\dates\dates_function.php
Zeile: 161, einfügen (innerhalb der if-Schleife, hinter das SQL Statement)
Code: Alles auswählen
TerminBenachrichtigung($headline, $content, $termindatum);
Code: Alles auswählen
$termindatum = $_POST['date_from'];
Code: Alles auswählen
function TerminBenachrichtigung($headline, $content, $termindatum)
{
//Konfiguration Mail
$empfaenger = "DEINE EMAILADRESSE";
$betreff = "Hinweis auf einen neuen Termin";
$nachricht = "Es wurde ein neuer Termin angelegt:\n\nBetreff: $headline\nDatum: $termindatum\nBeschreibung: $content";
$absender = "Termin-Modul Admidio";
$absendermail = "ABSENDERADRESSE";
mail($empfaenger, $betreff, $nachricht, "From: $absender <$absendermail>");
}
Schwachstellen: Wenn beim Speichern des Termins ein Error erzeugt wird (weswegen nun auch immer), erhälst Du die Email trotzdem, das müsste man noch mit einer Schleife o.ä. abpfangen. Ausserdem könnte man das ganze etwas transparenter machen und als Empfängeradresse die Standardemailadresse des Webmasters hinterlegen, wie es innerhalb von Admidio an diversen Stellen genutzt wird. Es gibt sicherlich noch weitere Verbesserungen, aber für eine einfach Emailbenachrichtigung wird es wohl reichen...
Gruss,
Matze
Mailversand auuch an Gruppen
Ist es möglich dieses auch an Gruppen zu versenden. Ich habe mir hier einen Kalender für Mitlieder erstellt. Wie ich es aus dem bisherigen Artikel entnehmen konnte, ist ein EMail versand an einer einzelnen Person möglich. Wie kann ich hier die Gruppe eintragen bzw. wie lautet der interne Name für eine Gruppe
Danke für eine Antwort.
Danke für eine Antwort.
-
- Former team member
- Beiträge: 1087
- Registriert: 2. Sep 2007, 17:12
- Wohnort: Itzstedt
- Kontaktdaten:
Hallo Woehner,
das wird ohne weiteren Programmieraufwand nicht klappen!
In dem Codeschnipsel habe ich die PHP-Funktion mail() verwendet, dort wird eine (oder mehrere) echte Emailadresse erwartet. Wenn Du nun an die Mitglieder einer Gruppe eine Benachrichtigung senden möchtest, muss Du zunächst mal eine DB Abfrage erstellen, die Dir die Emailadressen der entsprechenden Gruppenmitglieder ausgibt (in eine Variable übergeben, Emailadressen per Simikolon trennen). Diese kannst Du abschliessend dann genauso weiterverwenden, wie oben schon beschrieben.
Gruss,
Matze
das wird ohne weiteren Programmieraufwand nicht klappen!
In dem Codeschnipsel habe ich die PHP-Funktion mail() verwendet, dort wird eine (oder mehrere) echte Emailadresse erwartet. Wenn Du nun an die Mitglieder einer Gruppe eine Benachrichtigung senden möchtest, muss Du zunächst mal eine DB Abfrage erstellen, die Dir die Emailadressen der entsprechenden Gruppenmitglieder ausgibt (in eine Variable übergeben, Emailadressen per Simikolon trennen). Diese kannst Du abschliessend dann genauso weiterverwenden, wie oben schon beschrieben.
Gruss,
Matze
-
- Former team member
- Beiträge: 1087
- Registriert: 2. Sep 2007, 17:12
- Wohnort: Itzstedt
- Kontaktdaten:
Hallo Steffen,woehner hat geschrieben:OK. Wo nehm ich dann den PHP Code her.
selbst entwickeln ist die Devise. Ein bischen PHP und SQL schadet da überhauptnicht und ist sinnvoll für so kleine eigene Anpassungen.
Ich habe auf die Schnelle mal eine einfache Abfrage erstellt. Das ganze könnte so aussehen:
Code: Alles auswählen
// Hier wird Deine Rolle eingetragen
$rolle = "ROLLE";
$datum = date("Y-m-d", time());
$empfaenger = "";
$sql = "SELECT usd_value
FROM adm_user_data, adm_roles, adm_members
WHERE usd_usf_id = 12
AND adm_roles.rol_name = '".$rolle."'
AND adm_members.mem_rol_id = adm_roles.rol_id
AND adm_user_data.usd_usr_id = adm_members.mem_usr_id
AND adm_members.mem_begin <= '".$datum."'
AND adm_members.mem_end > '".$datum."'";
$result = $g_db->query($sql);
while($row = $g_db->fetch_array($result))
{
$empfaenger = $empfaenger. $row['usd_value']. " ; ";
}
// In dieser Variablen sind nun alle Emailadressen der jeweiligen Gruppe eingetragen
$empfaenger = substr($empfaenger, 0, -3);
Gruss,
Matze
Haben sich die Zeilen geändert
Habe mich nun nochmals der Sache angenommen.
Kann es sein, dass sich die Zeilennummerierungen der PHP-Datei seit dem letzten Update (nun 2.1.7) geändert haben und ich den Code an der falschen Stelle einsetzte???
Bekomme leider keine Mail!!!!
Danke
Gruß
Steffen
Kann es sein, dass sich die Zeilennummerierungen der PHP-Datei seit dem letzten Update (nun 2.1.7) geändert haben und ich den Code an der falschen Stelle einsetzte???
Bekomme leider keine Mail!!!!
Danke
Gruß
Steffen
Zuletzt geändert von woehner am 14. Apr 2010, 13:17, insgesamt 1-mal geändert.
Nun bin ich soweit, dass eine Mail ankommt, jedoch ist der Betreff und die Beschreibung nicht gefüllt.
Gibt es diese in der neuen Version nicht mehr ????
Habe hier eingefügt (TerminBenachrichtigung)
Dann hier das Termindatum
Und am Schluß der PHP
Gibt es diese in der neuen Version nicht mehr ????
Habe hier eingefügt (TerminBenachrichtigung)
Code: Alles auswählen
// Datum & Uhrzeit formatiert zurueckschreiben
$date_arr = explode('.', $_POST['date_to']);
$time_arr = explode(':', $_POST['time_to']);
$date_to_timestamp = mktime($time_arr[0],$time_arr[1],0,$date_arr[1],$date_arr[0],$date_arr[2]);
$date_end = date('Y-m-d H:i:s', $date_to_timestamp);
$date->setValue('dat_end', $date_end);
TerminBenachrichtigung($headline, $content, $termindatum);
Code: Alles auswählen
$_POST['time_to'] = '00:00';
$date->setValue('dat_all_day', 1);
}
//Neu eingefügt
$termindatum = $_POST['date_from'];
// Datum und Uhrzeit auf Gueltigkeit pruefen
Code: Alles auswählen
//Funktion TerminBenachrichtigung
function TerminBenachrichtigung($headline, $content, $termindatum)
{
//Konfiguration Mail
$empfaenger = "test@test.de";
$betreff = "Hinweis auf einen neuen Termin";
$nachricht = "Es wurde ein neuer Termin angelegt:\n\nBetreff: $headline\nDatum: $termindatum\nBeschreibung: $content";
$absender = "Termin-Modul Admidio";
$absendermail = "webmaster@test.de";
mail($empfaenger, $betreff, $nachricht, "From: $absender <$absendermail>");
}
?>
So jetzt habe ich für alle mal meine Lösung, funktioniert beim Anlegen und Änderung.
Nachteile: kein Versand an Gruppen, die Mails müssen von Hand in das Script eingetragen werden.
Keine Mitteilung beim Löschen eines Eintrages, es funktioniert in einem anderen Testscript zwar eine Mail, jedoch ohne Inhalt bzw. Datumsangabe.
Anbei der Code welchen ich nun einsetzte (ich habe nur die Abschnitte kopiert):
Nachteile: kein Versand an Gruppen, die Mails müssen von Hand in das Script eingetragen werden.
Keine Mitteilung beim Löschen eines Eintrages, es funktioniert in einem anderen Testscript zwar eine Mail, jedoch ohne Inhalt bzw. Datumsangabe.
Anbei der Code welchen ich nun einsetzte (ich habe nur die Abschnitte kopiert):
Code: Alles auswählen
if(isset($_POST['dat_all_day']))
{
$_POST['time_from'] = '00:00';
$_POST['time_to'] = '00:00';
$date->setValue('dat_all_day', 1);
}
// Daten für Mailversand
$mailtermindatum = $_POST['date_from'];
$mailcontent = $_POST['dat_description'];
$mailheadline = $_POST['dat_headline'];
$mailbeginn = $_POST['time_from'];
$mailende = $_POST['time_to'];
$mailort = $_POST['dat_location'];
// Datum und Uhrzeit auf Gueltigkeit pruefen
if(dtCheckDate($_POST['date_from']))
Code: Alles auswählen
$date_to_timestamp = mktime($time_arr[0],$time_arr[1],0,$date_arr[1],$date_arr[0],$date_arr[2]);
$date_end = date('Y-m-d H:i:s', $date_to_timestamp);
$date->setValue('dat_end', $date_end);
// Mail erstellen
TerminBenachrichtigung($mailheadline, $mailcontent, $mailtermindatum, $mailbeginn, $mailende, $mailort);
}
else
{
$g_message->show('uhrzeit');
}
}
else
{
$g_message->show('date_invalid', 'Datum Ende');
}
// Enddatum muss groesser oder gleich dem Startdatum sein
Code: Alles auswählen
echo $date->getIcal($_SERVER['HTTP_HOST']);
exit();
}
//Funktion TerminBenachrichtigung
function TerminBenachrichtigung($mailheadline, $mailcontent, $mailtermindatum, $mailbeginn, $mailende, $mailort)
{
//Konfiguration Mail
$empfaenger = "test1@test.de;test2@test.de;test3@test.de";
$betreff = "$mailheadline am $mailtermindatum";
$nachricht = "Es wurde ein Kalendereintrag angelegt bzw. geandert.\n\nTermin: $mailheadline \n\nDatum: $mailtermindatum\n\nBeginn: $mailbeginn\n\nEnde: $mailende\n\nOrt: $mailort\n\nBemerkung:$mailcontent \n\nUm den Termin anzuzeigen, melden Sie sich im Mitgliederbereich der Hompage an.";
$absender = "Kalender Verein bla bla";
$absendermail = "webmaster@verein.de";
mail($empfaenger, $betreff, $nachricht, "From: $absender <$absendermail>");
}
?>