Je vous propose un addon perso que j'ai fais pour le mod Carton Jaune
J'ai repris le mod Extended ban manager pour l'integrer avec les carton jaune
Je ne suis pas l'auteur de ces mods et j'ai juste chercher a les regrouper pour faire le mod le plus complet
J'espere que l'auteur de ces mods ne m'en voudra pas de les avoir repris
Ca permet d'avoir les bans temporaires (
J'ai rajouter aussi la posibilite de faire des interditions individulement sur chaque forum (
)Et aussi un tableau qui recapitule les cartons qui on etait distribuer
Plus diverses petites modifs
Donc il est necessaire avoir installer le mod Carton Jaune (la derniere version a ce jour) avant ma modif bien sur
Par contre pour Extended ban manager je l'ai modifier et il est comprit dans ma modif pas la peine de l'installer avant
Deja le fichier qui contient les fichiers a rajouter ou remplacer:
http://k20a.free.fr/file/Addon.zip
SQL:
- Code: Select all
ALTER TABLE `phpbb_banlist` ADD `reason` TEXT NOT NULL ,
ADD `by_id` INT( 10 ) NOT NULL DEFAULT '-1' ,
ADD `time` INT( 10 ) NOT NULL ,
ADD `ban_cookie` INT(10),
ADD `cookie_id` VARCHAR(64),
ADD `reason_private` TEXT NOT NULL ;
ADD `forum_id` smallint(5) unsigned DEFAULT '0' NOT NULL ;
UPDATE phpbb_banlist SET by_id = '-1' WHERE by_id <= 1;
ouvrir: includes/sessions.php
trouver:
- Code: Select all
$sql = "SELECT ban_ip, ban_userid, ban_email
FROM " . BANLIST_TABLE . "
WHERE ban_ip IN ('" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . $user_ip_parts[4] . "', '" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . "ff', '" . $user_ip_parts[1] . $user_ip_parts[2] . "ffff', '" . $user_ip_parts[1] . "ffffff')
OR ban_userid = $user_id";
if ( $user_id != ANONYMOUS )
{
$sql .= " OR ban_email LIKE '" . str_replace("\'", "''", $userdata['user_email']) . "'
OR ban_email LIKE '" . substr(str_replace("\'", "''", $userdata['user_email']), strpos(str_replace("\'", "''", $userdata['user_email']), "@")) . "'";
}
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not obtain ban information', '', __LINE__, __FILE__, $sql);
}
if ( $ban_info = $db->sql_fetchrow($result) )
{
if ( $ban_info['ban_ip'] || $ban_info['ban_userid'] || $ban_info['ban_email'] )
{
message_die(CRITICAL_MESSAGE, 'You_been_banned');
}
}
ramplacer par:
- Code: Select all
//Mod expanded ban maneger, replace sql.
$sql = "SELECT *
FROM " . BANLIST_TABLE . "
WHERE ban_ip IN ('" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . $user_ip_parts[4] . "', '" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . "ff', '" . $user_ip_parts[1] . $user_ip_parts[2] . "ffff', '" . $user_ip_parts[1] . "ffffff')
OR ban_userid = $user_id";
if ( $user_id != ANONYMOUS )
{
$sql .= " OR ban_email LIKE '" . str_replace("\'", "''", $userdata['user_email']) . "'
OR ban_email LIKE '" . substr(str_replace("\'", "''", $userdata['user_email']), strpos(str_replace("\'", "''", $userdata['user_email']), "@")) . "'";
}
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not obtain ban information', '', __LINE__, __FILE__, $sql);
}
if($db->sql_numrows($result) != 0)
{
global $lang,$phpbb_root_path,$phpEx;
if ( empty($lang) )
{
if ( !empty($board_config['default_lang']) )
{
include_once($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx);
}
else
{
include_once($phpbb_root_path . 'language/lang_english/lang_main.'.$phpEx);
}
}
$bans = $lang['You_been_banned']."<br />";
while($ban = $db->sql_fetchrow($result))
{
if($ban['time'] < time() AND $ban['time'] != 0)
{
$sql = "SELECT ban_userid FROM ".BANLIST_TABLE."
WHERE ban_id = '".$ban['ban_id']."' LIMIT 1";
if ( !($result = $db->sql_query($sql) ))
{
message_die(GENERAL_ERROR, "Couldn't get user warnings info from database".$sql, "", __LINE__, __FILE__, $sql);
}
while ($user_id_list = $db->sql_fetchrow($result))
{
$where_user_sql .= ( ( $where_user_sql != '' ) ? ', ' : '' ) . $user_id_list['ban_userid'];
}
if($ban['forum_id'] == 0){
$sql = "UPDATE " . USERS_TABLE . "
SET user_warnings='0'
WHERE user_id IN ($where_user_sql)";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't update user warnings info from database".$sql, "", __LINE__, __FILE__, $sql);
}}
$sql = "DELETE FROM " . BANLIST_TABLE . " WHERE ban_id = '".$ban['ban_id']."' LIMIT 1";
if ( !($result2 = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not delete ban information', '', __LINE__, __FILE__, $sql);
}
message_die(CRITICAL_MESSAGE,"La periode de votre ban est finit, vous pouvez vous reconnectez.");
continue;
}
$ban['ban_ip'] = decode_ip($ban['ban_ip']);
if($ban['ban_cookie'] == 1 && !isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . "_b_a"])){
//We give the cookie one hour more.
$exp = $ban['time'] + 3600;
if($ban['cookie_id'] != '')
{
//Make a nice nice md5 string :P
$ip = md5($ban['ban_ip']);
$ip2 = md5(encode_ip($ban['ban_ip']));
$exp2 = md5($exp * (time() + rand(0,time())));
$tot = $ip . $ip2 . $exp2;
$tot = md5($tot);
$sql = "UPDATE ".BANLIST_TALBE." SET cookie_id = '$tot' WHERE ban_id = ".$ban['ban_id']."";
if(!$db->sql_query($sql))
{
message_die(GENERAL_ERROR,"Could not update cookie_id.","",__LINE__,__FILE__,$sql);
}
}
else
{
$tot = $ban['cookie_id'];
}
setcookie($board_config['cookie_name'] . "_b_a", $tot, $exp, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
}
if(!empty($ban['ban_ip']) && $ban['ban_ip'] != '0.0.0.0')
{
$bans .= sprintf($lang['banned_ip'],$ban['ban_ip'])."<br />";
}
if(!empty($ban['ban_userid']))
{
$bans .= sprintf($lang['banned_user'],$ban['username'])."<br />";
}
if(!empty($ban['ban_email']))
{
$bans .= sprintf($lang['banned_email'],$ban['ban_email'])."<br />";
}
if(!empty($ban['reason']))
{
$bans .= sprintf($lang['ban_reason'],nl2br($ban['reason']))."<br />";
}
if($ban['time'] == 0)
{
$bans .= $lang['perma_ban'];
}
else
{
$bans .= sprintf($lang['ban_untill'],create_date($board_config['default_dateformat'], $ban['time'], $board_config['board_timezone']));
}
$bans .= "<br />";
if($ban['forum_id'] == 0){
$connec = '1';
}
}
if($connec == '1')
{
message_die(CRITICAL_MESSAGE,$bans);
}
}
elseif(isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . "_b_a"]))
{
$co = $HTTP_COOKIE_VARS[$board_config['cookie_name'] . "_b_a"];
if(strlen($co) == 32){
$co = htmlspecialchars($co);
$sql = "SELECT * FROM ".BANLIST_TABLE." WHERE cookie_id = '$co'";
$result = $db->sql_query($sql);
if(!$result)
{
message_die(GENERAL_ERROR,"Could not select cookie ban","",__LINE__,__FILE__,$sql);
}
$row = $db->sql_fetchrow($result);
if($db->sql_numrows($result) == 0)
{
$exp = time() + 24 * 60 * 60 * 365;
setcookie($board_config['cookie_name'] . "_b_a", '', $exp, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
}
elseif($row['ban_cookie'] == 0)
{
$exp = time() + 24 * 60 * 60 * 365;
setcookie($board_config['cookie_name'] . "_b_a", '', $exp, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
}
else
{
if($ban['time'] < time())
{
$sql = "DELETE FROM " . BANLIST_TABLE . " WHERE ban_id = '".$ban['ban_id']."' LIMIT 1";
if ( !($result2 = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not delete ban information', '', __LINE__, __FILE__, $sql);
}
$exp = time() + 24 * 60 * 60 * 365;
setcookie($board_config['cookie_name'] . "_b_a", '', $exp, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
}
$ban['ban_ip'] = decode_ip($ban['ban_ip']);
if(!empty($ban['ban_ip']) && $ban['ban_ip'] != '0.0.0.0')
{
$bans .= sprintf($lang['banned_ip'],$ban['ban_ip'])."<br />";
}
if(!empty($ban['ban_userid']))
{
$bans .= sprintf($lang['banned_user'],$ban['username'])."<br />";
}
if(!empty($ban['ban_email']))
{
$bans .= sprintf($lang['banned_email'],$ban['ban_email'])."<br />";
}
if(!empty($ban['reason']))
{
$bans .= sprintf($lang['ban_reason'],nl2br($ban['reason']))."<br />";
}
if($ban['time'] == 0)
{
$bans .= $lang['perma_ban'];
}
else
{
$bans .= sprintf($lang['ban_untill'],create_date($board_config['default_dateformat'], $ban['time'], $board_config['board_timezone']));
}
$bans .= "<br />";
message_die(CRITICAL_MESSAGE,$bans);
}
}
}
ouvrir: language/lang_french/lang_main.php
trouver:
- Code: Select all
?>
avant ajouter:
- Code: Select all
$lang['banned_ip'] = 'Cet IP %s a été banni.';
$lang['banned_user'] = 'Ce membre %s a été banni.';
$lang['banned_email'] = 'Cet email %s a été banni.';
$lang['ban_reason'] = 'La raison signaler par les administrateurs:<br />%s';
$lang['ban_untill'] = 'Cet interdiction prendra fin le %s.';
$lang['perma_ban'] = 'Cette interdiction est permanente.';
ouvrir: includes/page_tail.php
trouver:
- Code: Select all
$admin_link = ( $userdata['user_level'] == ADMIN ) ? '<a href="admin/index.' . $phpEx . '?sid=' . $userdata['session_id'] . '">' . $lang['Admin_panel'] . '</a><br /><br />' : '';
apres ajouter:
- Code: Select all
$banlist = ( $userdata['user_level'] == ADMIN OR $userdata['user_level'] == MOD ) ? '<a href="banlist.' . $phpEx .'">' . 'Liste des avertisements' . '</a><br /><br />' : '';
trouver:
- Code: Select all
'ADMIN_LINK' => $admin_link)
avant ajouter:
- Code: Select all
'BANLIST' => $banlist,
ouvrir: templates/subSilver/overall_footer.tpl
trouver:
- Code: Select all
<div align="center"><span class="copyright"><br />{ADMIN_LINK}<br />
remplacer par:
- Code: Select all
<div align="center"><span class="copyright"><br />{BANLIST}<br />{ADMIN_LINK}<br />
ouvrir: templates/subSilver/subSilver.cfg
trouver:
- Code: Select all
$images['icon_r_card'] = "$current_template_images/icon_rcard.gif";
apres ajouter:
- Code: Select all
$images['icon_rycard'] = "$current_template_images/icon_rycard.gif";
ouvrir: posting.php
trouver:
- Code: Select all
message_die(GENERAL_MESSAGE, $lang['Topic_locked']);
}
apres ajouter:
- Code: Select all
else if( $userdata['user_id'] != ANONYMOUS )
{
$sql = "SELECT COUNT(*) AS banned
FROM " . BANLIST_TABLE . "
WHERE ban_userid = {$userdata['user_id']}
AND forum_id = $forum_id AND ( time = 0 OR time > " . time() . " )";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain ban information', '', __LINE__, __FILE__, $sql);
}
if ( $ban_info = $db->sql_fetchrow($result) )
{
if ( $ban_info['banned'] )
{
message_die(GENERAL_MESSAGE, 'Vous avez été temporairement banni de ce forum');
}
}
}
ouvrir: viewtopic.php
trouver:
- Code: Select all
$card_img = ($user_warnings) ? (( $user_warnings < $board_config['max_user_bancard']) ? sprintf($lang['Warnings'], $user_warnings) : $lang['Banned'] ) : '';
remplacer:
- Code: Select all
if ( $userdata['user_id'] == $poster_id || $is_auth['auth_ban'] )
{
if ( $user_warnings != '99')
{
$card_img = ($user_warnings) ? '<img src="'.(( $user_warnings < $board_config['max_user_bancard']) ?
$images['icon_y_card'] . '" alt="'. sprintf($lang['Warnings'], $user_warnings) .'">' :
$images['icon_r_card'] . '" alt="'. $lang['Banned'] .'">') : '';
}
else
{
$card_img = ($user_warnings == '99') ? '<img src="'.$images['icon_rycard'] . '" alt="'. $lang['Banned'] .'">' : '';
}
}
else
{
$card_img = '';
}
(Les advertisements ne sont vu que par les modos et le membres concerner. Je prefere cette presentation aussi je n'ai pas modifier les 2 autres qui sont proposer dans le mod.)
trouver:
- Code: Select all
if ($user_warnings<$board_config['max_user_bancard'] && $is_auth['auth_ban'] )
remplacer par:
- Code: Select all
if ($user_warnings<$board_config['max_user_bancard'] && $is_auth['auth_ban'] && $userdata['user_id'] != $poster_id)
(cette modif empeche de s'autobannir)
trouver:
- Code: Select all
$r_card_img = ' <input type="image" name="ban" value="ban" onClick="return confirm(\''.sprintf($lang['Red_card_warning'],$current_user).'\')" src="'. $images['icon_r_card'] . '" alt="' . $lang['Give_R_card'] . '" >';
remplacer par:
- Code: Select all
$r_card_img = '';
(suprime le bouton de ban direct que je n'aime pas trop)
Voila en esperant ne pas avoir fait d'oubli


