call to undefinied Method emailer

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
Benutzeravatar
kird1
Mitglied
Beiträge: 134
Registriert: 12.10.2004 20:09

call to undefinied Method emailer

Beitrag von kird1 »

Ich habe den Aktivierungsschlüssel-nochmal-senden-MOD bei mir eingebaut.
Auf meinem Stratoserver hat das einwandfrei funktioniert, seit dem ich jetzt aber auf einem anderen Server bin und php5 habe,
geht das Ding nicht mehr. Ich verstehe aber nicht, warum - denn im Prinzip ist die Datei die selbe, wie wie die Datei, die dem User bei seiner Anmeldung die erste Aktivierungsmail sendet.
Kann mir einer auf die Sprünge helfen, warum der meckert?

(zum Vergleich die originale usercp_activate.php ganz unten)


Fehlermeldung:
call to undefinied Method emailer::from() in usercp_resend.php on Line 84

Code: Alles auswählen

<?php
/***************************************************************************
 *                             usercp_resend.php
 *                            -------------------
 *   begin                : Saturday, Jun 24, 2006
 *   copyright            : ycl6, damnian
 *   email                : damnian at phpbb dot cc
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

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

if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
{
	message_die(GENERAL_ERROR, 'Invalid_activation');
}

if ( isset($HTTP_POST_VARS['submit']) )
{
	$username = isset($HTTP_POST_VARS['username']) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
	$email = trim(htmlspecialchars($HTTP_POST_VARS['email']));

	$sql = "SELECT user_id, user_email, user_active, user_actkey, user_lang, user_last_login_try
		FROM " . USERS_TABLE . "
		WHERE username = '" . str_replace("\\'", "''", $username) . "'";

	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error in obtaining userdata', '', __LINE__, __FILE__, $sql);
	}

	if ( !($row = $db->sql_fetchrow($result)) )
	{
		// No such name
		message_die(GENERAL_ERROR, 'User_not_exist');
	}

	if ( $row['user_email'] != $email )
	{
		// Wrong Email provided
		message_die(GENERAL_ERROR, 'No_email_match');
	}

	if ( !empty($row['user_active']) )
	{
		// Already activated
		message_die(GENERAL_ERROR, 'Already_activated');
	}

	if ( empty($row['user_actkey']) )
	{
		// No activation key
		message_die(GENERAL_ERROR, 'No_actkey');
	}

	$current_time = time();

	if (intval($row['user_last_login_try']) > 0 && ($current_time - intval($row['user_last_login_try'])) < $board_config['login_reset_time'])
	{
		// Request flood
		message_die(GENERAL_ERROR, 'Send_actmail_flood_error');
	}

	// Start the email process
	$unhtml_specialchars_match = array('#>#', '#<#', '#"#', '#&#');
	$unhtml_specialchars_replace = array('>', '<', '"', '&');

	include_once($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->email_address(trim($row['user_email']));
	$emailer->use_template("user_welcome_inactive", $row['user_lang']);
	$emailer->set_subject($lang['Resend_activation_email']);

	$emailer->assign_vars(array(
		'SITENAME' => $board_config['sitename'],
		'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
		'PASSWORD' => '',
		'WELCOME_MSG' => sprintf($lang['Welcome_subject'], $board_config['sitename']),
		'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

		'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $row['user_id'] . '&act_key=' . $row['user_actkey'])
	);
	$emailer->send();
	$emailer->reset();

	// Update last activation sent time
	$sql = "UPDATE " . USERS_TABLE . " 
		SET user_last_login_try = $current_time
		WHERE username = '" . str_replace("\\'", "''", $username) . "'";

	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not update userdata', '', __LINE__, __FILE__, $sql);
	}

	message_die(GENERAL_MESSAGE, 'Resend_activation_email_done');
}
else
{
	$page_title = $lang['Resend_activation_email'];
	include($phpbb_root_path . 'includes/page_header.'.$phpEx);

	$template->set_filenames(array(
		'body' => 'profile_send_pass.tpl')
	);

	$template->assign_vars(array(
		'L_SEND_PASSWORD' => $lang['Resend_activation_email'],
		'L_ITEMS_REQUIRED' => $lang['Items_required'],
		'L_SUBMIT' => $lang['Submit'],
		'L_RESET' => $lang['Reset'],

		'S_PROFILE_ACTION' => append_sid("profile.$phpEx?mode=resend"),
		'S_HIDDEN_FIELDS' => '')
	);

	$template->pparse('body');
	include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}

?>



Original-phpBB2-Datei "usercp_activate.php"

Code: Alles auswählen

<?php
/***************************************************************************
 *                            usercp_activate.php
 *                            -------------------
 *   begin                : Saturday, Feb 13, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: usercp_activate.php,v 1.6.2.5 2002/12/22 16:01:16 psotfx Exp $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *
 ***************************************************************************/

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

$sql = "SELECT user_active, user_id, username, user_email, user_newpasswd, user_lang, user_actkey 
	FROM " . USERS_TABLE . "
	WHERE user_id = " . intval($HTTP_GET_VARS[POST_USERS_URL]);
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not obtain user information', '', __LINE__, __FILE__, $sql);
}

if ( $row = $db->sql_fetchrow($result) )
{
	if ( $row['user_active'] && $row['user_actkey'] == '' )
	{
		$template->assign_vars(array(
			'META' => '<meta http-equiv="refresh" content="10;url=' . append_sid("index.$phpEx") . '">')
		);

		message_die(GENERAL_MESSAGE, $lang['Already_activated']);
	}
	else if ( $row['user_actkey'] == $HTTP_GET_VARS['act_key'] )
	{
		$sql_update_pass = ( $row['user_newpasswd'] != '' ) ? ", user_password = '" . str_replace("\'", "''", $row['user_newpasswd']) . "', user_newpasswd = ''" : '';

		$sql = "UPDATE " . USERS_TABLE . "
			SET user_active = 1, user_actkey = ''" . $sql_update_pass . " 
			WHERE user_id = " . $row['user_id']; 
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql_update);
		}

		if ( intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $sql_update_pass == '' )
		{
			include($phpbb_root_path . 'includes/emailer.'.$phpEx);
			$emailer = new emailer($board_config['smtp_delivery']);

			$email_headers = 'From: ' . $board_config['board_email'] . "\nReturn-Path: " . $board_config['board_email'] . "\n";

			$emailer->use_template('admin_welcome_activated', $row['user_lang']);
			$emailer->email_address($row['user_email']);
			$emailer->set_subject($lang['Account_activated_subject']);
			$emailer->extra_headers($email_headers);

			$emailer->assign_vars(array(
				'SITENAME' => $board_config['sitename'], 
				'USERNAME' => $row['username'],
				'PASSWORD' => $password_confirm,
				'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '')
			);
			$emailer->send();
			$emailer->reset();

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

			message_die(GENERAL_MESSAGE, $lang['Account_active_admin']);
		}
		else
		{
			$template->assign_vars(array(
				'META' => '<meta http-equiv="refresh" content="10;url=' . append_sid("index.$phpEx") . '">')
			);

			$message = ( $sql_update_pass == '' ) ? $lang['Account_active'] : $lang['Password_activated']; 
			message_die(GENERAL_MESSAGE, $message);
		}
	}
	else
	{
		message_die(GENERAL_MESSAGE, $lang['Wrong_activation']);
	}
}
else
{
	message_die(GENERAL_MESSAGE, $lang['No_such_user']);
}

?>






Die bemängelte Funktion "from()" habe ich bereits testweise hiermit ersetzt:

Code: Alles auswählen

$emailer = 'From: ' . $board_config['board_email'];
das scheint auch zu gehen, aber dann meckert er gleich über die nächste Zeile, "use_template()" wäre eine undefinierte Methode - bei der usercp_activate.php heißt das Ding aber doch genauso........und dort funktioniert das :roll:


vielen Dank
kird1
Grüße
kird1
Antworten

Zurück zu „phpBB 2.0: Mod Support“