Freischaltungslink per Mail an ausgewählte Admins

In diesem moderierten Forum werden Code-Schnipsel, die zu klein sind, um richtige Mods zu sein, abgelegt.
Bei Fragen oder Problemen benutze bitte das Forum phpBB 2.0: Mod Support.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
gn#36
Administrator
Administrator
Beiträge: 9122
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Freischaltungslink per Mail an ausgewählte Admins

Beitragvon gn#36 » 07.10.2007 14:07

Wenn für die Registrierung eingestellt ist, dass die Freischaltung durch einen Administrator erfolgen muss, dann erhalten üblicherweise alle Administratoren des Boards eine Mail, falls eine Neuregistrierung stattgefunden hat.

Mit dem folgenden Snippet ist es möglich, dass statt allen Administratoren nur einige wenige Administratoren diese Mail erhalten.

Wenn du einen Blick in die Datei includes/usercp_register.php wirfst, dann wirst du folgenden Code finden:

Code: Alles auswählen

else if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
             {
                $sql = 'SELECT user_email, user_lang
                   FROM ' . USERS_TABLE . '
                   WHERE user_level = ' . ADMIN;
                
                if ( !($result = $db->sql_query($sql)) )
                {
                   message_die(GENERAL_ERROR, 'Could not select Administrators', '', __LINE__, __FILE__, $sql);
                }
                
                while ($row = $db->sql_fetchrow($result))
                {
                   $emailer->from($board_config['board_email']);
                   $emailer->replyto($board_config['board_email']);
                   
                   $emailer->email_address(trim($row['user_email']));
                   $emailer->use_template("admin_activate", $row['user_lang']);
                   $emailer->set_subject($lang['Reactivate']);
 
                   $emailer->assign_vars(array(
                      'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
                      'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),
 
                      'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
                   );
                   $emailer->send();
                   $emailer->reset();
                }
                $db->sql_freeresult($result);
             }

Ich gehe davon aus dass sich die gewünschten Admins nicht ständig ändern, so dass es ein paar hartcodierte Werte tun sollten und wir das ganze nicht über den Adminbereich steuern müssen.

Gleich am Anfang des obigen Codes findet eine SQL Abfrage statt, in der die Administratoren gesucht werden. Wenn wir hier nur nach den gewünschten Admins suchen, dann sollten die übrigen keine Mail mehr bekommen.
Ändere daher dieses Segment des obigen Codes:

Code: Alles auswählen

$sql = 'SELECT user_email, user_lang
                   FROM ' . USERS_TABLE . '
                   WHERE user_level = ' . ADMIN;

in das hier:

Code: Alles auswählen

$adminliste_empfaenger = '2,4,6';
$sql = 'SELECT user_email, user_lang
                   FROM ' . USERS_TABLE . '
                   WHERE user_level = ' . ADMIN . " AND user_id IN ($adminliste_empfaenger)";

Hier werden nun die Admins mit der ID 2, 4 und 6 gewählt. Zur Sicherheit aber auch nur, wenn sie tatsächlich Admin sind. Diese IDs einfach durch die gewünschten Werte ersetzen (ID's kann man zum Beispiel über die Profile der User herausbekommen, sie stehen dann als u=... in der Adresszeile des Browsers) und jeden Wert vom vorherigen immer mit einem Komma trennen (Leerzeichen sind auch erlaubt, müssen aber zusätzlich zu den Kommas eingegeben werden, sonst gibt's einen Syntaxfehler). Nach dieser Änderung sollten nur noch die gelisteten Admins eine Mail bekommen. Sollte einer dieser User aus irgend einem Grund zum normalen User degradiert werden dann bekommt er auch keine Mails mehr, selbst wenn er in dieser Liste steht. Bitte sichere aber vorher wie bei allen anderen Änderungen alle Dateien und die Datenbank.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.

Zurück zu „phpBB 2.0: Snippets“