Neue Variablen (Realname) per eMail verschicken

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
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.
Antworten
der_inquisitor
Mitglied
Beiträge: 9
Registriert: 05.12.2005 13:34

Neue Variablen (Realname) per eMail verschicken

Beitrag von der_inquisitor »

Hello world.

Habe mein Board erfolgreich um die Variablen user_realname, user_realfirstname und user_telefon erweitert.

Nur die Integration der Variablen in den eMailer bereitet mir Probleme:

Code: Alles auswählen

<?php
/***************************************************************************
 *                             usercp_email.php 
/************************************************************

if ( !defined('IN_PHPBB') )
{
	die("Hacking attempt");
	exit;
}

// Is send through board enabled? No, return to index
if (!$board_config['board_email_form'])
{
	redirect(append_sid("index.$phpEx", true));
}

if ( !empty($HTTP_GET_VARS[POST_USERS_URL]) || !empty($HTTP_POST_VARS[POST_USERS_URL]) )
{
	$user_id = ( !empty($HTTP_GET_VARS[POST_USERS_URL]) ) ? intval($HTTP_GET_VARS[POST_USERS_URL]) : intval($HTTP_POST_VARS[POST_USERS_URL]);
}
else
{
	message_die(GENERAL_MESSAGE, $lang['No_user_specified']);
}

if ( !$userdata['session_logged_in'] )
{
	redirect(append_sid("login.$phpEx?redirect=profile.$phpEx&mode=email&" . POST_USERS_URL . "=$user_id", true));
}

$sql = "SELECT username, user_realname, user_realfirstname, user_telefon, user_email, user_viewemail, user_lang  
	FROM " . USERS_TABLE . " 
	WHERE user_id = $user_id";
if ( $result = $db->sql_query($sql) )
{
	$row = $db->sql_fetchrow($result);

	$username = $row['username'];
	$user_realname = $row['user_realname'];
	$user_realfirstname = $row['user_realfirstname'];
	$user_telefon = $row['user_telefon'];
	$user_email = $row['user_email']; 
	$user_lang = $row['user_lang'];

	if ( $row['user_viewemail'] || $userdata['user_level'] == ADMIN )
	{
		if ( time() - $userdata['user_emailtime'] < $board_config['flood_interval'] )
		{
			message_die(GENERAL_MESSAGE, $lang['Flood_email_limit']);
		}

		if ( isset($HTTP_POST_VARS['submit']) )
		{
			$error = FALSE;

			if ( !empty($HTTP_POST_VARS['subject']) )
			{
				$subject = trim(stripslashes($HTTP_POST_VARS['subject']));
			}
			else
			{
				$error = TRUE;
				$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Empty_subject_email'] : $lang['Empty_subject_email'];
			}

			if ( !empty($HTTP_POST_VARS['message']) )
			{
				$message = trim(stripslashes($HTTP_POST_VARS['message']));
			}
			else
			{
				$error = TRUE;
				$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Empty_message_email'] : $lang['Empty_message_email'];
			}

			if ( !$error )
			{
				$sql = "UPDATE " . USERS_TABLE . " 
					SET user_emailtime = " . time() . " 
					WHERE user_id = " . $userdata['user_id'];
				if ( $result = $db->sql_query($sql) )
				{
					include($phpbb_root_path . 'includes/emailer.'.$phpEx);
					$emailer = new emailer($board_config['smtp_delivery']);

					$emailer->from($userdata['user_email']);
					$emailer->replyto($userdata['user_email']);

					$email_headers = 'X-AntiAbuse: Board servername - ' . $server_name . "\n";
					$email_headers .= 'X-AntiAbuse: User_id - ' . $userdata['user_id'] . "\n";
					$email_headers .= 'X-AntiAbuse: Username - ' . $userdata['username'] . "\n";
					$email_headers .= 'X-AntiAbuse: User IP - ' . decode_ip($user_ip) . "\n";

					$emailer->use_template('profile_send_email', $user_lang);
					$emailer->email_address($user_email);
					$emailer->set_subject($subject);
					$emailer->extra_headers($email_headers);

					$emailer->assign_vars(array(
						'SITENAME' => $board_config['sitename'], 
						'BOARD_EMAIL' => $board_config['board_email'], 
						'FROM_USERNAME' => $userdata['username'], 
						'TO_USERNAME' => $username, 
						'REALNAME' => $user_realname, 
						'REALFIRSTNAME' => $user_realfirstname, 
						'TELEFON' => $user_telefon, 
						'MESSAGE' => $message)
					);
					$emailer->send();
					$emailer->reset();

					if ( !empty($HTTP_POST_VARS['cc_email']) )
					{
						$emailer->from($userdata['user_email']);
						$emailer->replyto($userdata['user_email']);
						$emailer->use_template('profile_send_email');
						$emailer->email_address($userdata['user_email']);
						$emailer->set_subject($subject);

						$emailer->assign_vars(array(
							'SITENAME' => $board_config['sitename'], 
							'BOARD_EMAIL' => $board_config['board_email'], 
							'FROM_USERNAME' => $userdata['username'], 
							'TO_USERNAME' => $username, 
							'REALNAME' => $user_realname, 
							'REALFIRSTNAME' => $user_realfirstname, 
							'TELEFON' => $user_telefon, 
							'MESSAGE' => $message)
						);
						$emailer->send();
						$emailer->reset();
					}

					$template->assign_vars(array(
						'META' => '<meta http-equiv="refresh" content="5;url=' . append_sid("index.$phpEx") . '">')
					);

					$message = $lang['Email_sent'] . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');

					message_die(GENERAL_MESSAGE, $message);
				}
				else
				{
					message_die(GENERAL_ERROR, 'Could not update last email time', '', __LINE__, __FILE__, $sql);
				}
			}
		}

		include($phpbb_root_path . 'includes/page_header.'.$phpEx);

		$template->set_filenames(array(
			'body' => 'profile_send_email.tpl')
		);
		make_jumpbox('viewforum.'.$phpEx);

		if ( $error )
		{
			$template->set_filenames(array(
				'reg_header' => 'error_body.tpl')
			);
			$template->assign_vars(array(
				'ERROR_MESSAGE' => $error_msg)
			);
			$template->assign_var_from_handle('ERROR_BOX', 'reg_header');
		}

		$template->assign_vars(array(
			'USERNAME' => $username,
			'REALNAME' => $user_realname,
			'REALFIRSTNAME' => $user_realfirstname,
			'TELEFON' => $user_telefon,
			
			'S_HIDDEN_FIELDS' => '', 
			'S_POST_ACTION' => append_sid("profile.$phpEx?mode=email&" . POST_USERS_URL . "=$user_id"), 

			'L_SEND_EMAIL_MSG' => $lang['Send_email_msg'], 
			'L_RECIPIENT' => $lang['Recipient'], 
			'L_SUBJECT' => $lang['Subject'],
			'L_MESSAGE_BODY' => $lang['Message_body'], 
			'L_MESSAGE_BODY_DESC' => $lang['Email_message_desc'], 
			'L_EMPTY_SUBJECT_EMAIL' => $lang['Empty_subject_email'],
			'L_EMPTY_MESSAGE_EMAIL' => $lang['Empty_message_email'],
			'L_OPTIONS' => $lang['Options'],
			'L_CC_EMAIL' => $lang['CC_email'], 
			'L_SPELLCHECK' => $lang['Spellcheck'],
			'L_SEND_EMAIL' => $lang['Send_email'])
		);

		$template->pparse('body');

		include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
	}
	else
	{
		message_die(GENERAL_MESSAGE, $lang['User_prevent_email']);
	}
}
else
{
	message_die(GENERAL_MESSAGE, $lang['User_not_exist']);
}

?>
Mein admin_activate.tpl sieht so aus:

Code: Alles auswählen

Subject: test
Charset: iso-8859-1

Hallo!

{USER_REALFIRSTNAME} {USER_REALNAME} hat sich mit dem Username "{USERNAME}" angemeldet oder sein Login wurde deaktiviert.

Telefon: {USER_TELEFON}
eMail:   {EMAIL_SIG}


Sie sollten sich die Details ansehen (wenn nötig) und danach per Klick auf den folgenden Link aktivieren:

{U_ACTIVATE}

{EMAIL_SIG}
Jedenfalls kommen die neuen Variablen per eMail nicht an - statt der neuen Variablen erscheint kein Zeichen.
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

wenn du die Variablen so benannt hast:

Code: Alles auswählen

                  'REALNAME' => $user_realname, 
                  'REALFIRSTNAME' => $user_realfirstname, 
                  'TELEFON' => $user_telefon,
kann das so auch nichts werden:

Code: Alles auswählen

{USER_REALFIRSTNAME} {USER_REALNAME} hat sich mit dem Username "{USERNAME}" angemeldet oder sein Login wurde deaktiviert. 

Telefon: {TELEFON} 
sondern eher so:

Code: Alles auswählen

{REALFIRSTNAME} {REALNAME} hat sich mit dem Username "{USERNAME}" angemeldet oder sein Login wurde deaktiviert. 

Telefon: {TELEFON} 
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
der_inquisitor
Mitglied
Beiträge: 9
Registriert: 05.12.2005 13:34

Beitrag von der_inquisitor »

Danke, aber diesen Fehler hatte ich zwischenzeitlich erst eingebaut, nachdem es nicht funktionierte.
Jedenfalls funktioniert es auch mit dem von Dir vorgeschlagenen Template nach wie vor nicht.

Offensichtlich paßt mit dem usercp_email.php etwas nicht.
Antworten

Zurück zu „phpBB 2.0: Mod Support“