Browse Source

few more fixes + error handling (ban groups)

Signed-off-by: emanuele <[email protected]>
emanuele 13 years ago
parent
commit
57cb0e98b4

+ 22 - 12
Sources/ManageBans.php

@@ -377,8 +377,8 @@ function BanEdit()
 	if (!empty($context['ban_errors']))
 	{
 		foreach ($context['ban_errors'] as $error)
-			$context['errors'][$error] = $txt[$error];
-
+			$context['error_messages'][$error] = $txt[$error];
+/*
 		$context['ban']['expiration'] = array(
 				'status' => 'never',
 				'days' => 0
@@ -389,7 +389,7 @@ function BanEdit()
 				'post' => false,
 				'register' => false,
 				'login' => false,
-		);
+		);*/
 /*
 		$context['ban_suggestions'] = array(
 			'main_ip' => '',
@@ -547,6 +547,7 @@ function BanEdit()
 
 					// Default the ban name to the name of the banned member.
 					$context['ban']['name'] = $context['ban_suggestions']['member']['name'];
+					$context['ban']['from_user'] = true; // @todo: there should be a better solution
 
 					// Would be nice if we could also ban the hostname.
 					if (preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $context['ban_suggestions']['main_ip']) == 1 && empty($modSettings['disableHostnameLookup']))
@@ -628,11 +629,11 @@ function banEdit2()
 		);
 		$ban_info['db_expiration'] = $ban_info['expiration']['status'] == 'never' ? 'NULL' : ($ban_info['expiration']['status'] == 'one_day' ? time() + 24 * 60 * 60 * $ban_info['expire_date'] : 0);
 		$ban_info['full_ban'] = empty($_POST['full_ban']) ? 0 : 1;
-		$ban_info['reason'] = !empty($_POST['ban_reason']) ? $smcFunc['htmlspecialchars']($_POST['ban_reason'], ENT_QUOTES) : '';
+		$ban_info['reason'] = !empty($_POST['reason']) ? $smcFunc['htmlspecialchars']($_POST['reason'], ENT_QUOTES) : '';
 		$ban_info['name'] = !empty($_POST['ban_name']) ? $smcFunc['htmlspecialchars']($_POST['ban_name'], ENT_QUOTES) : '';
 		$ban_info['notes'] = isset($_POST['notes']) ? $smcFunc['htmlspecialchars']($_POST['notes'], ENT_QUOTES) : '';
 		$ban_info['notes'] = str_replace(array("\r", "\n", '  '), array('', '<br />', '&nbsp; '), $ban_info['notes']);
-		$ban_info['cannot']['access'] = !empty($ban_info['full_ban']) ? 1 : 0;
+		$ban_info['cannot']['access'] = empty($ban_info['full_ban']) ? 0 : 1;
 		$ban_info['cannot']['post'] = !empty($ban_info['full_ban']) || empty($_POST['cannot_post']) ? 0 : 1;
 		$ban_info['cannot']['register'] = !empty($ban_info['full_ban']) || empty($_POST['cannot_register']) ? 0 : 1;
 		$ban_info['cannot']['login'] = !empty($ban_info['full_ban']) || empty($_POST['cannot_login']) ? 0 : 1;	
@@ -653,13 +654,20 @@ function banEdit2()
 		$context['ban'] = $ban_info;
 	}
 
-	if (isset($_POST['ban_suggestion']))
+	if (isset($_POST['ban_suggestions']))
 	{
-		$triggers = array();
+		$triggers = array(
+			'main_ip' => '',
+			'hostname' => '',
+			'email' => '',
+			'member' => array(
+				'id' => 0,
+			),
+		);
 		$ban_triggers = array();
 
-		foreach ($_POST['ban_suggestion'] as $key => $value)
-			$triggers[$value] = $_POST[$value];
+		foreach ($_POST['ban_suggestions'] as $key => $value)
+			$triggers[$value] = !empty($_POST[$value]) ? $_POST[$value] : '';
 
 		$ban_triggers = validateTriggers($triggers);
 
@@ -673,7 +681,7 @@ function banEdit2()
 		}
 		elseif (!empty($ban_triggers['ban_triggers']) && !empty($context['ban_errors']))
 		{
-			$context['ban_suggestion'] = $triggers;
+			$context['ban_suggestions'] = $triggers;
 		}
 	}
 
@@ -837,8 +845,8 @@ function validateTriggers(&$triggers)
 					unset($value);
 					$context['ban_erros'][] = 'no_ban_admin';
 				}
-
-				$ban_triggers['user']['id_member'] = $user_id;
+				else
+					$ban_triggers['user']['id_member'] = $value;
 			}
 			else
 				$context['ban_erros'][] = 'no_bantype_selected';
@@ -1105,6 +1113,8 @@ function insertBanGroup($ban_info = array())
 
 	if (empty($ban_info['name']))
 		$context['ban_errors'][] = 'ban_name_empty';
+	if (empty($ban_info['cannot']['access']) && empty($ban_info['cannot']['register']) && empty($ban_info['cannot']['post']) && empty($ban_info['cannot']['login']))
+		$context['ban_errors'][] = 'ban_unknown_restriction_type';
 
 	if (!empty($context['ban_errors']))
 		return;

+ 25 - 17
Themes/default/ManageBans.template.php

@@ -27,6 +27,23 @@ function template_ban_edit()
 		echo '
 			<div class="information">', $txt['ban_add_notes'], '</div>';
 
+	// If there were errors for sending the PM, show them.
+	if (!empty($context['error_messages']))
+	{
+		echo '
+				<div class="errorbox">
+					<strong>', $txt['ban_errors_detected'], '</strong>
+					<ul>';
+
+		foreach ($context['error_messages'] as $error)
+			echo '
+						<li class="error">', $error, '</li>';
+
+		echo '
+					</ul>
+				</div>';
+	}
+
 	echo '
 			<div class="content">
 				<form action="', $scripturl, '?action=admin;area=ban;sa=edit" method="post" accept-charset="', $context['character_set'], '" onsubmit="if (this.ban_name.value == \'\') {alert(\'', $txt['ban_name_empty'], '\'); return false;} if (this.partial_ban.checked &amp;&amp; !(this.cannot_post.checked || this.cannot_register.checked || this.cannot_login.checked)) {alert(\'', $txt['ban_restriction_empty'], '\'); return false;}">
@@ -83,9 +100,8 @@ function template_ban_edit()
 						</legend>
 						<dl class="settings">
 							<dt>
-								<input type="checkbox" name="ban_suggestion[]" id="main_ip_check" value="main_ip" class="input_check" />
+								<input type="checkbox" name="ban_suggestions[]" id="main_ip_check" value="main_ip" class="input_check" ', !empty($context['ban_suggestions']['main_ip']) ? 'checked="checked ' : '', '/>
 								<label for="main_ip_check">', $txt['ban_on_ip'], '</label>
-	<div id="test_ban_name"></div>
 							</dt>
 							<dd>
 								<input type="text" name="main_ip" value="', $context['ban_suggestions']['main_ip'], '" size="44" onfocus="document.getElementById(\'main_ip_check\').checked = true;" class="input_text" />
@@ -94,7 +110,7 @@ function template_ban_edit()
 		if (empty($modSettings['disableHostnameLookup']))
 			echo '
 							<dt>
-								<input type="checkbox" name="ban_suggestion[]" id="hostname_check" value="hostname" class="input_check" />
+								<input type="checkbox" name="ban_suggestions[]" id="hostname_check" value="hostname" class="input_check" ', !empty($context['ban_suggestions']['hostname']) ? 'checked="checked ' : '', '/>
 								<label for="hostname_check">', $txt['ban_on_hostname'], '</label>
 							</dt>
 							<dd>
@@ -103,27 +119,19 @@ function template_ban_edit()
 
 		echo '
 							<dt>
-								<input type="checkbox" name="ban_suggestion[]" id="email_check" value="email" class="input_check" checked="checked" />
+								<input type="checkbox" name="ban_suggestions[]" id="email_check" value="email" class="input_check" ', !empty($context['ban_suggestions']['email']) ? 'checked="checked ' : '', '/>
 								<label for="email_check">', $txt['ban_on_email'], '</label>
 							</dt>
 							<dd>
 								<input type="text" name="email" value="', $context['ban_suggestions']['email'], '" size="44" onfocus="document.getElementById(\'email_check\').checked = true;" class="input_text" />
 							</dd>
 							<dt>
-								<input type="checkbox" name="ban_suggestion[]" id="user_check" value="user" class="input_check" checked="checked" />
+								<input type="checkbox" name="ban_suggestions[]" id="user_check" value="user" class="input_check" ', !empty($context['ban_suggestions']['user']) ? 'checked="checked' : '', '/>
 								<label for="user_check">', $txt['ban_on_username'], '</label>:
 							</dt>
-							<dd>';
-
-		if (empty($context['ban_suggestions']['member']['id']))
-			echo '
-							<input type="text" name="user" id="user" value="" size="44" class="input_text" />';
-		else
-			echo '
-							', $context['ban_suggestions']['member']['link'], '
-							<input type="hidden" name="bannedUser" value="', $context['ban_suggestions']['member']['id'], '" />';
-		echo '
-						</dd>';
+							<dd>
+								<input type="text" ', isset($context['ban']['from_user']) ? 'readonly="readonly" value="' . $context['ban_suggestions']['member']['name'] . '"' : ' value=""', ' name="user" id="user" size="44" class="input_text" />
+							</dd>';
 
 		if (!empty($context['ban_suggestions']['message_ips']))
 		{
@@ -226,7 +234,7 @@ function template_ban_edit()
 				<div class="flow_auto">
 					<div class="floatright">
 						<div class="additional_row">
-							[<a href="', $scripturl, '?action=admin;area=ban;sa=edittrigger;bg=', $context['ban']['id'], '">', $txt['ban_add_trigger'], '</a>] <input name="remove_selection" value="', $txt['ban_remove_selected_triggers'], '" class="button_submit" />
+							[<a href="', $scripturl, '?action=admin;area=ban;sa=edittrigger;bg=', $context['ban']['id'], '">', $txt['ban_add_trigger'], '</a>] <input type="submit" name="remove_selection" value="', $txt['ban_remove_selected_triggers'], '" class="button_submit" />
 						</div>
 					</div>
 				</div>

+ 1 - 0
Themes/default/languages/Admin.english.php

@@ -154,6 +154,7 @@ $txt['ban_ip'] = 'IP banning: (e.g. 192.168.12.213 or 128.0.*.*) - one entry per
 $txt['ban_email'] = 'Email banning: (e.g. [email protected]) - one entry per line';
 $txt['ban_username'] = 'User name banning: (e.g. l33tuser) - one entry per line';
 
+$txt['ban_errors_detected'] = 'The following error or errors occurred while saving or editing the ban group or trigger';
 $txt['ban_description'] = 'Here you can ban troublesome people either by IP, hostname, username, or email.';
 $txt['ban_add_new'] = 'Add new ban';
 $txt['ban_banned_entity'] = 'Banned entity';