Lien vers ce message 02 Novembre 2004, 17:19
Nouvelle version corrective en attendant la version RC2. Cette version corrige deux points assez génant (dont un apporté par la version RC1a), et permet une meilleure gestion des nouveaux messages. En effet il est désormais possible d'avoir une image non lu si un des sous forums a un topic non lu.

Les deux autres corrections apportées sont:
  1. Affichage de la catégorie dans la liste, lors de la création d'un forum, même si la catégorie ne contient pas de forums (ce qui était génant vu qu'on ne voyait pas les catégories nouvellement crées).
  2. Compte correct des messages et sujets des sous forums.

La mise à jour manuelle est disponible dans le forum de news sur le forum de support.

Voici la msie à jour manuelle:
#
# [1] ---------- ouvrir ---------------------------------------------------------
#
admin/admin_forum_gestion.php

#
# [2] ---------- chercher -------------------------------------------------------
#
   $forum_place = hierarchie_forums(FALSE, $categorie, $forum, 'place', $v_selection);

#
# [3] ---------- remplacer par --------------------------------------------------
#
   $forum_place = hierarchie_forums(FALSE, $categorie, $forum, 'place', $v_selection, FALSE);

#
# [4] ---------- ouvrir ---------------------------------------------------------
#
includes/functions/fonctions_hierarchie.php

#
# [5] ---------- chercher -------------------------------------------------------
#
               foreach ( $cookie_sujet AS $valeur )
               {
                  if ( $valeur['forum_id'] == $forum[$i]['forum_id'] && $valeur['type'] == NON_LU )
                  {
                     $forum_status = NON_LU;
                     break;
                  }
               }

#
# [6] ---------- remplacer par --------------------------------------------------
#
               $t_forum_id = recuperer_hierarchie_id($forum[$i], (PREMIER_PALIER + 1), '', array(), TRUE);
               foreach ( $cookie_sujet AS $valeur )
               {
                  if ( in_array($valeur['forum_id'], $t_forum_id['t_ids']) && $valeur['type'] == NON_LU )
                  {
                     $forum_status = NON_LU;
                     break;
                  }
               }

#
# [7] ---------- chercher -------------------------------------------------------
#
function hierarchie_forums($redirection, $categorie, $forum, $liste_name, $v_selection)
{
   global $compte_forum, $droit_forum, $moderation, $racine;

   $redirection_code = ( $redirection ) ? 'OnChange="if ( this.options[this.selectedIndex].value != 0 ) { redirection_forum(this.value); }"' : '';
   $redirection_js = '<script language="javascript">
            <!--
            function redirection_forum(valeur)
            {
               if ( valeur != "" )
               {
                  location.href="' . $racine . 'forum.php?forum=" + valeur;
               }
            }
            -->
            </script>';
   
   $sous_niveau = 1;
   $liste_forum = '<select name="' . $liste_name . '" class="listing" ' . $redirection_code . '>';
   for ( $c = 0; $c < count($categorie); $c++ )
   {
      //
      // On affiche la catégorie que si au moins
      // un de ses forums est visible.
      //
      $cat_visible = FALSE;
      for ( $i = 0; $i < $compte_forum; $i++ )
      {
         if ( $forum[$i]['cat_id'] == $categorie[$c]['cat_id'] )
         {
            $droits = droits($membre, $forum[$i], $moderation, $droit_forum);
            if ($droits['droit_voir'])
            {
               $cat_visible = TRUE;
               break;
            }
         }
      }

      if ($cat_visible)
      {
         $selection = ( $v_selection == 'c-' . $categorie[$c]['cat_id'] ) ? 'selected="selected"' : '';
         $liste_forum .= ( $c > 0 ) ? '<option value="0"></option>' : '';
         $liste_forum .= '<option value="' . ( $redirection ? '0' : 'c-' . $categorie[$c]['cat_id'] ) . '" ' . $selection . '>' . $categorie[$c]['cat_nom'] . '</option>';

         $liste_forum .= recurence_forums($categorie[$c], PREMIER_PALIER, $forum, $v_selection, $redirection);
      }
   }
   $liste_forum .= '</select>';

   return array('liste' => $liste_forum, 'code' => $redirection_js);
}

#
# [8] ---------- remplacer par --------------------------------------------------
#
function hierarchie_forums($redirection, $categorie, $forum, $liste_name, $v_selection, $cache_cat = true)
{
   global $compte_forum, $droit_forum, $membre, $moderation, $racine;

   $redirection_code = ( $redirection ) ? 'OnChange="if ( this.options[this.selectedIndex].value != 0 ) { redirection_forum(this.value); }"' : '';
   $redirection_js = '<script language="javascript">
            <!--
            function redirection_forum(valeur)
            {
               if ( valeur != "" )
               {
                  location.href="' . $racine . 'forum.php?forum=" + valeur;
               }
            }
            -->
            </script>';
   
   $sous_niveau = 1;
   $liste_forum = '<select name="' . $liste_name . '" class="listing" ' . $redirection_code . '>';
   for ( $c = 0; $c < count($categorie); $c++ )
   {
      //
      // On affiche la catégorie que si au moins
      // un de ses forums est visible.
      //
      if ($cache_cat)
      {
         $cat_visible = FALSE;
         for ( $i = 0; $i < $compte_forum; $i++ )
         {
            if ($forum[$i]['cat_id'] == $categorie[$c]['cat_id'])
            {
               $droits = droits($membre, $forum[$i], $moderation, $droit_forum);
               if ($droits['droit_voir'])
               {
                  $cat_visible = TRUE;
                  break;
               }
            }
         }
      }
      else
      {
         $cat_visible = TRUE;
      }

      if ($cat_visible)
      {
         $selection = ( $v_selection == 'c-' . $categorie[$c]['cat_id'] ) ? 'selected="selected"' : '';
         $liste_forum .= ( $c > 0 ) ? '<option value="0"></option>' : '';
         $liste_forum .= '<option value="' . ( $redirection ? '0' : 'c-' . $categorie[$c]['cat_id'] ) . '" ' . $selection . '>' . $categorie[$c]['cat_nom'] . '</option>';

         $liste_forum .= recurence_forums($categorie[$c], PREMIER_PALIER, $forum, $v_selection, $redirection);
      }
   }
   $liste_forum .= '</select>';

   return array('liste' => $liste_forum, 'code' => $redirection_js);
}

#
# [9] ---------- chercher -------------------------------------------------------
#
/************************************
* Récupère le nombre de messages et de sujets d'un forum en comptant ceux de ses
* sous forums par récurence.
*   - $forum_id :: ID du forum père
************************************/
function compte_donnees_forum($forum_id)
{
   global $compte_forum, $forum;

   for ( $i = 0; $i < $compte_forum; $i++ )
   {
      if ( $forum_id == $forum[$i]['forum_lien_id'] )
      {
         $t = compte_donnees_forum($forum[$i]['forum_id']);
         $t['nb_message'] += $forum[$i]['forum_nb_message'];
         $t['nb_sujet'] += $forum[$i]['forum_nb_sujet'];
      }
   }

   return array('nb_message' => $t['nb_message'], 'nb_sujet' => $t['nb_sujet']);
}

#
# [10] ---------- remplacer par --------------------------------------------------
#
/************************************
* Récupère le nombre de messages et de sujets d'un forum en comptant ceux de ses
* sous forums par récurence. Ne compte que les messages et sujets des sous forums,
* veillez donc à  additioner ensuite avec ceux du forum courant.
*   - $forum_id :: ID du forum père
************************************/
function compte_donnees_forum($forum_id)
{
   global $compte_forum, $forum;

   $t = array();
   for ( $i = 0; $i < $compte_forum; $i++ )
   {
      if ( $forum_id == $forum[$i]['forum_lien_id'] )
      {
         $tmp = compte_donnees_forum($forum[$i]['forum_id']);
         $t['nb_message'] += $tmp['nb_message'] + $forum[$i]['forum_nb_message'];
         $t['nb_sujet'] += $tmp['nb_sujet'] + $forum[$i]['forum_nb_sujet'];
      }
   }

   return array('nb_message' => $t['nb_message'], 'nb_sujet' => $t['nb_sujet']);
}


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors