################################################################################
##
## Hack Title: phpBB 2.0.21 - 2.0.22 Code Changes
## Hack Version: 1.0.0
## Hack Author: Complied by Thoul, code by phpBB Group
## Hack Description: All changes in phpBB made between 2.0.21 and 2.0.22.
##
## Compatibility: 2.0.21
## Installation Level: Moderate
## Installation Time: 20 minutes
##
## Files To Edit: 15
## admin/admin_board.php
## groupcp.php
## includes/functions.php
## includes/usercp_email.php
## includes/usercp_register.php
## language/lang_english/lang_main.php
## login.php
## memberlist.php
## modcp.php
## posting.php
## privmsg.php
## search.php
## viewforum.php
## viewtopic.php
## templates/subSilver/posting_body.tpl
##
## Support: http://www.phpbbhacks.com/forums
##
################################################################################
##
## You downloaded this hack from phpBBHacks.com,
## the #1 source for phpBB related downloads.
##
## Please visit http://www.phpbbhacks.com/forums for support.
##
################################################################################
##
## This hack is released under the GPL License.
##
################################################################################
##
## BEFORE ADDING THIS HACK TO YOUR FORUM, please be sure to backup ALL
## affected files.
##
################################################################################
##
##----------[ PLEASE NOTE ]------------------------------
##
## Once you have completed the code changes, create an install/ directory in
## your forum's root directory, and upload the update_to_latest.php file that
## comes in any phpBB 2.0.22 download to the install/ directory. Run
## update_to_latest.php by opening it via your web browser, just as you would a
## normal forum page. Afterward, delete the file and the install/ directory so
## that your forum is accessible again.
## You can find a download of phpBB 2.0.22 that includes update_to_latest.php
## at http://www.phpbbhacks.com/phpbbinfo.php
##
##
##----------[ OPEN ]-------------------------------------
##
admin/admin_board.php
##
##----------[ FIND ]-------------------------------------
##
$new['server_name'] = str_replace('http://', '', $new['server_name']);
}
##
##----------[ AFTER, ADD ]-------------------------------
##
// Attempt to prevent a mistake with this value.
if ($config_name == 'avatar_path')
{
$new['avatar_path'] = trim($new['avatar_path']);
if (strstr($new['avatar_path'], "\0") || !is_dir($phpbb_root_path . $new['avatar_path']) || !is_writable($phpbb_root_path . $new['avatar_path']))
{
$new['avatar_path'] = $default_config['avatar_path'];
}
}
##
##----------[ OPEN ]-------------------------------------
##
groupcp.php
##
##----------[ FIND ]-------------------------------------
##
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
##
##----------[ AFTER, ADD ]-------------------------------
##
$start = ($start < 0) ? 0 : $start;
##
##----------[ FIND ]-------------------------------------
##
FROM " . AUTH_ACCESS_TABLE . " aa
WHERE aa.group_id = g.group_id
)
)";
##
##----------[ REPLACE WITH ]-----------------------------
##
FROM " . AUTH_ACCESS_TABLE . " aa
WHERE aa.group_id = g.group_id
)
)
ORDER BY aa.auth_mod DESC";
##
##----------[ FIND ]-------------------------------------
##
$sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod
FROM " . GROUPS_TABLE . " g, " . AUTH_ACCESS_TABLE . " aa
WHERE g.group_id = $group_id
AND aa.group_id (+) = g.group_id";
##
##----------[ REPLACE WITH ]-----------------------------
##
$sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod
FROM " . GROUPS_TABLE . " g, " . AUTH_ACCESS_TABLE . " aa
WHERE g.group_id = $group_id
AND aa.group_id (+) = g.group_id
ORDER BY aa.auth_mod DESC";
##
##----------[ FIND ]-------------------------------------
##
$sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod
FROM ( " . GROUPS_TABLE . " g
LEFT JOIN " . AUTH_ACCESS_TABLE . " aa ON aa.group_id = g.group_id )
WHERE g.group_id = $group_id";
##
##----------[ REPLACE WITH ]-----------------------------
##
$sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod
FROM ( " . GROUPS_TABLE . " g
LEFT JOIN " . AUTH_ACCESS_TABLE . " aa ON aa.group_id = g.group_id )
WHERE g.group_id = $group_id
ORDER BY aa.auth_mod DESC";
##
##----------[ OPEN ]-------------------------------------
##
includes/functions.php
##
##----------[ FIND ]-------------------------------------
##
if (strstr(urldecode($url), "\n") || strstr(urldecode($url), "\r"))
##
##----------[ REPLACE WITH ]-----------------------------
##
if (strstr(urldecode($url), "\n") || strstr(urldecode($url), "\r") || strstr(urldecode($url), ';url'))
##
##----------[ OPEN ]-------------------------------------
##
includes/usercp_email.php
##
##----------[ FIND ]-------------------------------------
##
$row = $db->sql_fetchrow($result);
##
##----------[ REPLACE WITH ]-----------------------------
##
if ( $row = $db->sql_fetchrow($result) )
{
##
##----------[ FIND ]-------------------------------------
##
## This change alters only the amount of spacing before each line.
## It has no effect on the function of your forum, so you could skip
## this if you so desire. Doing so may effect the install process of
## modifications later, however.
##
$username = $row['username'];
$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 . '
' . $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 . '
' . $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,
'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,
'MESSAGE' => $message)
);
$emailer->send();
$emailer->reset();
}
$template->assign_vars(array(
'META' => '')
);
$message = $lang['Email_sent'] . '
' . sprintf($lang['Click_return_index'], '', '');
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,
'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']);
}
##
##----------[ REPLACE WITH ]-----------------------------
##
$username = $row['username'];
$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 . '
' . $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 . '
' . $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,
'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,
'MESSAGE' => $message)
);
$emailer->send();
$emailer->reset();
}
$template->assign_vars(array(
'META' => '')
);
$message = $lang['Email_sent'] . '
' . sprintf($lang['Click_return_index'], '', '');
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,
'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']);
}
##
##----------[ FIND ]-------------------------------------
##
## This is the last line of the file. Delete any space after it.
##
?>
##
##----------[ BEFORE, ADD ]------------------------------
##
}
else
{
message_die(GENERAL_ERROR, 'Could not select user data', '', __LINE__, __FILE__, $sql);
}
##
##----------[ OPEN ]-------------------------------------
##
includes/usercp_register.php
##
##----------[ FIND ]-------------------------------------
##
$popup_pm = ( isset($HTTP_POST_VARS['popup_pm']) ) ? ( ($HTTP_POST_VARS['popup_pm']) ? TRUE : 0 ) : TRUE;
##
##----------[ AFTER, ADD ]-------------------------------
##
$sid = (isset($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : 0;
##
##----------[ FIND ]-------------------------------------
##
include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);
##
##----------[ AFTER, ADD ]-------------------------------
##
// session id check
if ($sid == '' || $sid != $userdata['session_id'])
{
$error = true;
$error_msg .= ( ( isset($error_msg) ) ? '
' : '' ) . $lang['Session_invalid'];
}
##
##----------[ FIND ]-------------------------------------
##
message_die(GENERAL_ERROR, 'Could not obtain confirmation code', __LINE__, __FILE__, $sql);
##
##----------[ REPLACE WITH ]-----------------------------
##
message_die(GENERAL_ERROR, 'Could not obtain confirmation code', '', __LINE__, __FILE__, $sql);
##
##----------[ FIND ]-------------------------------------
##
message_die(GENERAL_ERROR, 'Could not delete confirmation code', __LINE__, __FILE__, $sql);
##
##----------[ REPLACE WITH ]-----------------------------
##
message_die(GENERAL_ERROR, 'Could not delete confirmation code', '', __LINE__, __FILE__, $sql);
##
##----------[ FIND ]-------------------------------------
##
$s_hidden_fields = '';
##
##----------[ AFTER, ADD ]-------------------------------
##
$s_hidden_fields .= '';
##
##----------[ OPEN ]-------------------------------------
##
language/lang_english/lang_main.php
##
##----------[ FIND ]-------------------------------------
##
//
// That's all, Folks!
// -------------------------------------------------
##
##----------[ BEFORE, ADD ]------------------------------
##
$lang['Session_invalid'] = 'Invalid Session. Please resubmit the form.';
##
##----------[ OPEN ]-------------------------------------
##
login.php
##
##----------[ FIND ]-------------------------------------
##
if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r"))
##
##----------[ REPLACE WITH ]-----------------------------
##
if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r") || strstr(urldecode($redirect), ';url'))
##
##----------[ FIND ]-------------------------------------
##
if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r"))
##
##----------[ REPLACE WITH ]-----------------------------
##
if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r") || strstr(urldecode($redirect), ';url'))
##
##----------[ OPEN ]-------------------------------------
##
memberlist.php
##
##----------[ FIND ]-------------------------------------
##
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
##
##----------[ AFTER, ADD ]-------------------------------
##
$start = ($start < 0) ? 0 : $start;
##
##----------[ OPEN ]-------------------------------------
##
modcp.php
##
##----------[ FIND ]-------------------------------------
##
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
##
##----------[ AFTER, ADD ]-------------------------------
##
$start = ($start < 0) ? 0 : $start;
##
##----------[ OPEN ]-------------------------------------
##
posting.php
##
##----------[ FIND ]-------------------------------------
##
$confirm = isset($HTTP_POST_VARS['confirm']) ? true : false;
##
##----------[ AFTER, ADD ]-------------------------------
##
$sid = (isset($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : 0;
##
##----------[ FIND ]-------------------------------------
##
message_die(GENERAL_MESSAGE, $lang['No_valid_mode']);
}
if ( $result = $db->sql_query($sql) )
{
$post_info = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
##
##----------[ REPLACE WITH ]-----------------------------
##
message_die(GENERAL_MESSAGE, $lang['No_valid_mode']);
}
if ( ($result = $db->sql_query($sql)) && ($post_info = $db->sql_fetchrow($result)) )
{
$db->sql_freeresult($result);
##
##----------[ FIND ]-------------------------------------
##
$s_hidden_fields .= ( $delete || $mode == "delete" ) ? '' : '';
##
##----------[ AFTER, ADD ]-------------------------------
##
$s_hidden_fields .= '';
##
##----------[ FIND ]-------------------------------------
##
$return_message = '';
$return_meta = '';
##
##----------[ AFTER, ADD ]-------------------------------
##
// session id check
if ($sid == '' || $sid != $userdata['session_id'])
{
$error_msg .= (!empty($error_msg)) ? '
' . $lang['Session_invalid'] : $lang['Session_invalid'];
}
##
##----------[ FIND ]-------------------------------------
##
case 'delete':
case 'poll_delete':
##
##----------[ AFTER, ADD ]-------------------------------
##
if ($error_msg != '')
{
message_die(GENERAL_MESSAGE, $error_msg);
}
##
##----------[ FIND ]-------------------------------------
##
$hidden_form_fields = '';
##
##----------[ AFTER, ADD ]-------------------------------
##
$hidden_form_fields .= '';
##
##----------[ OPEN ]-------------------------------------
##
privmsg.php
##
##----------[ FIND ]-------------------------------------
##
$save = ( isset($HTTP_POST_VARS['save']) ) ? TRUE : 0;
##
##----------[ AFTER, ADD ]-------------------------------
##
$sid = (isset($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : 0;
##
##----------[ FIND ]-------------------------------------
##
$start = ( !empty($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
##
##----------[ AFTER, ADD ]-------------------------------
##
$start = ($start < 0) ? 0 : $start;
##
##----------[ FIND ]-------------------------------------
##
if ( !empty($HTTP_POST_VARS['username']) )
##
##----------[ BEFORE, ADD ]-------------------------------
##
// session id check
if ($sid == '' || $sid != $userdata['session_id'])
{
$error = true;
$error_msg .= ( ( !empty($error_msg) ) ? '
' : '' ) . $lang['Session_invalid'];
}
##
##----------[ FIND ]-------------------------------------
##
$privmsg_message = preg_replace('##si', '</textarea>', $privmsg_message);
##
##----------[ FIND ]-------------------------------------
##
$privmsg_message = preg_replace('##si', '</textarea>', $privmsg_message);
##
##----------[ REPLACE WITH ]-----------------------------
##
// $privmsg_message = preg_replace('##si', '</textarea>', $privmsg_message);
##
##----------[ FIND ]-------------------------------------
##
$template->set_filenames(array(
'reg_header' => 'error_body.tpl')
);
##
##----------[ BEFORE, ADD ]------------------------------
##
$privmsg_message = htmlspecialchars($privmsg_message);
##
##----------[ FIND ]-------------------------------------
##
$s_hidden_fields .= '';
##
##----------[ AFTER, ADD ]-------------------------------
##
$s_hidden_fields .= '';
##
##----------[ OPEN ]-------------------------------------
##
search.php
##
##----------[ FIND ]-------------------------------------
##
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
##
##----------[ AFTER, ADD ]-------------------------------
##
$start = ($start < 0) ? 0 : $start;
##
##----------[ OPEN ]-------------------------------------
##
viewforum.php
##
##----------[ FIND ]-------------------------------------
##
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
##
##----------[ AFTER, ADD ]-------------------------------
##
$start = ($start < 0) ? 0 : $start;
##
##----------[ OPEN ]-------------------------------------
##
viewtopic.php
##
##----------[ FIND ]-------------------------------------
##
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
##
##----------[ AFTER, ADD ]-------------------------------
##
$start = ($start < 0) ? 0 : $start;
##
##----------[ OPEN ]-------------------------------------
##
## The changes for this file may not be possible in templates not based on
## subSilver. If you can't find this line in your file, just skip the change.
## It is not a vital step.
##
templates/subSilver/posting_body.tpl
##
##----------[ FIND ]-------------------------------------
##
{L_FONT_SIZE}: {L_FONT_SIZE}: