Benachrichtigung an den Webmaster bei Eintrag in Temin

Hast du Probleme Admidio einzurichten? Hier kannst du Fragen rund um die Einrichtung stellen.
Antworten
herb37
Beiträge: 45
Registriert: 10. Aug 2006, 17:39
Kontaktdaten:

Benachrichtigung an den Webmaster bei Eintrag in Temin

Beitrag von herb37 »

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
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

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)

Code: Alles auswählen

TerminBenachrichtigung($headline, $content, $termindatum);
Zeile: 97, einfügen

Code: Alles auswählen

$termindatum = $_POST['date_from'];
Zeile: 90, einfügen

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>");
}
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... :wink:

Gruss,
Matze
herb37
Beiträge: 45
Registriert: 10. Aug 2006, 17:39
Kontaktdaten:

Beitrag von herb37 »

Vielen Dank, ich denke, damit komme ich weiter.
Werde den code in den nächsten Tagen einbauen und dann berichten.
herb37
Beiträge: 45
Registriert: 10. Aug 2006, 17:39
Kontaktdaten:

Beitrag von herb37 »

Es ging ja leichter als ich dachte und auch schneller,

Schon erledigt und hat auf Anhieb funktioniert.
Jedenfalls kann ich damit erst einmal gut leben.
woehner
Beiträge: 37
Registriert: 14. Jul 2009, 18:01

Mailversand auuch an Gruppen

Beitrag von woehner »

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.
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

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
woehner
Beiträge: 37
Registriert: 14. Jul 2009, 18:01

Beitrag von woehner »

OK. Wo nehm ich dann den PHP Code her. Ich kann ja bereits im admidio eine Mail an eine Gruppe schreiben wo steht hierfür die Abfrage. Werde es dann porbieren dies umzusetzten. Bin jedoch Neuling auf PHP, kann aber einen Bekannten fragen.

Gruß

Steffen
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

woehner hat geschrieben:OK. Wo nehm ich dann den PHP Code her.
Hallo Steffen,

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);
Damit sollte die Email nun an verschiedenen Emailadressen gesendet werden. Das ganze ist allerdings eine einzige Email. D.h. man sieht auch die Emailadressen allesamt in der Email...

Gruss,
Matze
woehner
Beiträge: 37
Registriert: 14. Jul 2009, 18:01

Beitrag von woehner »

Vielen Dank Matzmann 2000.

Er bringt jedoch einen Fehler in der Zeile von den Rollen. Muss ich hier den Namen der Rolle eingeben oder gibt es hierfür intern eine Ordnungsnummer?
woehner
Beiträge: 37
Registriert: 14. Jul 2009, 18:01

Beitrag von woehner »

So habe nun nochmal das Thema aufgegriffen.

Leider ohne Erfolg, kann es sein, dass ich die Ergänzungen in den falschen Zeilen (Versionsstand 2.1.7) einfüge ???
woehner
Beiträge: 37
Registriert: 14. Jul 2009, 18:01

Haben sich die Zeilen geändert

Beitrag von woehner »

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
Zuletzt geändert von woehner am 14. Apr 2010, 13:17, insgesamt 1-mal geändert.
woehner
Beiträge: 37
Registriert: 14. Jul 2009, 18:01

Beitrag von woehner »

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)

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);
Dann hier das 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
Und am Schluß der PHP

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>"); 
}

?>
woehner
Beiträge: 37
Registriert: 14. Jul 2009, 18:01

Beitrag von woehner »

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):

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>"); 
}

?>
Antworten