############################################################## 
## MOD Title: 		Warnings Mod 1.0.3 to 1.0.4 update
## MOD Author:	 	Xpert < xpert@phpbbguru.net > http://www.phpbbguru.net 
## MOD Description: 	Warnings system for phpBB 
## MOD Version: 	1.0.0 
## 
## Installation Level: 	Easy 
## Installation Time: 	10 Minutes 
## Files To Edit (1): 	n/a
############################################################## 
## For Security Purposes, Please Check: http://www.phpbbguru.net/mods/ for the 
## latest version of this MOD. 
############################################################## 
## MOD History:
##
##   2007-04-16 - Version 1.0.0 
##      - Initial Release 
## 
############################################################## 
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD 
############################################################## 

#
#-----[ COPY ]------------------------------------------
#
copy language/lang_russian/email/warnings_type_changed.tpl to language/lang_russian/email/warnings_type_changed.tpl

#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/warnings_posting_body.tpl

#
#-----[ FIND ]------------------------------------------
#
checked="checked"> {L_WARNING_TYPE_WARNING}

#
#-----[ IN-LINE FIND ]------------------------------------------
#
checked="checked"

#
#-----[ IN-LINE REPLACE WITH ]------------------------------------------
#
{WARNING_TYPE_1_CHECKED}

#
#-----[ FIND ]------------------------------------------
#
> {L_WARNING_TYPE_BAN}

#
#-----[ IN-LINE FIND ]------------------------------------------
#
> {L_WARNING_TYPE_BAN}

#
#-----[ IN-LINE BEFORE, ADD ]------------------------------------------
#
 {WARNING_TYPE_2_CHECKED}
 
#
#-----[ FIND ]------------------------------------------
#
</textarea>

#
#-----[ IN-LINE FIND ]------------------------------------------
#
</textarea>

#
#-----[ IN-LINE BEFORE, ADD ]------------------------------------------
#
{WARNING_TEXT}
 
#
#-----[ OPEN ]------------------------------------------
#
warnings.php

#
#-----[ FIND ]------------------------------------------
#
				'L_CANCEL' => $lang['Cancel'],

#
#-----[ AFTER, ADD ]------------------------------------------
#

				'WARNING_TYPE_1_CHECKED' => 'checked="checked"',
				'WARNING_TYPE_2_CHECKED' => '',
				'WARNING_TEXT' => '',
				
#
#-----[ FIND ]------------------------------------------
#
	case 'remove_warning':

#
#-----[ BEFORE, ADD ]------------------------------------------
#
	case 'edit_warning':
		$page_title = $lang['Warnings_CP'];
		include($phpbb_root_path . 'includes/page_header.'.$phpEx);

		//
		// Start auth check
		//
		if ( !in_array($userdata['user_level'], array(ADMIN,MOD)) )
		{
			message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']);
		}
		//
		// End Auth Check
		//

		$sql = "SELECT w.*, wt.*, u.* FROM " . WARNINGS_TABLE . " w, " . WARNINGS_TEXT_TABLE . " wt, " . USERS_TABLE . " u WHERE w.warning_id = '$warning_id' AND wt.warning_id = w.warning_id AND u.user_id = w.warning_user_id";
		$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not get warning information', '', __LINE__, __FILE__, $sql);
		$row = $db->sql_fetchrow($result)  or message_die(GENERAL_ERROR, 'Could not get warning information');

		$user_id = $row['warning_user_id'];
		$post_id = $row['warning_post_id'];

		if ( $userdata['user_level'] != ADMIN )
		{
			if ( $row['warning_poster_id'] != $userdata['user_id'] )
			{
				message_die(GENERAL_MESSAGE, 'Warning_cannot_process_not_yours');
			}
		}

		if ( isset($HTTP_POST_VARS['add_warning']) )
		{
			$warning_type = isset($HTTP_POST_VARS['warning_type']) ? intval($HTTP_POST_VARS['warning_type']) : 0;
			$warning_time = isset($HTTP_POST_VARS['warning_time']) ? intval($HTTP_POST_VARS['warning_time']) : 0;
			$warning_text = isset($HTTP_POST_VARS['warning_text']) ? $HTTP_POST_VARS['warning_text'] : '';

 			if ( empty($warning_type) || empty($warning_time) || empty($warning_text) )
 			{
 				message_die(GENERAL_MESSAGE, 'Warnings_not_enough_params');
 			}

 			if ( ( ( $warning_time < 0 ) && ( $warning_time != WARNING_INFINITY ) ) || !in_array($warning_type, array(WARNING_TYPE_WARNING, WARNING_TYPE_BAN)) )
 			{
 				message_die(GENERAL_MESSAGE, 'Warnings_wrong_params');
 			}

 			$warning_expires = ( $warning_time != WARNING_INFINITY ) ? $row['warning_posted'] + $warning_time : $warning_time;
			$warning_text = str_replace("\'", "''", $warning_text);

			$sql = "UPDATE " . WARNINGS_TABLE . " SET warning_type = '$warning_type', warning_expires = '$warning_expires' WHERE warning_id = '$warning_id'";
			$db->sql_query($sql, BEGIN_TRANSACTION) or message_die(GENERAL_ERROR, 'Could not update warning information', '', __LINE__, __FILE__, $sql);

			if ( $warning_type == WARNING_TYPE_BAN )
			{
				$sql = "DELETE FROM " . SESSIONS_TABLE . " WHERE session_user_id = " . $user_id;
				$db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not update session information', '', __LINE__, __FILE__, $sql);
			}

			if ( $row['warning_type'] != $warning_type )
			{
				if ( $row['warning_type'] == WARNING_TYPE_WARNING )
				{
					$sql = "UPDATE " . USERS_TABLE . " SET user_warnings = user_warnings - 1, user_banned = 1 WHERE user_id = '$user_id'";
				}
				else
				{
					$sql = "UPDATE " . USERS_TABLE . " SET user_warnings = user_warnings + 1, user_banned = 0 WHERE user_id = '$user_id'";
				}

				$db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not update user information', '', __LINE__, __FILE__, $sql);

				$email_template = 'warnings_type_changed';
				$email_subject =  ( $warning_type == WARNING_TYPE_WARNING ) ? $lang['You_received_warning'] : $lang['You_received_ban'];
				$email_change_text =  ( $warning_type == WARNING_TYPE_WARNING ) ? $lang['Ban_changed_to_warning'] : $lang['Warning_changed_to_ban'];

				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($email_template, stripslashes($row['user_lang']));
				$emailer->email_address($row['user_email']);
				$emailer->set_subject(sprintf($email_subject, $board_config['sitename']));

				$emailer->assign_vars(array(
					'SITENAME' => $board_config['sitename'],
					'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
					'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $row['username']), 0, 25)),
					'POST_URL' => $server_url . '?' . POST_POST_URL . '=' . $post_id . '#' . $post_id,
					'WARNING_SUBJECT' => sprintf($email_subject, $board_config['sitename']),
					'WARNING_CHANGE_TEXT' => $email_change_text
					)
				);

				$emailer->send();
				$emailer->reset();
			}

			$sql = "UPDATE " . WARNINGS_TEXT_TABLE . " SET warning_text = '$warning_text' WHERE warning_id = '$warning_id'";
			$db->sql_query($sql, END_TRANSACTION) or message_die(GENERAL_ERROR, 'Could not update user warning text information', '', __LINE__, __FILE__, $sql);

			$redirect = append_sid('viewtopic.' . $phpEx . '?' . POST_POST_URL . '=' . $post_id);
			$l_redirect = sprintf($lang['Click_return_topic'], '<a href="' . $redirect . '">', '</a>');

			$template->assign_vars(array(
				'META' => '<meta http-equiv="refresh" content="3;url=' . $redirect . '">')
			);

			message_die(GENERAL_MESSAGE, $lang['Warning_successfully_edited'] . '<br /><br />' . $l_redirect);
		}
		else
		{
			//
			// Set template files
			//
			$template->set_filenames(array(
				'body' => 'warnings_posting_body.tpl')
			);

			$hidden_fields = '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" /><input type="hidden" name="' . POST_POST_URL . '" value="' . $post_id . '"><input type="hidden" name="mode" value="' . $mode . '" /><input type="hidden" name="' . POST_WARNING_URL . '" value="' . $warning_id . '" />';

			$warning_time_values = array(1, 3, 5, 7, 14, 30);

			$warning_time_select = '<select name="warning_time">';
			$warning_time_select .= '<option value="' . WARNING_INFINITY . '">' . $lang['wt_infinity'] . '</option>';

			for($i = 0; $i < count($warning_time_values); $i++)
			{
				$warning_time_select .= '<option value="' . ($warning_time_values[$i] * 86400) . '"' . ( ( ( $row['warning_expires'] - $row['warning_posted'] ) == ( $warning_time_values[$i] * 86400 ) ) ? ' selected="selected"' : '' ) .'>' . $lang['wt_' . $warning_time_values[$i]] . '</option>';
			}
			$warning_time_select .= '</select>';

			$template->assign_vars(array(
				'L_WARN_USER' => $lang['Warn_user'],
				'L_WARNING_TYPE' => $lang['Warning_type'],
				'L_WARNING_TYPE_WARNING' => $lang['Warning_type_warning'],
				'L_WARNING_TYPE_BAN' => $lang['Warning_type_ban'],
				'L_WARNING_TIME'=> $lang['Warning_time'],
				'L_WARNING_TEXT' => $lang['Warning_text'],
				'L_CANCEL' => $lang['Cancel'],

				'WARNING_TYPE_1_CHECKED' => $row['warning_type'] == ( WARNING_TYPE_WARNING ) ? 'checked="checked"' : '',
				'WARNING_TYPE_2_CHECKED' => $row['warning_type'] == ( WARNING_TYPE_BAN ) ? 'checked="checked"' : '',
				'WARNING_TEXT' => $row['warning_text'],

				'S_WARNING_TIME' => $warning_time_select,
				'S_WARNING_ACTION' => append_sid("warnings.$phpEx"),
				'S_HIDDEN_FIELDS' => $hidden_fields)
			);

			$template->pparse('body');

			include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
		}
		break;

#
#-----[ OPEN ]------------------------------------------
#
lang_main.php

#
#-----[ FIND ]------------------------------------------
#
$lang['Warning_successfully_added'] =

#
#-----[ AFTER, ADD ]------------------------------------------
#
$lang['Warning_successfully_edited'] = '   ';

#
#-----[ FIND ]------------------------------------------
#
$lang['Warning_actions'] =

#
#-----[ AFTER, ADD ]------------------------------------------
#
$lang['Edit_warning'] = '';

#
#-----[ FIND ]------------------------------------------
#
$lang['Warnings_viewtopic'] =

#
#-----[ AFTER, ADD ]------------------------------------------
#
$lang['Warning_changed_to_ban'] = '    ';
$lang['Ban_changed_to_warning'] = '    ';

#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_viewprofile.php

#
#-----[ FIND ]------------------------------------------
#
			$warning_actions = array();
			
#
#-----[ AFTER, ADD ]------------------------------------------
#
			$warning_actions[] = '<a class="gensmall" href="warnings.' . $phpEx . '?mode=edit_warning&amp;' . POST_WARNING_URL . '=' . $row['warning_id'] . '&amp;sid=' . $userdata['session_id'] . '">' . $lang['Edit_warning'] . '</a>';
			
# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM