AddOn zum Easy Assign User To Groups MOD 1.0.6

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
schmidtedv
Beiträge: 607
Registriert: So 13.Feb, 2005 10:46
Wohnort: St. Blasien (seit 01.06)
Kontaktdaten:

AddOn zum Easy Assign User To Groups MOD 1.0.6

Beitrag von schmidtedv »

Hier mal wieder eins meiner selbstgefummelten...höhö:

Der MOD funktioniert ja so, das man einstellen kann, ob der Benutzer bei hinzufügen zu einer Benutzergruppe mittels admin_users.php eine Mail erhalten soll oder nicht. Das E-Mail-Template hierzu listet zudem die bestehenden Mitgliedschaften auf.

Meine Idee war nun, das ganze auch auf das Löschen einer Mail auszuweiten ohne den MOD zu stark zu verändern (dafür kann ich zu wenig, hehe). Netter weise arbeitet der MOD mit klaren Variablen für den Fall einer Hinzufügung und E-Mail, sodass dies nicht schwer zu übertragen war.

Folgende Änderungen sind nötig:

In der lang_admin.php die Übeersetzung in der Zeile $lang['Email_notification'] in

Code: Alles auswählen

$lang['Email_notification'] = 'Benutzer per E-Mail benachrichtigen, falls hier seine Gruppen-Mitgliedschaft geändert wurde';
ändern.

Das Template current_groups.tpl in 2 Dateien ändern: current_groups_add.tpl und current_groups_del.tpl und nach Inhaltsänderung neu hochladen (altes Template wird nicht mehr gebraucht):

ADD-Inhalt

Code: Alles auswählen

Subject: Sie wurden zu einer oder mehreren Benutzergruppe(n) auf "{SITENAME}" hinzugefügt!
Charset: iso-8859-1

Hallo,

Sie wurden zu einer oder mehreren Benutzergruppe(n) auf "{SITENAME}" hinzugefügt.

Diese Aktion wurde durch einen Administrator auf "{SITENAME}" durchgeführt.

Falls Sie Fragen haben, kontaktieren Sie bitte einen Administrator auf "{SITENAME}".


Sie sind nun Mitglied folgender Gruppen:

{GROUP_NAMES} 


{EMAIL_SIG}
DEL-Inhalt

Code: Alles auswählen

Subject: Sie wurden aus einer oder mehreren Benutzergruppe(n) auf "{SITENAME}" entfernt!
Charset: iso-8859-1

Hallo,

Sie wurden aus einer oder mehreren Benutzergruppe(n) auf "{SITENAME}" entfernt.

Diese Aktion wurde durch einen Administrator auf "{SITENAME}" durchgeführt.

Falls Sie Fragen haben, kontaktieren Sie bitte einen Administrator auf "{SITENAME}".


Sie sind nun Mitglied folgender Gruppen:

{GROUP_NAMES} 


{EMAIL_SIG}
Nun fehlt nur noch die folgende Änderung in der admin_users.php:

Unter

Code: Alles auswählen

$sql = "DELETE FROM " . USER_GROUP_TABLE . "
					WHERE user_id = " . $row['user_id'] . "
						AND group_id = $group_id";
					if ( !$db->sql_query($sql) )
					{
						message_die(GENERAL_ERROR, 'Could not add delete user from group marked \'NO\'', '', __LINE__, __FILE__, $sql);
					}
also unter dem '}' bitte

Code: Alles auswählen

$temp_count = 2;
einfügen.

Code: Alles auswählen

$emailer->use_template('current_groups', $user_lang);
ersetzen mit

Code: Alles auswählen

$emailer->use_template('current_groups_add', $user_lang);
und unter

Code: Alles auswählen

$emailer->set_subject($lang['Group_added']);

$emailer->assign_vars(array(
'SITENAME' => $board_config['sitename'],
'GROUP_NAMES' => $group_name,
'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '')
);
$emailer->send();
$emailer->reset();
}
(Die Stelle bitte hier nicht direkt kopieren, ist bestimmt mit anderen TABS bei euch drin. Am Besten manuell suchen nach 'GROUP_NAMES' ...) folgendes einfügen:

Code: Alles auswählen

// now, find out if user has been deleted from any groups and the admin wants a notification email sent out
		if( $temp_count == 2 && $email_notification == 1 )
		{
			// the following code is adapted from code in groupsp.php
			// Email the user and tell him what groups he is now in
			$group_name = '';
			$sql = "SELECT g.group_name, u.username, u.user_email, u.user_lang
			FROM " . GROUPS_TABLE . " g, " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
				WHERE u.user_id = $user_id
				AND ug.user_id = u.user_id
				AND g.group_id = ug.group_id
				AND ug.user_pending = 0";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not get group information', '', __LINE__, __FILE__, $group_sql);
			}
			$row = $db->sql_fetchrow($result);
			$username = $row['username'];
			$user_email = $row['user_email'];
			$user_lang = $row['user_lang'];
			$group_name = $row['group_name'];
				while ( $row = $db->sql_fetchrow($result) )
				{
					$group_name = $group_name . "\n" . $row['group_name'];
				}
			include($phpbb_root_path . 'includes/emailer.'.$phpEx);
			$emailer = new emailer($board_config['smtp_delivery']);

			$emailer->from($board_config['board_email']);
			$emailer->replyto($board_config['board_email']);

			$emailer->use_template('current_groups_del', $user_lang);
			$emailer->email_address($user_email);
			$emailer->set_subject($lang['Group_added']);

			$emailer->assign_vars(array(
				'SITENAME' => $board_config['sitename'],
				'GROUP_NAMES' => $group_name,
				'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '')
			);
			$emailer->send();
			$emailer->reset();
		}
Das wars... :-) Ich hoffe, es nützt jemandem...
Antworten