call to undefinied Method emailer
Verfasst: 24.03.2009 14:53
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:
Original-phpBB2-Datei "usercp_activate.php"
Die bemängelte Funktion "from()" habe ich bereits testweise hiermit ersetzt:
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 
vielen Dank
kird1
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'];

vielen Dank
kird1