Résultats de la recherche (51 résultats)

bl4ckd0g
16 Avril 2006, 14:41
Y a pas un probleme avec les requetes cache et sql ? parceque moi à l'install j'ai que des erreures comme quoi "*** existe deja", hors ma BDD est vierge :O
 
bl4ckd0g
15 Avril 2006, 19:49
Rien à voir avec ton probleme mais évite de poster ton mot de passe même crypté, surtout si t'es l'admin du forum :$
 
bl4ckd0g
15 Avril 2006, 17:40
J'ai essayé de le rajouter direct dans la boite online de cette façon :

Citation
'L_LEGENDE_AUT' => sprintf($legende_aut, $langue['admin'], $langue['modosup'], $langue['modo'], $langue['vip']),


Et en rajoutant la ligne 'vip' = 'Vip' dans le fichier de langue du forum, mais ça n'a rien fait du tout :'(

(désolé si mes erreures semblent "bêtes", mais je viens tout juste de revenir à FSB aprés un long passage sur punBB, donc pas facile :$ )
 
bl4ckd0g
15 Avril 2006, 17:32
.

_________________________________
lien edité par elioscope
1. non FSB
2. site Warez
merci de votre compréhension
 
bl4ckd0g
15 Avril 2006, 17:07
Le truc c'est que ce bout de code vient du mod hide lui même, donc le modifier va sûrement pas changer grand chose, voir agraver vu que lui, il marche trés bien x)
 
bl4ckd0g
15 Avril 2006, 16:57
Hum non, ça j'ai deja mais c'est pas la question, je veux juste savoir comment créer des groupes ou des rangs qui s'ajoutent à la boite online comme sur ce site, aprés pour la couleur je peux trés bien passer par la css x)
 
bl4ckd0g
15 Avril 2006, 16:01
Bonjour, nouvelle question, je voudrais savoir comment créer un groupe tel que celui de l'admin, et des modos, c'est à dire un groupe avec sa couleur, ses droits, et qui soit listé dans la boite online tel que les admins et modos, j'ai deja vu ça quelque part mais je n'ai pas encore trouvé comment le faire... :$

Edit : en fait ici aussi vous l'avez fait :

Citation
Administrateur - Modérateur global - Modérateur - VIP graph - VIP MODS
 
bl4ckd0g
15 Avril 2006, 15:34
Moi j'ai pas de bug, tout marche, j'apparai en rouge partout, mais je ne peux pas changer la couleur des membres vu que quand je veux choisir une couleur, la liste est vide, ça ne semble pas venir des modifs, mais plutot d'un fichier manquant ou defectueux non ? j'ai bien les deux fichiers couleur dans le dossier cache... :$

PS : quand je veux voir le contenu de couleurs, il n'y a pas de resultat, celui de couleur semble bon :

Citation
Résultat de la requète
id class
global class="membre"
0 class="membre"
1 class="admin"
 
bl4ckd0g
15 Avril 2006, 13:32
Moi j'ai un soucis assez embêtant, en effet j'ai le mod hide, donc quand on cherche et qu'on arrive sur une page avec un hide, bah il y est pas, j'ai donc rajouté :
[php] $message_txt = nl2br($message_txt);
$message_txt = fscode_hide($message_txt, $posteur_id, $mode, '');[/php]

Ca marche bien, le texte est caché, mais même si ça marche ça me met une ligne d'erreure :

Citation
Warning: in_array(): Wrong datatype for second argument in /home/ultraupload/www/forum/includes/functions/fonctions_message.php on line 185


Quelqun aurait une idée du pourquoi du comment ? :$

Pour info l'erreure vient certainement de cette fonction :

function fscode_hide( $texte, $posteur_id, $mode, $membre_id )
{
	global $bdd, $membre, $langue, $theme;
	if ( (in_array($membre['membre_id'], $posteur_id) && $membre['membre_id'] != INVITE) || $membre['membre_aut'] == ADMIN )
	{
		if ( $membre['membre_aut'] >= MODO && ($mode != 'editer' && $mode != 'reponse') )
		{
			$texte = fscode_subparse($texte, '(\[hide\]|&fs1;hide&fs2;)', '(\[/hide\]|&fs1;\/hide&fs2;)', sprintf($theme['fshide_ouvert'], '90%', $langue['fscode_defaut_hide']), $theme['fshide_ferme']);
		}
		else if ( ( $membre['membre_id'] == $membre_id || $membre['membre_aut'] >= MODO ) && ($mode == 'editer' || $mode == 'reponse') )
		{ }
		else if ( $mode == 'editer' || $mode == 'reponse' )
		{
			$texte = preg_replace('`\[hide\](.*?)\[\/hide\]`si', sprintf($theme['fshide_ouvert'], '90%', $langue['fscode_defaut_hide']). $langue['fscode_hide_message'] . $theme['fshide_ferme'], $texte);
		}
		else
		{
			$texte = fscode_subparse($texte, '(\[hide\]|&fs1;hide&fs2;)', '(\[/hide\]|&fs1;\/hide&fs2;)', sprintf($theme['fshide_ouvert'], '90%', $langue['fscode_defaut_hide']), $theme['fshide_ferme']);
		}
	}
	else
	{
		$texte = preg_replace('`\[hide\](.*?)\[\/hide\]`si', sprintf($theme['fshide_ouvert'], '90%', $langue['fscode_defaut_hide']). $langue['fscode_hide_message'] . $theme['fshide_ferme'], $texte);
	}
	return $texte;
}
 
bl4ckd0g
14 Avril 2006, 23:35
N'empêche que je comprends pas pourquoi c'est pas centré d'origine, vous trouvez ça plus esthétique le "centré à gauche" ? :O
 
bl4ckd0g
14 Avril 2006, 22:52
Aligner, comme.. aligner lol, tu vois le cadre où y a tes infos quand tu postes ? bah c'est aligné à gauche par defaut, moi je voudrais que ce soit centré, je vais essayé ce que tu me dis.

Pour avoir le nom de la page et pas nom de site + nom de page c'est dans header.tpl en fait :)

edit : merci Mido pour ta rapidité deja, et pour ta bonne reponse :D
 
bl4ckd0g
14 Avril 2006, 22:06
Voila, tout est dans le titre je voudrai que toutes ces infos soient centrer dans le tableau, c'est possible d'avoir un bout de code ou une piste ?

Sinon, truc qui n'a rien à voir, j'ai cherché comment enlever le titre du forum et le titre du topic et mettre seulement le nom de la page sur laquelle on est (pour l'indexation google, voir 500 fois le nom du forum, il aime pas trop...)

Merci d'avance :)
 
bl4ckd0g
01 Mars 2006, 16:19
Et ça le fait aussi quand je veux repondre à un sujet :

Impossible de sélectionner les données de: forums | sujets
----------------------

Erreur SQL: 1054 Unknown column 'sondage' in 'field list'

Requête SQL: SELECT forum_id, sujet_id, sujet_nom, sujet_status, sujet_type, sondage, sujet_tags FROM fsb_sujets WHERE sujet_id = '3'

Ligne: 135
Fichier: /home.1/b/l/c/blckdg/www/poster.php

Et ça depuis que j'ai modifié ce que tu m'as dit lol :=$
 
bl4ckd0g
01 Mars 2006, 15:14
Tout marche bien mais je ne peux plus envoyer de sujet, il doit y avoir le même genre d'erreure dans poster.php :
Impossible d'insérer des données dans: sujets
----------------------

Erreur SQL: 1136 Column count doesn't match value count at row 1

Requête SQL: INSERT INTO fsb_sujets (forum_id, membre_id, sujet_nom, nb_vu, nb_reponse, sujet_type, sujet_tags) VALUES('5', '1', 'gjhjhg', '0', '0','1', '0', '')

Ligne: 303
Fichier: /home.1/b/l/c/blckdg/www/poster.php

Je te le montre :

[html]<?php
/*******************************************************************************
*
* [ ./poster.php (français) ]
*
* --------------------------------------------------------------------------
* Commencé le : 23 août 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 27 janvier 2006 par Genova
* Templates : 2
* poster_corps.tpl
* popup_smileys.tpl
*
*******************************************************************************/

//
// Les fonctions javascripts utilisées pour le placement de BBcode ou de smiley dans une zone de texte, ont été reprises
// de phpBB.
//

define('FORUM', TRUE);
$racine = './';
include($racine . 'demarrage.php');

// On lance les sessions
$membre = recuperer_session();

include( $racine . 'includes/functions/fonctions_message.php' );
include( $racine . 'includes/functions/fonctions_sondages_poster.php' );

// On inclu les données sur les forums/categories
include( $racine . 'cache/fichier_categorie.php' );
$cache->load_table('forum', CACHE_SQL);

// On inclut les différents tags
include ( $racine . 'cache/fichier_tags.php' );

// On inclut le fichier simplifié pour les TAGs
include ( $racine . 'cache/fichier_tag.php' );
$tag = $cache->convert_to_simple_array($tag, 'id', 'tag');

//
// Sécurisation des variables
//
$mode = isset($HTTP_GET_VARS['mode']) ? HtmlSpecialChars($HTTP_GET_VARS['mode']) : '';
$forum_id = isset($HTTP_GET_VARS['forum']) ? intval($HTTP_GET_VARS['forum']) : '';
$sujet_id = isset($HTTP_GET_VARS['sujet']) ? intval($HTTP_GET_VARS['sujet']) : '';
$message_id = isset($HTTP_GET_VARS['message']) ? intval($HTTP_GET_VARS['message']) : '';
$citer_id = ( isset($HTTP_GET_VARS['citer']) ) ? intval($HTTP_GET_VARS['citer']) : '';
$login_url = ( isset($HTTP_GET_VARS['login']) ) ? htmlSpecialChars($HTTP_GET_VARS['login']) : '';
$repondre_mp = ( isset($HTTP_GET_VARS['repondre_mp']) ) ? intval($HTTP_GET_VARS['repondre_mp']) : '';
$preview = ( $HTTP_POST_VARS['prev'] ) ? TRUE : FALSE;
$type_sondage = ( isset($HTTP_POST_VARS['type_sondage']) ) ? $HTTP_POST_VARS['type_sondage'] : 0;
$on_accede_sujet_v= 1;

$parametre = array('nouveau_sujet', 'reponse', 'smiley', 'editer');
if ( ! in_array($mode, $parametre) )
{
redir('index.php');
}

// On inclu les smileys
include( $racine . 'cache/fichier_smiley.php' );

//
// On génère vite fais la boite pour visioner les smileys dans la pop up
//
if ( $mode == 'smiley' )
{
$simple_header = TRUE;
include( $racine . 'includes/header_forum.php' );

$tpl->set_filenames(array('smileys' => 'popup_smileys.tpl'));

$tpl->assign_vars( array(
'L_SMILEY_TITRE' => $langue['plus_smiley']
));

$nb_ligne_smiley = ( $smiley_lignes == 0 ) ? 0 : ceil(count($smiley) / $pop_up_smiley);
$compte = 0;
for ( $i = 0; $i < $nb_ligne_smiley; $i++ )
{
$tpl->assign_block_vars('l', array());

for ( $j = 0; $j < $pop_up_smiley; $j++ )
{
$tpl->assign_block_vars('l.c', array(
'WIDTH' => round(100 / $pop_up_smiley),
'CODE' => addslashes($smiley[$compte]['smiley_code']),
'IMG_SMILEY' => $racine . 'images/smileys/' . $smiley[$compte]['smiley_nom']
));

if ( $compte == ( count($smiley) - 1 ) )
{
break;
}
$compte++;
}
}

$tpl->pparse('smileys');
exit;
}

$sql = '';
if ( $mode == 'editer' )
{
$sql = 'SELECT mes.forum_id, mes.membre_id, s.sujet_id, s.premier_message_id, s.sujet_nom, s.sondage, s.sujet_type, s.sujet_status, s.sujet_tags FROM ' . MESSAGES_TABLE . ' mes
LEFT JOIN ' . SUJETS_TABLE . ' s
ON mes.sujet_id = s.sujet_id
WHERE mes.message_id = \'' . $message_id . '\'';
}
else if ( $mode == 'reponse' )
{
$on_accede_sujet_v= 0;
$sql = 'SELECT forum_id, sujet_id, sujet_nom, sujet_status, sujet_type, sujet_tags FROM ' . SUJETS_TABLE . '
WHERE sujet_id = \'' . $sujet_id . '\'';
}

if ( $mode == 'editer' || $mode == 'reponse' )
{
if ( ! $result = $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'forums | sujets'), __LINE__, __FILE__, $sql);
}
$forum_donnees = $bdd->tableau($result);
$forum_id = $forum_donnees['forum_id'];
$premier_message = ( $forum_donnees['premier_message_id'] == $message_id ) ? TRUE : FALSE;
if ($premier_message)
{
$premier_msg_sondage = ( isset($forum_donnees['sondage']) ? $forum_donnees['sondage'] : 0 );
}
else
{
$premier_msg_sondage = 0;
}
}

//
// On récupère les données de ce forum, ainsi que les droits du visiteur parcourant
// la page vis à vis de ce forum.
//
include( $racine . 'cache/fichier_moderation.php' );
$forum_a = forum_tableau($forum_id);
if ( empty($forum_a['forum_id']) )
{
info($langue['info_titre'], $langue['forum_non_existant']);
}

$droits = droits($membre, $forum_a, $moderation, $droit_forum);
if (!$MOD['sondage'])
{
$droits['droit_sondage_poster'] = 0;
}

//
// Le membre peut il voir ce forum? A t'il le droit de poster un nouveau sujet? A t'il le droit
// de répondre à un sujet de ce forum?
//
if ( ! $droits['droit_voir'] || ! $droits['droit_lire'] )
{
info($langue['info_titre'], $langue['interdit_droit_voir']);
}
else if ( ! $droits['droit_poster'] && $mode == 'nouveau_sujet' )
{
info($langue['info_titre'], $langue['interdit_droit_poster']);
}
else if (!$droits['droit_repondre'] && $mode == 'reponse')
{
info($langue['info_titre'], $langue['interdit_droit_repondre']);
}
else if ( $mode == 'editer' && ( ( ! $droits['droit_editer'] && ! $droits['membre_editer'] ) || ( $droits['membre_editer'] && $membre['membre_id'] != $forum_donnees['membre_id'] ) ) )
{
info($langue['info_titre'], $langue['interdit_droit_editer']);
}
else if (($mode == 'reponse' || $mode == 'editer') && ! $forum_donnees['sujet_status'] && ! $droits['est_modo'])
{
info($langue['info_titre'], $langue['est_verrouiller']);
}
else if ( $mode == 'reponse' && $forum_donnees['sujet_id'] == '' )
{
info($langue['info_titre'], $langue['sujet_inexistant']);
}
else if ( $type_sondage && ! $droits['droit_sondage_poster'] )
{
info($langue['info_titre'], $langue['sondage_pasaccess']);
}

//
// Si le formulaire est soumis...
//
if ( isset($HTTP_POST_VARS['soumettre']) || $preview )
{
$destinataire = htmlSpecialChars(trim($HTTP_POST_VARS['destinataire']));
$posteur_invite = htmlSpecialChars($HTTP_POST_VARS['posteur_invite']);
$pseudo_invite = htmlSpecialChars(trim($HTTP_POST_VARS['pseudo']));
$sujet_nom = htmlSpecialChars(trim($HTTP_POST_VARS['sujet_nom']));
$message_txt = htmlSpecialChars(trim($HTTP_POST_VARS['message']));
$type_sujet = ( $HTTP_POST_VARS['type_sujet'] == '' ) ? count($sujet_type) - 1 : intval($HTTP_POST_VARS['type_sujet']);
$type_sondage = ( $type_sondage == "" )? 0 : 1 ;

if ($type_sondage)
{
$v_sondage_acces = ( isset($HTTP_POST_VARS['sondage_acces']) ) ? intval($HTTP_POST_VARS['sondage_acces']) : 1;
$v_sondage_nbre_reponse = ( isset($HTTP_POST_VARS['sondage_nbre_reponse']) ) ? intval($HTTP_POST_VARS['sondage_nbre_reponse']) : 1;
$v_sondage_delai = ( isset($HTTP_POST_VARS['sondage_delai']) ) ? intval($HTTP_POST_VARS['sondage_delai']) : 0;
$v_sondage_reponses = ( isset($HTTP_POST_VARS['sondage_reponses']) ) ? $HTTP_POST_VARS['sondage_reponses'] : '';
$sondage_saisie_ok = f_sondage_mise_en_forme_reponses();
}
else
{
$v_sondage_acces = 0;
}
}

if( isset($HTTP_POST_VARS['soumettre']) )
{
//
// On récupère les variables utiles pour pouvoir poster un sujet, une réponse ou éditer un message
//
unset($erreur);

// On vérifie le quelques champs...
if( ( $mode == 'nouveau_sujet' || ( $mode == 'editer' && $premier_message ) ) && empty($sujet_nom) )
{
$erreur .= $langue['er_titre_sujet_manquant'] . '<br />';
}

if( ( $posteur_invite && empty($pseudo_invite) ) || $message_txt == '' )
{
$erreur .= $langue['er_champs_vides_poster'] . '<br />';
}
if( $type_sondage && !$sondage_saisie_ok )
{
$erreur .= $langue['er_pas_assez_reponses'] . '<br />';
}

//
// On vérifie si la session du membre est expirée, si c'est le cas, on avertit celui-ci et l'invite (:P)
// à se reconnecter
//
if( ! $posteur_invite && $membre['membre_id'] == INVITE )
{
$erreur .= sprintf($langue['session_expire'], $racine . 'connexion.php?redirection=' . $racine . 'poster.php$mode=' . $mode . '*forum=' . $forum_id . '*sujet=' . $sujet_id . '*message=' . $message_id);
}

// On vérifie si la limite de flood a été dépassée
if ( ( $mode == 'nouveau_sujet' || $mode == 'reponse' ) && ( time() - $config['flood_limite'] ) < $membre['temps_flood'] )
{
$erreur .= sprintf($langue['attente_flood'], $config['flood_limite']) . '<br />';
}

// On récupère le login du posteur, ce pseudo ne servira que en cas de 'nouveau_sujet' ou 'reponse'
$pseudo_posteur = ( $membre['membre_id'] == INVITE ) ? $pseudo_invite : addslashes($membre['membre_login']);

// On récupère les différents tags du sujet
$sujet_tags = array();
for ( $t = 0; $t < $compte_tags; $t++ )
{
if ( isset($HTTP_POST_VARS['tag' . $tags[$t]['id']]) )
{
$sujet_tags[] = $tags[$t]['id'];
}
}

if ( !empty($sujet_tags) )
{
$sujet_tags = implode(',', $sujet_tags);
}
else
{
$sujet_tags = '';
}

//
// S'il n'y a aucune erreur, on enregistre le message
//
if( empty($erreur) )
{
switch( $mode )
{
case "nouveau_sujet":
//
// Si c'est un nouveau sujet, on enregistre les données dans la table "sujets"
// puis "messages".
//
$sql = 'INSERT INTO ' . SUJETS_TABLE . '
(forum_id, membre_id, sujet_nom, nb_vu, nb_reponse, sujet_type, sondage, sujet_tags)
VALUES(\'' . $forum_id . '\', \'' . $membre['membre_id'] . '\', \'' . $sujet_nom . '\', \'0\', \'0\',\'' . $type_sujet . '\', \'' . $v_sondage_acces . '\', \'' . $sujet_tags . '\')';
if( ! $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_insert'], 'sujets'), __LINE__, __FILE__, $sql, TRUE);
}

// On récupère l'id du dernier sujet
$derniere_id_sujet = $bdd->derniere_id();

//
// Ne pas mettre de break; ici :p
// - Dark_Genova -
//
if ($type_sondage)
{
f_sondage_enregistrer($derniere_id_sujet, $v_sondage_delai, $v_sondage_nbre_reponse, $v_sondage_tab_reponses);
}

case "reponse":
//
// On insert un message dans la base de données, puis on met à jour le sujet concerné
// par ce message
//
$sujet_id = ( $mode == 'nouveau_sujet' ) ? $derniere_id_sujet : $sujet_id;
$time = time();

$sql = 'INSERT INTO ' . MESSAGES_TABLE . '
(forum_id, sujet_id, membre_id, pseudo_posteur, message_texte, message_temps, message_ip)
VALUES(\'' . $forum_id . '\', \'' . $sujet_id . '\', \'' . $membre['membre_id'] . '\', \'' . $pseudo_posteur . '\', \'' . $message_txt . '\', \'' . $time . '\', \'' . ip2long($HTTP_SERVER_VARS['REMOTE_ADDR']) . '\' )';
if( ! $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_insert'], 'messages'), __LINE__, __FILE__, $sql, TRUE);
}

// On récupère l'id du dernier message
$derniere_id_message = $bdd->derniere_id();

//
// On met à jour le sujet fraichement poster en y entrant des données sur le dernier message posté.
//
$sql_update = ( $mode == 'nouveau_sujet' ) ? ', premier_message_id = \'' . $derniere_id_message . '\'' : ', nb_reponse = nb_reponse + 1';
$sql = 'UPDATE ' . SUJETS_TABLE . '
SET dernier_message_id = \'' . $derniere_id_message . '\', dernier_message_temps = \'' . $time . '\'' . $sql_update . '
WHERE sujet_id = \'' . $sujet_id . '\' ';
if( ! $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_update'], 'sujet'), __LINE__, __FILE__, $sql, TRUE);
}

// + 1 message pour le membre :)
// - Dark_Genova -
$sql = 'UPDATE ' . MEMBRES_TABLE . '
SET membre_nb_message = membre_nb_message + 1, temps_flood = \'' . $time . '\'
WHERE membre_id = \'' . $membre['membre_id'] . '\'';
if( ! $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_update'], 'membres'), __LINE__, __FILE__, $sql, TRUE);
}

//
// On incrémente le compteur de message de 1 pour le forum concerné, on place
// aussi l'ID du dernier message ainsi que la date, l'ID du posteur et son nom.
//
$forum[$forum_a['cle_forum']]['forum_nb_message']++;
$forum[$forum_a['cle_forum']]['forum_nb_sujet'] += ( $mode == 'nouveau_sujet' ) ? 1 : 0;
$forum[$forum_a['cle_forum']]['dernier_message_id'] = $derniere_id_message;
$forum[$forum_a['cle_forum']]['dernier_message_temps'] = time();
$forum[$forum_a['cle_forum']]['dernier_posteur_id'] = $membre['membre_id'];
$forum[$forum_a['cle_forum']]['dernier_posteur_login'] = stripslashes($pseudo_posteur);

$cache->write_in_cache($forum, 'forum', $compte_forum, FALSE);

//
// Mise à jour en tant que lu du sujet.
//
if ($membre['membre_id'] != INVITE && $mode == 'nouveau_sujet')
{
$cookie_sujet = recuperer_nouveaux_messages($membre['membre_id'], $membre['derniere_visite'], $forum_id, $derniere_id_sujet);
$sujet = array();
$sujet['sujet_id'] = $sujet_id;
$sujet['dernier_message_temps'] = $time;
$sujet['dernier_message_lu'] = '';
$sujet['forum_id'] = $forum_id;
marquer_sujet_lu($sujet, $membre['membre_id']);
}
else if ($membre['membre_id'] != INVITE)
{
$cookie_sujet = recuperer_nouveaux_messages($membre['membre_id'], $membre['derniere_visite'], $forum_id);
$sujet = $cookie_sujet[$sujet_id];
$sujet['dernier_message_temps'] = $time;
$sujet['sujet_id'] = $sujet_id;
$sujet['forum_id'] = $forum_id;
marquer_sujet_lu($sujet, $membre['membre_id']);
}

info($langue['info_titre'], $langue['message_enregistre'] . '<br /><br />' . sprintf($langue['cliquer'], ajout_sid('sujet.php?message=' . $derniere_id_message) . '#' . $derniere_id_message, $langue['voir_message']) . '<br /><br />' . sprintf($langue['cliquer'], ajout_sid('forum-.html' . $forum_a['forum_id']), sprintf($langue['retourner_forum'], $forum_a['forum_nom'])));
break;

case "editer":
//
// Les versions antérieures à MySQL4 semblent ne pas être compatibles
// avec les UPDATE sur plusieurs tables à la fois. Aussi on propose des
// "requètes de secours" pour le cas ou...
//
if ($MySQL_version >= 4)
{
$editer_sujet = ($premier_message) ? ', s.sujet_nom = \'' . $sujet_nom . '\', s.sujet_type = \'' . $type_sujet . '\', sujet_tags = \'' . $sujet_tags . '\'' : '';
$sql = 'UPDATE ' . MESSAGES_TABLE . ' mes
LEFT JOIN ' . SUJETS_TABLE . ' s
ON mes.sujet_id = s.sujet_id
SET mes.message_texte = \'' . $message_txt . '\' ' . $editer_sujet . '
WHERE mes.message_id = \'' . $message_id . '\'';
if (!$bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_update'], 'messages, sujets'), __LINE__, __FILE__, $sql);
}
}
else
{
$sql = 'UPDATE ' . MESSAGES_TABLE . '
SET message_texte = \'' . $message_txt . '\'
WHERE message_id = \'' . $message_id . '\'';
if (!$bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_update'], 'messages'), __LINE__, __FILE__, $sql);
}

if ($premier_message)
{
$sql = 'UPDATE ' . SUJETS_TABLE . '
SET sujet_nom = \'' . $sujet_nom . '\', sujet_type = \'' . $type_sujet . '\', sujet_tags = \'' . $sujet_tags . '\'
WHERE sujet_id = \'' . $forum_donnees['sujet_id'] . '\'';
if (!$bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_update'], 'messages'), __LINE__, __FILE__, $sql);
}
}
}
if ($premier_message && $type_sondage)
{
f_sondage_editer($forum_donnees['sujet_id'],$v_sondage_delai,$v_sondage_nbre_reponse,$v_sondage_tab_reponses);
}
info($langue['info_titre'], $langue['message_editer'] . '<br /><br />' . sprintf($langue['cliquer'], ajout_sid('sujet.php?message=' . $message_id) . '#' . $message_id, $langue['voir_message']) . '<br /><br />' . sprintf($langue['cliquer'], ajout_sid('forum-.html' . $forum_a['forum_id']), sprintf($langue['retourner_forum'], $forum_a['forum_nom'])));
break;

default:
info($langue['er_titre'], $langue['mauvais_parametre'], __LINE__, __FILE__);
break;
}
}
}

switch ( $mode )
{
case "nouveau_sujet":
$page_titre = sprintf($langue['poster'], $langue['nouveau_sujet']);
$liens_header = ' -> ' . sprintf($langue['poster'], $langue['nouveau_sujet']);
$poster = sprintf($langue['poster'], $langue['nouveau_sujet']);
$form_action = ajout_sid('poster.php?mode=nouveau_sujet&amp;forum=' . $forum_id);
$liens_header = hierarchie_forum($forum_a['forum_id'], '', PREMIER_PALIER, FALSE) . $liens_header;
break;

case "reponse":
$page_titre = sprintf($langue['poster'], $langue['une_reponse']);
$liens_header = ' -> ' . sprintf($langue['poster'], $langue['une_reponse']);
$poster = sprintf($langue['poster'], $langue['une_reponse']);
$form_action = ajout_sid('poster.php?mode=reponse&amp;sujet=' . $sujet_id);
$liens_header = hierarchie_forum($forum_a['forum_id'], '', PREMIER_PALIER, FALSE) . $liens_header;
break;

case "editer":
$page_titre = $langue['editer'];
$liens_header = ' -> ' . $langue['editer'];
$liens_header = hierarchie_forum($forum_a['forum_id'], '', PREMIER_PALIER, FALSE) . $liens_header;
$poster = $langue['editer'];
break;
}

//
// Si on édite ou bien on cite un message, on va récupéré ce message
//
if ( ( $mode == 'editer' && ( $droits['droit_editer'] || ( $droits['membre_editer'] && $membre['membre_id'] == $forum_donnees['membre_id'] ) ) || ( $mode == 'reponse' && ! empty($citer_id) ) ) && empty($erreur) && ! $preview )
{
$sql_var_id = ( $mode == 'editer' ) ? $message_id : $citer_id;
$sql = 'SELECT membre_id, message_texte, pseudo_posteur FROM ' . MESSAGES_TABLE . '
WHERE message_id = \'' . $sql_var_id . '\'';
if ( ! $result = $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'messages'), __LINE__, __FILE__, $sql);
}
$donnees = $bdd->tableau($result);

if ( $donnees['message_texte'] == '' )
{
info($langue['er_titre'], $langue['aucun_message_trouve']);
}

$v_message_txt = ( $mode == 'editer' ) ? $donnees['message_texte'] : '
Citation (' . $donnees['pseudo_posteur')
. ']' . $donnees['message_texte'] . '
';
$v_titre_sujet = ( $mode == 'editer' ) ? $forum_donnees['sujet_nom'] : '';
$on_accede_sujet_v=false;
$mode_sondage_editer = false;
if ($premier_msg_sondage && f_pas_de_vote($forum_donnees['sujet_id']))
{
f_lire_sondage($forum_donnees['sujet_id']);
$type_sondage=true;
$v_sondage_acces = $premier_msg_sondage;
$mode_sondage_editer = true;
}
}
else if ( ! empty($erreur) || $preview )
{
$v_message_txt = stripslashes($message_txt);
$v_titre_sujet = stripslashes($sujet_nom);
}

if ( ! defined('HEADER') )
{
include( $racine . 'includes/header_forum.php' );
}

if( ! empty($erreur) )
{
info($langue['info_titre'], $erreur, '', '', '', FALSE);
}

$tpl->set_filenames( array('corps' => 'poster_corps.tpl') );

//
// On fait la liste des tags que l'utilisateur peut voir... si il peut en voir !
//
$hidden = '';
if ( ( $mode == 'nouveau_sujet' || ( $mode == 'editer' && $premier_message ) ) && $membre['membre_id'] != 0 )
{
$bolean_verif = false;
if ( $mode == 'nouveau_sujet' )
{
$forum_donnees['membre_id'] = $membre['membre_id'];
}

$tags_a = explode(',', $forum_a['forum_tags']);

$sujet_tags = explode(',', $forum_donnees['sujet_tags']);
$nb_presents = 0;
$dispos = array();

for ( $t = 0; $t < $compte_tags; $t++ )
{
$checked = false;
$tags[$t]['aut'] = explode(',', $tags[$t]['aut']);

if ( !in_array($tags[$t]['id'], $tags_a) ) continue;

if ( !in_array($membre['membre_aut'], $tags[$t]['aut']) && $membre['membre_aut'] != ADMIN ) continue;
if ( $membre['membre_aut'] == MEMBRE && $forum_donnees['membre_id'] != $membre['membre_id'] ) continue;
$bolean_verif = true;

if ( in_array($tags[$t]['id'], $sujet_tags) )
{
$checked = true;
$nb_presents++;
}

$tpl->assign_block_vars('tags', array(
'ID' => $tags[$t]['id'],
'COULEUR' => $tags[$t]['couleur'],
'TAG' => $tags[$t]['tag'],
'CHECKED' => ( $checked == true ) ? ' checked="checked"' : ''
));

$dispos[] = $tags[$t]['id'];
}

if ( $bolean_verif && $MOD['avanced_tags'] )
{
$tpl->create_block('sujet_tags');
}

$c_s_t = count($sujet_tags);

if ( $nb_presents != $c_s_t )
{
for ( $j = 0; $j < $c_s_t; $j++ )
{
if ( !in_array($sujet_tags[$j], $dispos) ) $hidden .= '<input type="hidden" name="tag' . $sujet_tags[$j] . '" value="1" />';
}
}
}

//
// Si on a appuyé sur "Prévisualisation", on parse le message dans poster_corps.tpl
//
if( $preview && $v_message_txt != '' )
{
$message_prev = $v_message_txt;

$message_prev = anti_html($message_prev);
$message_prev = nl2br($message_prev);
$message_prev = fscode_parse($message_prev);
$message_prev = smileys($message_prev, $smiley);

if ($type_sondage)
{
$message_prev = $v_sondage_reponses_prev . $message_prev;
}
$tpl->assign_block_vars('message_prev', array(
'POSTE_LE' => aff_date(time()),
'MESSAGE_PREV' => $message_prev
));
}

$tpl->assign_vars( array(
'L_POSTER' => $poster,
'L_ECRIRE_MESSAGE' => $langue['ecrire_message'],
'L_SMILIES' => $langue['smilies'],
'L_SOUMETTRE' => $langue['soumettre'],
'L_INFOS_MESSAGE' => $langue['infos_message'],
'L_TITRE_SUJET' => $langue['titre_sujet'],
'L_LOGIN' => $langue['login'],
'L_TYPE_SUJET' => $langue['type_sujet'],
'L_TYPE_NORMAL' => $langue['type_sujet_normal'],
'L_TYPE_ANNONCE' => $langue['type_sujet_annonce'],
'L_MESSAGE_PREV' => $langue['previsualisation'],
'L_AUTEUR' => $langue['auteur'],
'L_MESSAGE' => $langue['message'],
'L_POSTE_LE' => $langue['poste_le'],
'L_PALETTE' => $langue['palette_couleur'],
'L_TXT_COULEUR' => $langue['fscode_defaut_couleur'],
'L_SUJET_TAGS' => $langue['TAGS_sujet_tags'],

'HIDDEN' => $hidden,

'U_ACTION' => $form_action,
'U_PLUS_SMILEY' => addslashes(ajout_sid('poster.php?mode=smiley')),

'V_MESSAGE_TXT' => $v_message_txt,
'V_TITRE_SUJET' => $v_titre_sujet
));
f_sondage_afficher($type_sondage, $v_sondage_acces, $v_sondage_nbre_reponse, $v_sondage_delai, $v_sondage_reponses,$on_accede_sujet_v);

//
// On affiche les FScode sous forme de boutton à partir du tableau $fscode_bouttons. Le nombre
// de FScode apr ligne, donné par la variable $fscode_lignes, est défini dans includes/variables_generales.php
// -Dark_Genova -
//
$fscode_bouttons = array('b', 'i', 'u', 'url', 'mail', 'img', 'quote', 'code', 'list');
$nb_ligne_fscode = ( ! empty($fscode_lignes) ) ? ceil(count($fscode_bouttons) / $fscode_lignes) : 0;
$compte = 0;
for ( $i = 0; $i < $nb_ligne_fscode; $i++ )
{
$tpl->assign_block_vars('fscode_ligne', array());

for ( $j = 0; $j < $fscode_lignes; $j++ )
{
$fs = $fscode_bouttons[$compte];

$tpl->assign_block_vars('fscode_ligne.fscode_colone', array(
'FSCODE_DEBUT' => '[' . $fs . ']',
'FSCODE_TEXTE' => addslashes($langue['fscode_defaut_' . $fs]),
'FSCODE_FERME' => '[/' . $fs . ']',

'V_FSCODE' => $fs
));

if ( $compte == ( count($fscode_bouttons) - 1 ) )
{
break;
}
$compte++;
}
}

//
// On fait de même que pour afficher les FScodes sauf que cette fois on gère les listes
// -Dark_Genova -
//
$fsliste = array(
array('taille', '5', '10', '12', '18', '24'),
);
$nb_ligne_fsliste = ( ! empty($fsliste_lignes) ) ? ceil(count($fsliste) / $fsliste_lignes) : 0;
$compte = 0;
for ( $i = 0; $i < $nb_ligne_fsliste; $i++ )
{
$tpl->assign_block_vars('fsliste_ligne', array());

for ( $j = 0; $j < $fsliste_lignes; $j++ )
{
$fs = $fsliste[$compte];

$tpl->assign_block_vars('fsliste_ligne.fsliste_colone', array(
'FCT_JS' => addslashes($fs[0]),
'LANGUE' => addslashes($langue['fscode_defaut_' . $fs[0]])
));

for ( $k = 1; $k < count($fs); $k++ )
{
$selected = ( $fs[0] == 'taille' && $fs[$k] == '12' ) ? 'selected="selected"' : '';
$tpl->assign_block_vars('fsliste_ligne.fsliste_colone.fsliste_option', array(
'VALUE' => addslashes($fs[$k]),
'OPTION' => $langue['fsliste_' . $fs[$k]],
'CHCK' => $selected
));
}

if ( $compte == ( count($fsliste) - 1 ) )
{
break;
}
$compte++;
}
}

//
// On affiche les smileys, la variable $smiley_lignes vient du fichier
// includes/variables_generales.php
// -Dark_Genova -
//
for ( $j = 0; $j < $smiley_lignes; $j++ )
{
$tpl->assign_block_vars('smiley', array(
'CODE' => addslashes($smiley[$j]['smiley_code']),
'IMG_SMILEY' => $racine . 'images/smileys/' . $smiley[$j]['smiley_nom']
));
}

if( $mode == 'nouveau_sujet' || ( $mode == 'reponse' && $membre['membre_id'] == INVITE ) )
{
$tpl->create_block('infos');
}

//
// On génère la pallette de couleur dynamiquement en formant des
// combinaisons de couleurs en héxadécimales.
// - Dark_Genova -
//
$hexa = array('00', '55', 'AA', 'FF');
$compte_hexa = count($hexa);
$compteur = 0;
for ( $i = 0; $i < $compte_hexa; $i++ )
{
for ( $j = 0; $j < $compte_hexa; $j++ )
{
for ( $k = 0; $k < $compte_hexa; $k++ )
{
if ( ! ($compteur % 8) )
{
$tpl->assign_block_vars('couleur_l', array());
}

$tpl->assign_block_vars('couleur_l.couleur_c', array(
'COULEUR' => '#' . $hexa[$i] . $hexa[$j] . $hexa[$k]
));
$compteur++;
}
}
}

//
// On génère la liste des types de sujets en fonction des autorisations et du tableau $sujet_type
// présent dans includes/variables_generales.php
// -Dark_Genova -
//
if( $mode == 'nouveau_sujet' || ( $mode == 'editer' && $premier_message ) )
{
$v_checked = '';
$aut_sujet_type = array();
$u = 0;
for ( $t = 0; $t < count($sujet_type); $t++ )
{
if ($droits['droit_' . $sujet_type[$t]] || ($mode == 'editer' && $forum_donnees['sujet_type'] == $t))
{
$aut_sujet_type[$u]['sujet_type'] = $sujet_type[$t];
$aut_sujet_type[$u]['num'] = $t;
$u++;
}
}

if ( $compte_aut_type = count($aut_sujet_type) )
{
//$tpl->assign_block_vars('type_sujet', array());

$checked_bolean = FALSE;
for ( $v = 0; $v < $compte_aut_type; $v++ )
{
$v_checked = '';
if ( ( $mode == 'editer' && $aut_sujet_type[$v]['num'] == $forum_donnees['sujet_type'] && ! $preview ) || ( $preview && $type_sujet == $aut_sujet_type[$v]['num'] ) || ( ! $checked_bolean && $v == ( $compte_aut_type - 1 ) ) )
{
$v_checked = 'checked="checked"';
$checked_bolean = TRUE;
}

$tpl->assign_block_vars('type_sujet.type_sujet_s', array(
'L_SUJET_TYPE_NOM' => $langue['type_sujet_' . $aut_sujet_type[$v]['sujet_type']],

'V_SUJET_TYPE' => $aut_sujet_type[$v]['num'],
'V_CHECKED' => $v_checked
));

}
}
}

//
// Revue des 10 messages précédents en cas de réponse.
//
if( $mode == 'reponse' )
{
$sql_mes = 'SELECT * FROM ' . MESSAGES_TABLE . ' WHERE sujet_id = \'' . $sujet_id . '\'
ORDER BY message_temps DESC
LIMIT 0,10';
if ( ! $result_mes = $bdd->requete($sql_mes) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'messages'), __LINE__, __FILE__, $sql_mes);
}

// On récupère les tags si il y en a
$sujet_tags = '';

if ( $forum_donnees['sujet_tags'] )
{
$forum_donnees['sujet_tags'] = explode(',', $forum_donnees['sujet_tags']);
$compte_s_t = count($forum_donnees['sujet_tags']);

for ( $i = 0; $i < $compte_s_t; $i++ )
{
$sujet_tags .= $tag[$forum_donnees['sujet_tags'][$i]] . '&nbsp;';
}
}

$tpl->assign_block_vars('revue_sujet', array(
'L_REVUE_SUJET' => $langue['revue_sujet'],

'TITRE_SUJET' => $sujet_tags . $forum_donnees['sujet_nom'],

'U_SUJET' => ajout_sid($racine . 'sujet-.html' . $sujet_id)
));

while( $revue = $bdd->tableau($result_mes) )
{
$message_revue = $revue['message_texte'];
$message_revue = anti_html($message_revue);
$message_revue = nl2br($message_revue);
$message_revue = fscode_parse($message_revue);
$message_revue = smileys($message_revue, $smiley);

$tpl->assign_block_vars('revue_sujet.message', array(
'MEMBRE_LOGIN' => ( $revue['membre_id'] == INVITE ) ? $revue['pseudo_posteur'] : '<a href="' . ajout_sid($racine . 'membre-.html' . $revue['membre_id']) . '">' . $revue['pseudo_posteur'] . '</a>',
'POSTE_LE' => aff_date($revue['message_temps']),
'MESSAGE' => $message_revue
));
}
}

if ($membre['membre_id'] == INVITE && ($droits['droit_poster'] || $droits['droit_repondre']) && $mode != 'editer')
{
$tpl->create_block('invite');
}

if ( $mode == 'nouveau_sujet' || ( $mode == 'editer' && $premier_message ) )
{
$tpl->create_block('sujet_nom');
}

$tpl->pparse('corps');

// On inclut le bas de la page
include( $racine . 'includes/footer_forum.php');

?>
[/html]
 
bl4ckd0g
01 Mars 2006, 14:03
[html]<?php
/*******************************************************************************
*
* [ ./admin/admin_forum_gestion.php (français) ]
*
* --------------------------------------------------------------------------
* Commencé le : 6 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 25 septembre 2005 par Genova
* Templates : 3
* admin/gestion_categorie.tpl
* admin/gestion_forum.tpl
* admin/index_forum.tpl
*
*******************************************************************************/

//
// Ce fichier assez compliqué gère la création, l'édition, la suppresion, le déplacement de catégories
// et de forums. Les catégories et les forums sont sauver dans deux fichiers du cache/ afin de diminuer le nombre
// d'accès à la base de donnée. Pour pouvoir effectuer des opérations sur les forums et les catégories il faut à la fois
// considérer le fait que nous sommes dans un tableau, et aussi le fait qu'il y est une hierarchie.
//

define('ADMINISTRATION', TRUE);
$racine = '../';
include( $racine . 'demarrage.php' );

// On démare la session
$membre = recuperer_session();

// On inclu les données sur les forums/categories
include( $racine . 'cache/fichier_categorie.php' );
$cache->load_table('forum', CACHE_SQL);

// On inclut les différents tags
include ( $racine . 'cache/fichier_tags.php' );

// On inclut le fichier simplifié pour les TAGs
include ( $racine . 'cache/fichier_tag.php' );
$tag = $cache->convert_to_simple_array($tag, 'id', 'tag');

$sub_tags = ( isset($HTTP_POST_VARS['sub_tags']) ) ? TRUE : FALSE;

aut_administration(ADMIN);

include( $racine . 'includes/functions/fonctions_hierarchie.php' );

$mode = !empty($HTTP_GET_VARS['mode']) ? htmlSpecialChars($HTTP_GET_VARS['mode']) : htmlSpecialChars($HTTP_POST_VARS['mode']);
$id = !empty($HTTP_GET_VARS['id']) ? intval($HTTP_GET_VARS['id']) : intval($HTTP_POST_VARS['id']);

/************************************
* Supprime les messages et les sujets des forums passés, ainsi que les forums du cache
************************************/
function supprimer_forum($f, $position, $forum_seul = FALSE)
{
global $bdd, $cache, $compte_forum, $forum, $langue;

$t = recuperer_hierarchie_id($f, $position, '', array(), $forum_seul);
$forums_id = $t['ids'];
$t_forums_id = $t['t_ids'];

if ( $forums_id != '' )
{
$sql = 'DELETE FROM ' . MESSAGES_TABLE . '
WHERE forum_id IN(' . $forums_id . ')';
if ( ! $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'messages'), __LINE__, __FILE__, $sql);
}

$sql = 'DELETE FROM ' . SUJETS_TABLE . '
WHERE forum_id IN(' . $forums_id . ')';
if ( ! $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'sujets'), __LINE__, __FILE__, $sql);
}

$sql = 'DELETE FROM ' . MESSAGES_LUS_TABLE . '
WHERE forum_id IN(' . $forums_id . ')';
if ( ! $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'messages lus'), __LINE__, __FILE__, $sql);
}

$tmp_forum = array();
for ( $i = 0; $i < $compte_forum; $i++ )
{
if ( ! in_array($forum[$i]['forum_id'], $t_forums_id) )
{
$tmp_forum[] = $forum[$i];
}
}

$compte_forum = count($tmp_forum);
$cache->write_in_cache($tmp_forum, 'forum', $compte_forum);
}

return TRUE;
}

//
// Si on est en mode de supression de catégorie on effectue une boucle dans les catégories en passant la clé qui
// doit être supprimée.
//
if ( $mode == 'supprimer_cat' )
{
if ( empty($categorie[$id]['cat_id']) )
{
info($langue['info_titre'], $langue['categorie_non_existante']);
}

if ( isset($HTTP_POST_VARS['confirm_oui']) )
{
supprimer_forum($categorie[$id], PREMIER_PALIER);
array_splice($categorie, $id, 1);
$cache->write_in_cache($categorie, 'categorie', count($categorie));

info($langue['info_titre'], $langue['info_cat_supprime'] . '<br /><br />' . sprintf($langue['retour_forum_gestion'], ajout_sid('admin_forum_gestion.php')) . '<br /><br />' . sprintf($langue['retour_index_admin'], ajout_sid('index.php')));
}
else if ( isset($HTTP_POST_VARS['confirm_non']) )
{
// On retourne sur l'index de gestion des forums
}
else
{
confirmation('admin_forum_gestion.php', $langue['confirm_suppr_cat'], array('mode' => $mode, 'id' => $id));
}
}

//
// Si on est en mode de supression de catégorie on effectue une boucle dans les catégories en passant la clé qui
// doit être supprimée.
//
if ( $mode == 'supprimer_forum' )
{
if ( empty($forum[$id]['forum_id']) )
{
info($langue['info_titre'], $langue['forum_non_existant']);
}

if ( isset($HTTP_POST_VARS['confirm_oui']) )
{
supprimer_forum($forum[$id], (PREMIER_PALIER + 1), TRUE);

info($langue['info_titre'], $langue['info_forum_supprime'] . '<br /><br />' . sprintf($langue['retour_forum_gestion'], ajout_sid('admin_forum_gestion.php')) . '<br /><br />' . sprintf($langue['retour_index_admin'], ajout_sid('index.php')));
}
else if ( isset($HTTP_POST_VARS['confirm_non']) )
{
// On retourne sur l'index de gestion des forums
}
else
{
confirmation('admin_forum_gestion.php', $langue['confirm_suppr_forum'], array('mode' => $mode, 'id' => $id));
}
}

//
// Si on déplace une catégorie on inverse son ID de position (la clé de base du tableau) avec l'autre.
//
if ( $mode == 'monter_cat' || $mode == 'descendre_cat' )
{
for ( $c = 0; $c < $compte_categorie; $c++ )
{
if ( $mode == 'monter_cat' && $c == $id && $c > 0 )
{
$id_change = $c - 1;
}
else if ( $mode == 'descendre_cat' && $c == $id && $c < ( $compte_categorie - 1 ) )
{
$id_change = $c + 1;
}
else
{
$id_change = $c;
}

$categorie_avant = $categorie[$id_change];
$categorie_actuelle = $categorie[$c];
$categorie[$id_change] =$categorie_actuelle;
$categorie[$c] = $categorie_avant;
}

$cache->write_in_cache($categorie, 'categorie', $compte_categorie);
}

//
// Si on déplace un forum on va chercher tout d'abord les autres forums situés sur le même niveau d'arborescence
// puios effectuer une inversion de clé
//
if ( $mode == 'monter_forum' || $mode == 'descendre_forum' )
{
$forum_tmp = array();
$f_tmp = 0;
$id_tmp = '';
for ( $f = 0; $f < count($forum); $f++ )
{
if ( ( $forum[$id]['cat_id'] != '' && $forum[$id]['cat_id'] == $forum[$f]['cat_id'] ) || ( $forum[$id]['forum_lien_id'] != '' && $forum[$id]['forum_lien_id'] == $forum[$f]['forum_lien_id'] ) )
{
$id_tmp = ( $f == $id ) ? $f_tmp : $id_tmp;
$forum_tmp[$f_tmp] = $forum[$f];
$forum_tmp[$f_tmp]['tmp_cle_id'] = $f;
$f_tmp++;
}
}

for ( $g = 0; $g < count($forum_tmp); $g++ )
{
if ( $mode == 'monter_forum' && $g == $id_tmp && $g > 0 )
{
$forum[$forum_tmp[$g - 1]['tmp_cle_id']] = $forum_tmp[$g];
$forum[$forum_tmp[$g]['tmp_cle_id']] = $forum_tmp[$g - 1];
}
else if ( $mode == 'descendre_forum' && $g == $id_tmp && $g < ( count($forum_tmp) - 1 ) )
{
$forum[$forum_tmp[$g]['tmp_cle_id']] = $forum_tmp[$g + 1];
$forum[$forum_tmp[$g + 1]['tmp_cle_id']] = $forum_tmp[$g];
}
}

$cache->write_in_cache($forum, 'forum', $compte_forum);
}

//
// Le formulaire a t'il été soumis?
//
if ( isset($HTTP_POST_VARS['soumettre']) )
{

if ( $mode == 'ajouter_cat' || $mode == 'editer_cat' )
{
//
// On récupère les données du formulaire et on copie les données dans ./cache/fichier_categorie.php
//
if ( $mode == 'ajouter_cat' )
{
$categorie_tmp = $categorie;
function cat_id_desc($a, $b)
{
return ( $a['cat_id'] > $b['cat_id'] ) ? -1 : 1;
}
reset($categorie_tmp);
usort($categorie_tmp, 'cat_id_desc');
}

$cat_nom = trim($HTTP_POST_VARS['cat_nom']);

if ( empty($cat_nom) )
{
$erreur .= $langue['er_champs_vides'] . '<br />';
}

$forum_tags = array();

for ($i = 0; $i < $compte_tags; $i++)
{
if ( isset($HTTP_POST_VARS['tag' . $tags[$i]['id']]) )
{
$forum_tags[] = $tags[$i]['id'];
}
}
if ( !empty($forum_tags) )
{
$forum_tags = implode(',', $forum_tags);
}
else
{
$forum_tags = '';
}

if ( empty($erreur) )
{
$id_cat = ( $mode == 'editer_cat' ) ? $id : $compte_categorie;

$categorie[$id_cat]['cat_id'] = ( $mode == 'editer_cat' ) ? $categorie[$id_cat]['cat_id'] : $categorie_tmp[0]['cat_id'] + 1;
$categorie[$id_cat]['cat_nom'] = stripslashes($cat_nom);

$cache->write_in_cache($categorie, 'categorie', count($categorie));

info($langue['info_titre'], $langue['cat_update'] . '<br /><br />' . sprintf($langue['retour_forum_gestion'], ajout_sid('admin_forum_gestion.php')) . '<br /><br />' . sprintf($langue['retour_index_admin'], ajout_sid('index.php')));
}
}
else if ( $mode == 'ajouter_forum' || $mode == 'editer_forum' )
{
//
// On récupère les données du formulaire et on copie les données dans ./cache/fichier_forum.php
//
if (empty($HTTP_POST_VARS['place']))
{
info($langue['info_titre'], $langue['forum_non_existant']);
}

if ( $mode == 'ajouter_forum' )
{
$forum_tmp = $forum;
function forum_id_desc($a, $b)
{
return ( $a['forum_id'] > $b['forum_id'] ) ? -1 : 1;
}
reset($forum_tmp);
usort($forum_tmp, 'forum_id_desc');
}

$forum_nom = trim($HTTP_POST_VARS['forum_nom']);
$forum_description = trim($HTTP_POST_VARS['forum_description']);
$place = $HTTP_POST_VARS['place'];
$forum_cat_id = ( preg_match('/^c-/', $place) ) ? substr($place, 2) : '';
$forum_lien_id = ( preg_match('/^f-/', $place) ) ? substr($place, 2) : '';

if (empty($forum_nom))
{
$erreur .= $langue['er_champs_vides'] . '<br />';
}

if ( empty($erreur) )
{
$id_forum = ( $mode == 'editer_forum' ) ? $id : count($forum);
$compte_forum += ( $mode == 'editer_forum' ) ? 0 : 1;

$forum[$id_forum]['forum_id'] = ( $mode == 'editer_forum' ) ? $forum[$id_forum]['forum_id'] : $forum_tmp[0]['forum_id'] + 1;
$forum[$id_forum]['cat_id'] = $forum_cat_id;
$forum[$id_forum]['forum_lien_id'] = $forum_lien_id;
$forum[$id_forum]['forum_nom'] = stripslashes($forum_nom);
$forum[$id_forum]['forum_description'] = stripslashes($forum_description);

if ( $sub_tags )
{
$forum_f = $forum[$id_forum]['forum_id'];
$t = recuperer_hierarchie_id($forum_f, ( PREMIER_PALIER + 1 ), '', array(), TRUE);
for ( $c = 0; $c < $compte_forum; $c++ )
{
if ( in_array($forum[$c]['forum_id'], $t['t_ids']) )
{
$forum[$c]['forum_tags'] = $forum_tags;
}
}
}
else
{
$forum[$id_forum]['forum_tags'] = $forum_tags;
}


if ( $mode == 'ajouter_forum' )
{
$forum[$id_forum]['forum_nb_message'] = 0;
$forum[$id_forum]['forum_nb_sujet'] = 0;

// On met les droits editer et supprimer sur 'membre'
$forum[$id_forum]['droit_editer'] = 1;
$forum[$id_forum]['droit_supprimer'] = 1;
}

$cache->write_in_cache($forum, 'forum', count($forum));

info($langue['info_titre'], $langue['forum_update'] . ( $mode == 'ajouter_forum' ? '<br /><br />' . sprintf($langue['modifier_forum_permission'], ajout_sid('admin_forum_droit.php?forum=f-' . $forum[$id_forum]['forum_id'])) : '' ) . '<br /><br />' . sprintf($langue['retour_forum_gestion'], ajout_sid('admin_forum_gestion.php')) . '<br /><br />' . sprintf($langue['retour_index_admin'], ajout_sid('index.php')));
}

}
}

include( $racine . 'admin/header_admin.php');

// On affiche l'explication pour cette page
admin_explication($langue['gestion_forum'], $langue['gestion_forum_explication']);

if ( $mode == 'ajouter_cat' || $mode == 'editer_cat' )
{
//
// On va créer le formulaire de création de catégorie, en cas d'édition on utilise le même formulaire
// mais muni de valeurs. On copira les données dans le fichier ./cache/fichier_categorie.php
//
if ( ! empty($erreur) )
{
info($langue['info_titre'], $erreur, '', '', '', FALSE);
}

if ( $mode == 'editer_cat' && empty($erreur) )
{
if ( empty($categorie[$id]['cat_id']) )
{
info($langue['info_titre'], $langue['categorie_non_existante']);
}

$v_cat_nom = $categorie[$id]['cat_nom'];
}
else if ( ! empty($erreur) )
{
$v_cat_nom = $cat_nom;
}
else
{
$v_cat_nom = '';
}

$v_hidden = '<input type="hidden" name="mode" value="' . mode . '" />';
$v_hidden .= '<input type="hidden" name="id" value="' . $id . '" />';

$tpl->set_filenames(array('corps' => 'admin/gestion_categorie.tpl'));

$tpl->assign_vars( array(
'L_GESTION_CAT' => $langue[$mode],
'L_CAT_NOM' => $langue['nom'],
'L_SOUMETTRE' => $langue['soumettre'],

'V_ACTION' => ajout_sid('admin_forum_gestion.php?mode=' . $mode . '&amp;id=' . $id),
'V_CAT_NOM' => $v_cat_nom,
'V_HIDDEN' => $v_hidden
));
}
else if ( $mode == 'ajouter_forum' || $mode == 'editer_forum' )
{
//
// On va créer le formulaire de création de forum, en cas d'édition on utilise le même formulaire
// mais muni de valeurs. On copira les données dans le fichier ./cache/fichier_forum.php
//
if ( ! empty($erreur) )
{
info($langue['info_titre'], $erreur, '', '', '', FALSE);
}

if ( $mode == 'editer_forum' && empty($erreur) )
{
if ( empty($forum[$id]['forum_id']) )
{
info($langue['info_titre'], $langue['forum_non_existant']);
}

$v_forum_nom = stripslashes($forum[$id]['forum_nom']);
$v_forum_description = stripslashes($forum[$id]['forum_description']);
$v_selection = ( $forum[$id]['cat_id'] != '' ) ? 'c-' . $forum[$id]['cat_id'] : 'f-' . $forum[$id]['forum_lien_id'];
}
else if ( ! empty($erreur) )
{
$v_forum_nom = stripslashes($forum_nom);
$v_forum_description = stripslashes($forum_description);
$v_selection = $place;
}
else
{
$v_forum_nom = '';
$v_forum_description = '';
$v_selection = '';
}

//
// on génère la liste des forums, catégories afin de pouvoir attacher le forum à l'arbre
//
$forum_place = hierarchie_forums(FALSE, $categorie, $forum, 'place', $v_selection, false);

$v_hidden = '<input type="hidden" name="mode" value="' . mode . '" />';
$v_hidden .= '<input type="hidden" name="id" value="' . $id . '" />';

$tpl->set_filenames(array('corps' => 'admin/gestion_forum.tpl'));
$forum[$id]['forum_tags'] = explode(',', $forum[$id]['forum_tags']);

for ( $t = 0; $t < $compte_tags; $t++ )
{
$checked = false;
if ( in_array($tags[$t]['id'], $forum[$id]['forum_tags']) ) $checked = true;
$tpl->assign_block_vars('tags', array(
'ID' => $tags[$t]['id'],
'COULEUR' => $tags[$t]['couleur'],
'TAG' => $tags[$t]['tag'],
'CHECKED' => ( $checked == true ) ? ' checked="checked"' : ''
));
}

$tpl->assign_vars( array(
'L_GESTION_FORUM' => $langue[$mode],
'L_FORUM_NOM' => $langue['nom'],
'L_FORUM_DESCRIPTION' => $langue['description'],
'L_FORUM_PLACE' => $langue['forum_place'],
'L_FORUM_PLACE_EXP' => $langue['forum_place_exp'],
'L_SOUMETTRE' => $langue['soumettre'],
'L_TAGS_AUT' => $langue['TAGS_tags_aut'],
'L_TAGS_AUT_EX' => sprintf($langue['TAGS_tags_aut_exp'], ajout_sid('admin_divers_tags.php')),
'L_TAGS_SUB' => $langue['TAGS_tags_sub_forum'],

'FORUM_PLACE' => $forum_place['liste'],

'V_ACTION' => ajout_sid('admin_forum_gestion.php?mode=' . $mode . '&amp;id=' . $id),
'V_FORUM_NOM' => $v_forum_nom,
'V_FORUM_DESCRIPTION' => $v_forum_description,
'V_HIDDEN' => $v_hidden
));
}
else
{
//
// Afin de pouvoir mettre en place directement le concept de sous forums, à savoir un nombre de boucle
// imbriquées indéterminable, on utilise la récursivité dans les fonctions, à savoir l'appel
// de la fonction en son sein même.
//
$tpl->set_filenames(array('corps' => 'admin/index_forum.tpl'));

/************************************
* Cette fonction va afficher pour chaque "racine" de forum l'ensemble de ses sous forums. La variable de sous
* niveau sert à détecter le degré de sous forum par rapport à la catégorie, ce qui servira pour le positionement
* graphique des niveaux de forum.
************************************/
function arbre_forums($arg_forum, $sous_niveau)
{
global $forum, $tpl, $langue, $tag;

$possede_forum = FALSE;
for ( $i = 0; $i < count($forum); $i++ )
{
if ( ( $sous_niveau == PREMIER_PALIER && $arg_forum['cat_id'] == $forum[$i]['cat_id'] ) || ( $sous_niveau != PREMIER_PALIER && $forum[$i]['forum_lien_id'] == $arg_forum['forum_id'] ) )
{
$forum_width = 1;
for ( $j = 0; $j < $sous_niveau; $j++ )
{
$forum_width += 20;
}

if ( $forum[$i]['forum_tags'] )
{
$forum_tags = '';
$forum[$i]['forum_tags'] = explode(',', $forum[$i]['forum_tags']);

for ( $t = 0; $t < count($forum[$i]['forum_tags']); $t++ )
{
$forum_tags .= $tag[$forum[$i]['forum_tags'][$t]] . '&nbsp;';
}

}
else
{
$forum_tags = $langue['TAGS_no_tags'];
}

$tpl->assign_block_vars('cat.forum', array(
'FORUM_NOM' => $forum[$i]['forum_nom'],
'FORUM_WIDTH' => $forum_width,
'TAGS' => $forum_tags,

'U_EDITER' => ajout_sid('admin_forum_gestion.php?mode=editer_forum&id=' . $i),
'U_SUPPRIMER' => ajout_sid('admin_forum_gestion.php?mode=supprimer_forum&id=' . $i),
'U_MONTER' => ajout_sid('admin_forum_gestion.php?mode=monter_forum&id=' . $i),
'U_DESCENDRE' => ajout_sid('admin_forum_gestion.php?mode=descendre_forum&id=' . $i)

));

$sous_niveau++;
arbre_forums($forum[$i], $sous_niveau);
$sous_niveau--;
$possede_forum = TRUE;
}
}

return $possede_forum;
}

$tpl->assign_vars( array(
'L_GESTION' => $langue['gestion_forum'],
'L_EDITER' => $langue['editer'],
'L_SUPPRIMER' => $langue['supprimer'],
'L_AJOUTER_CATEGORIE' => $langue['ajouter_cat'],
'L_AJOUTER_FORUM' => $langue['ajouter_forum'],
'L_AUCUN_FORUM' => $langue['aucun_forum'],
'L_TAGS' => $langue['TAGS_tags_forum'],

'U_AJOUTER_CATEGORIE' => ajout_sid('admin_forum_gestion.php?mode=ajouter_cat'),
'U_AJOUTER_FORUM' => ajout_sid('admin_forum_gestion.php?mode=ajouter_forum'),

'IMG_MONTER' => sprintf($theme['img'], $racine . 'themes/' . $membre['membre_theme'] . 'images/fleche_haut.gif', $langue['monter'], $langue['monter']),
'IMG_DESCENDRE' => sprintf($theme['img'], $racine . 'themes/' . $membre['membre_theme'] . 'images/fleche_bas.gif', $langue['descendre'], $langue['descendre'])
));

//
// On boucle les catégories et les forums
//
$sous_niveau = 0;
for ( $c = 0; $c < $compte_categorie; $c++ )
{
$tpl->assign_block_vars('cat', array(
'CAT_NOM' => $categorie[$c]['cat_nom'],

'U_EDITER_C' => ajout_sid('admin_forum_gestion.php?mode=editer_cat&id=' . $c),
'U_SUPPRIMER_C' =>ajout_sid('admin_forum_gestion.php?mode=supprimer_cat&id=' . $c),
'U_MONTER_C' => ajout_sid('admin_forum_gestion.php?mode=monter_cat&id=' . $c),
'U_DESCENDRE_C' =>ajout_sid('admin_forum_gestion.php?mode=descendre_cat&id=' . $c)
));

$possede_forum = arbre_forums($categorie[$c], PREMIER_PALIER);

if ( ! $possede_forum )
{
$tpl->assign_block_vars('cat.aucun_forum', array());
}
}
}

$tpl->pparse('corps');

include( $racine . 'admin/footer_admin.php');

?>
[/html]
 


.