E-Mail Benachrichtigung von eingebundener Seite

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

E-Mail Benachrichtigung von eingebundener Seite

Beitrag von Walter91 »

Ich suche nach einem Lösungsansatz für folgendes Problem.
Registrierte User sollen per E-Mail benachrichtigt werden können wenn auf eigener eingebundener Seite ein neuer Eintrag erfolgt ist.
Eine Benachrichtigungsmail habe ich mir im Ordner /language/de/email/ schon erstellt.
Welchen Code von phpBB müsste ich dann in meine Posting-Seite einbauen damit eine Nachricht versendet wird?
In der phpBB-Wiki habe ich dazu leider nichts passendes gefunden. Hat da jemand einen Tipp?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: E-Mail Benachrichtigung von eingebundener Seite

Beitrag von Miriam »

Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

Re: E-Mail Benachrichtigung von eingebundener Seite

Beitrag von Walter91 »

Vielen Dank Miriam.
Genau das hatte ich gesucht. Hab es gleich probiert und es geht sehr gut.
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

Re: E-Mail Benachrichtigung von eingebundener Seite

Beitrag von Walter91 »

Ich muss noch mal fragen weil ich das etwas erweitern will.
Mailversand von eigener Seite funktioniert. Wird aber nur an User mit Gründerstatus versendet.
Mail soll aber an alle User gehen. Was fehlt da jetzt noch.

Code: Alles auswählen

$sql = 'SELECT user_email, username, user_lang FROM ' . USERS_TABLE . '
        WHERE ' . $db->sql_in_set('user_id', explode(', ', $processing_user)) . '
        OR user_type = ' . USER_FOUNDER . '
        GROUP BY user_email, username, user_lang';
        $result = $db->sql_query($sql);

        include($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
        $messenger = new messenger();

        while ($row = $db->sql_fetchrow($result))
        {
            $username = (!$user->data['is_registered']) ? $user->lang['ANONYMOUS'] : $user->data['username'];
            $messenger->template('new_car_typ', $row['user_lang']);
            $messenger->to($row['user_email'], $row['username']);
            $messenger->assign_vars(array(
                'BOARD_EMAIL' => $config['board_email_sig'], 
                'POSTER' => $username,
                'USERNAME' => $row['username'],
                'U_CARTYP' => generate_board_url() . "/cartype.$phpEx?action=cartyp&id=$id&df_id=$id") 
            );
            $messenger->send($row['user_notify_type']);
        }
        $messenger->save_queue();
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: E-Mail Benachrichtigung von eingebundener Seite

Beitrag von Miriam »

Es sieht auf den ersten Blick so aus, als ob die where-clause $db->sql_in_set('user_id', explode(', ', $processing_user)) keine Einschränkung vorgibt, die die Abfrage sinnvoll einschränkt.
Lass' Dir doch die Variable $sql per print ausgeben und checke das Ergebnis.

Es liegt wahrscheinlich an $processing_user.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
waldkatze
Ehemaliges Teammitglied
Beiträge: 792
Registriert: 08.03.2013 21:50

Re: E-Mail Benachrichtigung von eingebundener Seite

Beitrag von waldkatze »

Ändere das mal so ab. Dann sollte das gehen. Beachte besonders die Zeile von Miriams Tipp.

Code: Alles auswählen

$sql = 'SELECT user_email, username, user_lang FROM ' . USERS_TABLE . '
            WHERE user_id
            OR user_type = ' . USER_FOUNDER . '
            GROUP BY user_email, username, user_lang';
        $result = $db->sql_query($sql); 
Das Bremsen eines Motorrades ist die Verschwendung hochwertiger Geschwindigkeit in sinnlose Wärmeenergie.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: E-Mail Benachrichtigung von eingebundener Seite

Beitrag von Miriam »

Dann hast Du aber alle User ohne irgendwelche Einschränkungen ausgewählt. Also auch Bots, gesperrte User, noch nicht aktivierte User etc. pp.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
waldkatze
Ehemaliges Teammitglied
Beiträge: 792
Registriert: 08.03.2013 21:50

Re: E-Mail Benachrichtigung von eingebundener Seite

Beitrag von waldkatze »

Das stimmt natürlich. walter91 hatte geschrieben:
Mail soll aber an alle User gehen.
Mir ist ja jetzt nicht bekannt wie er das Script verwenden möchte. Man kann das ja auch auf bestimmte Gruppen beschränken.
Das Bremsen eines Motorrades ist die Verschwendung hochwertiger Geschwindigkeit in sinnlose Wärmeenergie.
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

Re: E-Mail Benachrichtigung von eingebundener Seite

Beitrag von Walter91 »

Erst mal vielen Dank für eure Hilfe.
Den Code von der waldkatze hab ich grade tetestet. Das geht.
Ich möchte es aber noch auf alle registrierten User beschränken.
Kann mir jemand sagen wie ich es dann schreiben müßte. Danke.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: E-Mail Benachrichtigung von eingebundener Seite

Beitrag von Miriam »

Check das:

Code: Alles auswählen

$sql = 'SELECT user_email, username, user_lang FROM ' . USERS_TABLE . '
            WHERE user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')
            ORDER BY user_email, username, user_lang';
Wieso eigentlich "GROUP BY"?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“