Contao-Camp 2024
Ergebnis 1 bis 4 von 4

Thema: Bei Änderung im FE mit Modul 'Persönliche Daten' Benachrichtigung (E-Mail) an Admin

  1. #1
    Contao-Nutzer
    Registriert seit
    25.09.2011.
    Ort
    München
    Beiträge
    18

    Frage Bei Änderung im FE mit Modul 'Persönliche Daten' Benachrichtigung (E-Mail) an Admin

    Hallo,
    Gibt es eine Möglichkeit der Benachrichtung (E-Mail an Admin oder andere Empfänger), wenn ein Mitglied im FE Änderungen seiner Daten über das Modul 'Persönliche Daten' vornimmt.
    Die Daten müssen dann mit einer anderen Datenbank abgeglichen werden, was nur manuell gut geht.
    Ich verwende V3.2.19.

    Danke

  2. #2
    Contao-Fan
    Registriert seit
    16.05.2014.
    Beiträge
    295

    Standard

    Schau dir mal den $GLOBALS['TL_HOOKS']['updatePersonalData'] Hook an.

  3. #3
    Contao-Nutzer Avatar von Timo
    Registriert seit
    22.06.2009.
    Beiträge
    75

    Standard Benachrichtigung was geändert wurde und nur bei Änderung bestimmter Felder

    Hallo,

    ich nutze den updatepersonaldata hook, um den Admin zu benachrichtigen, wenn ein user seine pers Daten ändert. Das funktioniert einwandfrei. Siehe folgender php Code.

    Was muss ich ergänzen, wenn ich nur eine E-Mail-Benachrichtigung an den Admin auslösen will, wenn der User seine E-Mail und Handynummer oder Adresse ändert nicht aber bei PW oder BN Änderung.

    Wie kann ich in der E-Mail-Benachrichtigung sagen welches Feld geändert wurde. Also nicht den neuen Wert verschicken, sondern nur "User XY hat folgende Felder geändert: E-Mail, PLZ, Straße, Ort."

    Vielen Dank für die Unterstützung.

    PHP-Code:
    <?php

    class personalDataEmail extends \Frontend 
    {
      public function 
    sendMailOnChanges($objUser$arrData$objModule)
      {
       
    $objMail = new Email();
       
    $objMail->subject 'User '$objUser->firstname ' ' $objUser->lastname ' hat seine persönlichen Daten geändert.';
       
    $objMail->text 'Hallo Admin,'."\n"."\n" $objUser->firstname ' ' $objUser->lastname ' hat seine persönlichen Daten geändert:'."\n\n";  
         
       
    $objMail->sendTo('admin@admin.de');
      }
    }

  4. #4
    Contao-Nutzer
    Registriert seit
    17.05.2010.
    Beiträge
    17

    Standard

    Für den Vergleich nutze ich die Contao Version Klasse.

    PHP-Code:
    <?php 

    // src/EventListener/UpdatePersonalDataListener.php
    namespace App\EventListener;

    use 
    Contao\CoreBundle\ServiceAnnotation\Hook;
    use 
    Contao\Module;
    use 
    Contao\FrontendUser;
    use 
    Contao\Email;
    use 
    Contao\Versions;

    /**
     * @Hook("updatePersonalData")
     */
    class UpdatePersonalDataListener
    {
        public function 
    __invoke(FrontendUser $member, array $dataModule $module): void
        
    {
        
            
    //Objekt für den Versionsvergleich 
            
    $strTable         $member->getTable();
            
    $objVersions     = new Versions($strTable$member->id);
            
            
            
    //Verschicken einer Email: 
            //Allgemeine Vorbereitung
            
    $objEmail = new Email();
            
    $objEmail->from $GLOBALS['TL_ADMIN_EMAIL'];
            
    $objEmail->fromName 'Contao mailer';

            
    //Betreff
            
    $objEmail->subject "Änderung Mitglied Nr. " $member->id " (" implode(', '$member->groups) . ")";

            
    //Text - Einleitung
            
    $strText =             "<!DOCTYPE html><html><head>    </head>
                                <body style="
    margin0padding0;" dir="ltr">";

            
    $strText .=         "<p>Guten Tag, <br><br>" .
                                
    "einige Informationen zu Mitglied " $member->id" (" $member->lastname ", " $member->firstname ") haben sich geändert.<br>" .
                                
    "Im Folgenden finden Sie die aktuellen Daten: </p>";
            
            
    //Tabelle mit aktuellen Daten:
            
    $strText .=         "<table cellpadding="2" cellspacing="2" border="0" bordercolor="white" width="100%">";
            foreach(
    $data as $key => $value){
                
    $strText .=     "<tr><td bgcolor="#f4f4f4"><b>" . $GLOBALS['TL_DCA']['tl_member']['fields'][$key]['label'][0] ."</b></td><td> ".$value ."</td></tr>\n";
            
    }
            
    $strText .=         "</table><br><br>";
            
            
    //Contao Compare ausgeben
            
    $strText .=         "<p>Die letzten Änderungen sind hier beschrieben: </p>";        
            
    $strText .=         "<div id="diff">" $objVersions->compare(true) . "</div>";
            
            
    //Grußformel
            
    $strText .=         "<p>Viele Grüße,<br><b>Webmaster</b></p></body></html>";

            
    //Verschicken der Email
            
    $objEmail->html $strText;
            
    $objEmail->sendTo($GLOBALS['TL_ADMIN_EMAIL']);
            
            
            
    $_SESSION['TL_EMAIL_SENT'] = true;
        }
    }

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •