Comme convenue ci-joint le copier coller de la page fonction.php

<?php
/*******************************************************************************
*
*      [ ./includes/functions/fonctions.php (français) ]
*
* --------------------------------------------------------------------------
* Commencé le :  25 juillet 2004
* Copyright :  Groupe Fire Soft Board
* Site Web :   [url=http://www.fire-soft-board.com/]http://www.fire-soft-board.com[/url]
* E-mail :   [mail=support@fire-soft-board.com]support@fire-soft-board.com[/mail]
* --------------------------------------------------------------------------
* 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 28 mai 2006 par Genova
* Templates : 0
*
*******************************************************************************/
/************************************
* Cette fonction ajoute à l'url donnée la variable SID
* - Fonction inspirée de append_sid() de phpBB
************************************/
function ajout_sid($url, $html = TRUE)
{
global $membre, $config;

if((defined('PAGE_CONNEXION') || $membre['membre_id'] != INVITE) && !strpos($url, 'sid=') && $config['session_url'] && !defined('COOKIE_SID'))
{
     $url = ( strpos($url, '?') == FALSE ) ? $url . '?sid=' . $membre['session_sid'] : $url . (($html) ? '&amp;' : '&') . 'sid=' . $membre['session_sid'];
}

return $url;
}
/************************************
* Cette fonction liste les dossiers et / ou les fichiers d un repertoire
*  $chemin :: chemin du dossier
* $nom_select :: Nom du select
* $valeur :: Valeur de la sélection
* $type :: TRUE pour lister des fichiers, FALSE pour les dossiers
************************************/
function liste_fichier($chemin, $nom_select, $valeur, $type = FALSE)
{
if ($dossier = opendir($chemin))
{
  $fichiers .= '<select name="' . $nom_select . '" class="listing">';
  while ($fichier = readdir($dossier))
  {
   if ($fichier != '.' && $fichier != '..' && $fichier != 'index.htm')
   {
    if (($type && is_file($chemin . $fichier)) || (!$type && is_dir($chemin . $fichier)))
    {
     $filename = ($type) ? $fichier : $fichier . '/';
     $selection = ($filename == $valeur) ? 'selected="selected"' : '';
     $fichiers .= '<option value="' . $filename . '" ' . $selection . '>' . $fichier . '</option>';
    }
   }
  }
  $fichiers .= '</select>';
  closedir($dossier);
}
     
return $fichiers;
}
/************************************
*  $membre ::    Données du membre
*  $forum_m ::   Forum concerné
*  $moderation ::  Tableau contenant les données des modérateurs des forums
* $droit_forum ::  Tableau contenant les différents droits possibles
* $select ::   Tableau contenant les autorisations souhaitées (afin d'optimiser l'algorithme)
************************************/
function droits($membre, $forum_m, $moderation, $droit_forum, $select = NULL)
{
global $bdd, $categorie_personne;
//
// On récupère le niveau de droit du membre, donné par les clés du tableau:
// $categorie_personne = array('invite', 'membre', 'modo_forum', 'modo', 'modosup', 'admin');
//
$droits = array();
$droits['est_modo'] = FALSE;
if ( $membre['membre_aut'] == MODO )
{
  for ( $m = 0; $m < count($moderation); $m++ )
  {
   if ( $moderation[$m]['membre_id'] == $membre['membre_id'] && $moderation[$m]['forum_id'] == $forum_m['forum_id'] )
   {
    $droits['est_modo'] = TRUE;
    break;
   }
  }
}
else if ( $membre['membre_aut'] > MODO )
{
  $droits['est_modo'] = TRUE;
}
//
// En fonction des permissions du forum on renvoie ce que le membre a le droit et n'a pas le droit de faire.
// Dans les cas des droits d'édition et de suppresion, si le niveau est réglé sur membre
// ou invité, on lui donne le droit de toucher à ses propres messages.
// - Dark_Genova -
//
for ( $d = 0; $d < count($droit_forum); $d++ )
{
  if (is_array($select) && !in_array($droit_forum[$d], $select))
  {
   continue;
  }
  if ( $membre['membre_aut'] == ADMIN )
  {
   $droits[$droit_forum[$d]] = TRUE;
  }
  else
  {
   if (($droit_forum[$d] == 'droit_editer' || $droit_forum[$d] == 'droit_supprimer') && ($categorie_personne[$forum_m[$droit_forum[$d]]] == 'invite' || $categorie_personne[$forum_m[$droit_forum[$d]]] == 'membre') && $membre['membre_aut'] <= MODO && !$droits['est_modo'])
   {
    $droits[$droit_forum[$d]] = 0;
    if ( $forum_m[$droit_forum[$d]] > $membre['membre_aut'] + 1 )
    {
     $droits['membre_' . substr($droit_forum[$d], 6)] = FALSE;
    }
    else
    {
      $droits['membre_' . substr($droit_forum[$d], 6)] = TRUE;
    }
   }
   else
   {
    if ( ( $forum_m[$droit_forum[$d]] == 2 && ( $droits['est_modo'] || $membre['membre_aut'] > MODO ) ) || ( $forum_m[$droit_forum[$d]] == 3 && $membre['membre_aut'] > MEMBRE ) )
    {
     $droits[$droit_forum[$d]] = TRUE;
    }
    else if ( $forum_m[$droit_forum[$d]] == 0 || ( $forum_m[$droit_forum[$d]] == 1 && $membre['membre_aut'] >= MEMBRE && $membre['membre_id'] != INVITE ) || ( $forum_m[$droit_forum[$d]] == 4 && $membre['membre_aut'] >= MODOSUP ) )
    {
     $droits[$droit_forum[$d]] = TRUE;
    }
    else
    {
     $droits[$droit_forum[$d]] = FALSE;
    }
   }
  }
}
return $droits;
}
/************************************
* Cette fonction créé une liste des pages pour certaines données.
* $url ::  URL de la page vers laquelle les liens redirigeront
* $nb_page ::  Nombre de pages totales
* $get_page :: Page actuelle
* $suiv_prec :: Si TRUE, affiche les liens 'suivants' et 'précédent'
* $liste ::  Si TRUE, affiche une liste des pages
************************************/
function pagination($url, $nb_page, $get_page, $suiv_prec = TRUE, $liste = TRUE)
{
global $langue;
$ppage = $url . ( strstr($url, '?') ? '&amp;' : '?' ) . 'page=';
$pagination = '';
$boucle_ok = TRUE;
for ( $i = 1; $i <= $nb_page; $i++ )
{
  if ( $nb_page < 10 )
  {
   $pagination .= ( $i != $get_page ? '<a href="' . ajout_sid($ppage . $i) . '" class="pagination">' . $i . '</a>' : '<span style="text-decoration: underline">' . $i . '</span>' ) . ( $i < $nb_page ? ', ' : '' );
  }
  else
  {
   if ( $i <= 3 )
   {
    $pagination .= ( $i != $get_page ) ? '<a href="' . ajout_sid($ppage . $i) . '" class="pagination">' . $i . '</a>, ' : '<span style="text-decoration: underline">' . $i . '</span>, ';
   }
   else if ( $i > 3 && $i < ( $nb_page - 2 ) && $boucle_ok )
   {
    if ( $get_page > 2 && $get_page < 6 )
    {
     $pagination .= ( $get_page == 5 ) ? '<a href="' . ajout_sid($ppage . ( $get_page - 1 )) . '" class="pagination">' . ( $get_page - 1 ) . '</a>, ' : '';
     $pagination .= ( $get_page > 3 ) ? '<span style="text-decoration: underline">' . $get_page . '</span>, ' : '';
     $pagination .= '<a href="' . ajout_sid($ppage . ( $get_page + 1 )) . '" class="pagination">' . ( $get_page + 1 ) . '</a>, ';
     $pagination .= '..., ';
    }
    else if ( $get_page >= 6 && $get_page <= ( $nb_page - 5 )  )
    {
     $pagination .= '..., ';
     for ( $a = -1 ; $a <= 1 ; $a ++ )
     {
      $pagination .= ( $a != 0 ) ? '<a href="' . ajout_sid($ppage . ( $get_page + $a )) . '" class="pagination">' . ( $get_page + $a ) . '</a>, ' : '<span style="text-decoration: underline">' . $get_page . '</span>, ';
     }
     $pagination .= '..., ';
    }
    else if ( $get_page > ( $nb_page - 5 ) && $get_page < ( $nb_page - 1 ) )
    {
     $pagination .= '..., ';
     $pagination .= '<a href="' . ajout_sid($ppage . ( $get_page - 1 )) . '" class="pagination">' . ( $get_page - 1 ) . '</a>, ';
     $pagination .= ( $get_page < ( $nb_page - 2 ) ) ? '<span style="text-decoration: underline">' . $get_page . '</span>, ' : '';
     $pagination .= ( $get_page == ( $nb_page - 4 ) ) ? '<a href="' . ajout_sid($ppage . ( $get_page + 1 )) . '" class="pagination">' . ( $get_page + 1 ) . '</a>, ' : '';
    }
    else
    {
     $pagination .= '..., ';
    }
    $boucle_ok = FALSE;
   }
   else if ( $i >= ( $nb_page - 2 ) )
   {
    $pagination .= ( $i != $get_page ? '<a href="' . ajout_sid($ppage . $i) . '" class="pagination">' . $i . '</a>' : '<span style="text-decoration: underline">' . $i . '</span>' ) . ( $i < $nb_page ? ', ' : '' );
   }
  }
}
if ( $liste )
{
  $code_js = '<script language="javascript" type="text/javascript">function liste_pagination(value) { location.href="' . ajout_sid(str_replace('&amp;', '&', $url)) . ( strstr($url, '?') ? '&' : '?' ) . 'page=" + value; }</script>';
  $page_liste = '<select name="page" onchange="liste_pagination(this.value);" class="listing">';
  for ( $i = 1; $i <= $nb_page; $i++ )
  {
   $selection = ( $i == $get_page ) ? 'selected="selected"' : '';
   $page_liste .= '<option value="' . $i . '" ' . $selection . '>' . $i . '</option>';
  }
  $page_liste .= '</select>';
  
}
$pagine .= ( $suiv_prec && $get_page > 1 ? '<a href="' . ajout_sid($ppage . ( $get_page - 1 )) . '"><<</a>&nbsp;&nbsp;&nbsp;' : '' );
$pagine .= $langue['page'] . ': ' . $pagination;
$pagine .= ( $liste ? '&nbsp;&nbsp;' . $page_liste : '' );
$pagine .= ( $suiv_prec && $get_page < $nb_page ? '&nbsp;&nbsp;&nbsp;<a href="' . ajout_sid($ppage . ( $get_page + 1 )) . '">>></a>' : '' );
$tableau = array();
$tableau['pagination'] = '<b>' . $pagine . '</b>';
$tableau['code'] = $code_js;
return $tableau;
}
/************************************
* Cette fonction va récupérer le tableau d'un forum à partir de son id
*       $forum_id :: Id du forum concerné
************************************/
function forum_tableau($forum_id)
{
global $compte_forum, $forum;
$frm = array();
for( $a = 0; $a < $compte_forum; $a++ )
{
  if( $forum_id == $forum[$a]['forum_id'] )
  {
   $frm = $forum[$a];
   $frm['cle_forum'] = $a;
   return ($frm);
  }
}
return array();
}
/************************************
* Cette fonction retourne une date à partir d'un timestamp et d'un format de date
*       $timestamp :: Timestamp pour la date. S'il n'est pas fourni, le timestamp actuel sera utilisé.
*       $format :: Format de la date. S'il n'est pas fourni, la fonction choisira automatiquement le format du
*       membre ou le format par défaut.
************************************/
function aff_date($timestamp, $format = '')
{
        global $config, $langue, $membre;
        
        if( $format == '' )
        {
         $format = ($membre['membre_date_format'] != '') ? $membre['membre_date_format'] : $config['date_format'];
        }
        $timestamp = intval($timestamp) != '' ? intval($timestamp) : time();
        $date = date($format, $timestamp);
        $date = strtr($date, $langue['date']);
        return $date;
}
/************************************
* Cette fonction redirige vers une url
*       $url :: Url vers vers où rediriger
************************************/
function redir($url)
{
        header('Location: ' . ajout_sid($url, FALSE));
        exit;
}
/************************************
* Envoie un mail avec entête HTML en Bcc
************************************/
function envoyer_mail($titre, $message, $from, $to)
{
$titre = ( trim($titre) == '' ) ? 'Aucun sujet' : $titre;
$message = ( trim($message) == '' ) ? 'Aucun message' : $message;
$headers = 'From: ' . $from . "\r\n";
return ( !  @mail($to, stripslashes($titre), stripslashes($message), $headers) ) ? FALSE : TRUE;
}
/************************************
* Renvoie le niveau d'autorisation du membre sous forme de langue.
************************************/
function niveau_autorisation($membre)
{
global $langue;
switch($membre['membre_aut'])
{
  case MEMBRE:
   return ($langue['membre']);
  case MODO:
   return ($langue['modo']);
  case MODOSUP:
   return ($langue['modosup']);
  case ADMIN:
   return ($langue['admin']);
  default:
   return ($langue['invite']);
}
}
/************************************
* Rajoute des antislashes aux \ et ' uniquement
************************************/
function simpleslashes($text)
{
$text = str_replace('\\', '\\\\', $text);
$text = str_replace("'", "\'", $text);
return ($text);
}
/*
** Un print_r() mieux présenté et coloré, avec respect de l'indentation.
** Utilisé pour le débugage.
*/
function printr($array)
{
static $indentation = '';
static $array_key = '';
$cst_indentation = '&nbsp;&nbsp;&nbsp;&nbsp;';
echo $indentation . $array_key . '<b>array(</b><br />';
reset($array);
while (list($k, $v) = each($array))
{
  if (is_array($v))
  {
   $indentation .= $cst_indentation;
   $array_key = '\'<i style="color: #334499 ;">' . addslashes(htmlspecialchars($k)) . '</i>\' => ';
   printr($v);
   $indentation = substr($indentation, 0, strlen($indentation) - strlen($cst_indentation));
  }
  else
  {
   echo $indentation . $cst_indentation . '\'<i style="color: #334499 ;">' . addslashes(htmlspecialchars($k)) . '</i>\' => \'' . addslashes(htmlspecialchars($v)) . '\',<br />';
  }
}
echo $indentation . '<b>)</b>' . (($indentation === '') ? ';' : ',') . '<br />';
}
/*
** Renvoie la structure du tableau passé en paramètre sous
** forme de chaîne de caractère (qui peut ainsi être écrite
** dans un fichier cache par exemple). L'indentation et la mise
** en forme du code via des espaces et des \n est prise en 
** compte.
** -----
** $array :: Tableau dont la structure sera récupérée.
** $array_name :: Nom du tableau.
*/
if (!function_exists('var_export'))
{
function var_export($array, $end)
{
  $str = "array(\n";
  while (list($k, $v) = each($array))
  {
   if (is_array($v))
   {
    $str .= "'$k' => " . var_export($v, FALSE);
   }
   else
   {
    $str .= "'$k' => '" . simpleslashes($v) . "',\n";
   }
  }
  $str .= ")" . (($end) ? '' : ',') . "\n";
  return ($str);
}
}
function get_array_code($array, $array_name)
{
$str = '$' . $array_name . ' = ' . var_export($array, TRUE) . ';';
return ($str);
}
/*
** Vérifie si une chaîne match une seconde
** -----
** $mask ::      Premièere expression qui forme le masque
** $str ::      Chaîne de caractère matchant ou non la premièere expression
*/
function is_matching($mask, $str)
{
return ((preg_match('/' . str_replace('\*', '.*', preg_quote($mask)) . '/', $str)) ? TRUE : FALSE);
}
/*
** Encode une chaîne de caractère en caractères héxadécimaux visibles par
** le navigateur, afin d'offrir une protection contre la lecture de données dans
** la source de la page (anti spam)
** ----
** $str ::  Chaîne de caractère à encoder
*/
function hide_str($str)
{
$new = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i++)
{
  $new .= '&#x' . bin2hex($str{$i}) . ';';
}
return ($new);
}
?>




Merci pour ton aide
Advise