[php]<?php
/*******************************************************************************
*
* [ ./admin/admin_membre_banir.php (français) ]
*
* --------------------------------------------------------------------------
* Commencé le : 14 aout 2004
* Copyright : Groupe Fire Soft Board
* Site Web :
http://www.fire-soft-board.com
* E-mail :
support@fire-soft-board.com
* --------------------------------------------------------------------------
* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les
* termes de la Licence Publique Générale GNU publiée par la Free Software Foundation
* (version 2). Reportez-vous à la Licence Publique Générale GNU pour plus de détails.
* Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps
* que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis.
* --------------------------------------------------------------------------
*
* Derniére modification le 17 avril 2005 par Genova FSB v1.0.0
* Templates : 1
* admin/banissement.tpl
*
*******************************************************************************/
define('ADMINISTRATION', TRUE);
$racine = '../';
include( $racine . 'demarrage.php' );
// On démare la session
$membre = recuperer_session();
aut_administration(MODOSUP);
$type = intval($HTTP_POST_VARS['type']);
$objet = htmlSpecialChars($HTTP_POST_VARS['objet']);
$debanir = ( isset($HTTP_GET_VARS['debanir']) ) ? intval($HTTP_GET_VARS['debanir']) : '';
//
// Si on débani un objet on le supprime de la table.
// - Dark_Genova -
//
if ( $debanir != '' )
{
$sql = 'DELETE FROM ' . BANNIS_TABLE . '
WHERE bannis_id = \'' . $debanir . '\'';
if ( ! $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_delete'], 'bannis'), __LINE__, __FILE__, $sql);
}
info($langue['info_titre'], $langue['nouveau_debanni'] . '<br /><br />' . sprintf($langue['retour_bannir'], ajout_sid('admin_membre_bannir.php')) . '<br /><br />' . sprintf($langue['retour_index_admin'], ajout_sid('index.php')));
}
//
// Si le formulaire de banissement est soumis, on boucle les différents objets
// et on les inserts dans la base de donnée. De plus si les membres sont connectés
// on les déconnectes.
// - Dark_Genova -
//
if ( isset($HTTP_POST_VARS['soumettre']) )
{
if ( $type == BANNIR_MEMBRE && stripslashes($objet) == $membre['membre_login'] )
{
info($langue['info_titre'], $langue['autoban_impossible']);
}
if ( $objet != '' )
{
$var = (strpos($objet, ',')) ? explode(',', $objet) : $objet;
if (!is_array($var))
{
$var = array($objet);
}
for ($i = 0; $i < count($var); $i++)
{
// On récupère les ID des sessions à déloguer
$ban_sid = array();
switch ($type)
{
case BANNIR_MEMBRE :
$sql = 'SELECT s.session_sid FROM ' . SESSIONS_TABLE . ' s
LEFT JOIN ' . MEMBRES_TABLE . ' m
ON m.membre_id = s.membre_id
WHERE m.membre_login IN (\'' . implode('\', \'', $var) . '\')';
if (!$result = $bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_select'], 'sessions, membres'), __LINE__, __FILE__, $sql);
}
while ($row = $bdd->tableau($result))
{
$ban_sid[] = $row['session_id'];
}
break;
case BANNIR_MAIL :
$sql = 'SELECT s.session_sid FROM ' . SESSIONS_TABLE . ' s
LEFT JOIN ' . MEMBRES_TABLE . ' m
ON m.membre_id = s.membre_id
WHERE m.membre_email IN (\'' . implode('\', \'', $var) . '\')';
if (!$result = $bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_select'], 'sessions, membres'), __LINE__, __FILE__, $sql);
}
while ($row = $bdd->tableau($result))
{
$ban_sid[] = $row['session_id'];
}
break;
case BANNIR_IP :
$sql = 'SELECT session_sid, membre_ip FROM ' . SESSIONS_TABLE;
if (!$result = $bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_select'], 'sessions'), __LINE__, __FILE__, $sql);
}
while ($row = $bdd->tableau($result))
{
$real_ip = long2ip($row['membre_ip']);
foreach ($var AS $ip_pattern)
{
if (is_matching($ip_pattern, $real_ip))
{
$ban_sid[] = $row['session_sid'];
}
}
}
break;
}
// Suppressions des sessions bannies ...
if ($ban_sid)
{
$sql = 'DELETE FROM ' . SESSIONS_TABLE . '
WHERE session_sid IN (\'' . implode('\', \'', $ban_sid) . '\')';
if (!$bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_delete'], 'sessions'), __LINE__, __FILE__, $sql);
}
}
info($langue['info_titre'], $langue['nouveau_banni'] . '<br /><br />' . sprintf($langue['retour_bannir'], ajout_sid('admin_membre_bannir.php')) . '<br /><br />' . sprintf($langue['retour_index_admin'], ajout_sid('index.php')));
}
}
//
// Liste des types de bannissement
//
$liste_type = '<select name="type" class="listing">';
$liste_type .= '<option value="' . BANNIR_MEMBRE . '" selected="selected">' . $langue['bannir_type_' . BANNIR_MEMBRE] . '</option>';
$liste_type .= '<option value="' . BANNIR_MAIL . '">' . $langue['bannir_type_' . BANNIR_MAIL] . '</option>';
$liste_type .= '<option value="' . BANNIR_IP . '">' . $langue['bannir_type_' . BANNIR_IP] . '</option>';
$liste_type .= '</select>';
include( $racine . 'admin/header_admin.php' );
admin_explication($langue['gestion_bannir'], $langue['gestion_bannir_exp']);
$tpl->set_filenames(array('corps' => 'admin/bannissement.tpl'));
$tpl->assign_vars( array(
'L_OPTION_BANIR' => $langue['option_bannir'],
'L_TYPE' => $langue['bannir_type'],
'L_OBJET' => $langue['bannir_objet'],
'L_LISTE_BANIS' => $langue['liste_banni'],
'L_TYPE_BIS' => $langue['bannir_type_bis'],
'L_OBJET_BIS' => $langue['bannir_objet_bis'],
'L_AUCUN_BANI' => $langue['aucun_banni'],
'L_DEBANIR' => $langue['debannir'],
'L_SOUMETTRE' => $langue['soumettre'],
'LISTE_TYPE' => $liste_type,
));
//
// On récupère les banis
//
$sql = 'SELECT * FROM ' . BANNIS_TABLE . '
ORDER BY bannis_type';
if ( ! $result = $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'bannis'), __LINE__, __FILE__, $sql);
}
$bani = array();
while ( $banis_tmp = $bdd->tableau($result) )
{
$banis[] = $banis_tmp;
}
if ( $compte_banis = count($banis) )
{
for ( $b = 0; $b < $compte_banis; $b++ )
{
$tpl->assign_block_vars('bani', array(
'TYPE' => $langue['bannir_type_' . $banis[$b]['bannis_type']],
'OBJET' => $banis[$b]['bannis_objet'],
'U_DEBANIR' => ajout_sid('admin_membre_bannir.php?debanir=' . $banis[$b]['bannis_id'])
));
}
}
else
{
$tpl->create_block('aucun_bani');
}
$tpl->pparse('corps');
include( $racine . 'admin/footer_admin.php' );
?>[/php]