<?
/***************************************************************************
                          cadre.php -  Classe Cadre
                             -------------------
    begin                : Septembre  UTC 2000
    copyright            : (C) 2002 by NADAL Jean-Baptiste
    email                : jbnadal@ifrance.com
 ***************************************************************************
 *
 * Cette hierarchie de classe permet d'afficher des textes
 * soit pr�sent sur une base de donn�e soit pr�sent dans un fichier.
 *
 ***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************
 * $Id: cadre.php,v 1.4 2002/11/27 23:56:02 jb Exp $
 ***************************************************************************/


/* ============================================================= */
/* Classe de base non instanciable pour afficher des cadres.*/
class Cadre {
   // =====================================================
   //                    Les Variables
   var $szTitreCadre;       // titre du cadre
   var $szTabTexte;         // Tableau contenant le texte du cadre
   var $szDateTexte;        // date de derniere modification du texte
   var $nLongTexte;         // longueur du texte
   // ========================================
   // Constructeur de la classe
   function Cadre($titre,$texte, $date)
   {
      $this->szTitreCadre = $titre;
      $this->szTabTexte = $texte;
      $this->szDateTexte = $date;
      $this->szBgColor = "#eeea9c";
   }
   // ========================================
   function setTitre($titre)
   {
      $this->szTitreCadre =$titre;
   }
   // ========================================
   function setDate($date)
   {
      $this->szDateTexte = $date;
   }
   function SetBgColor($color)
   {
      $this->szBgColor=$color;
   }
   // =============================================================
   // Fonction permettant d'afficher le cadre
   function Affiche($fin=0)
   {
      // On affiche le bandeau du haut avec le titre et la date
      $this->affiche_CadreHaut(true);
      // Puis on affiche le texte du cadre
      //echo "<div align=\"justify\">\n";
      
      $tablo = explode( "\n",  $this->szTabTexte );

      foreach ( $tablo as $elem ) {
         if ( $this->ChercheChapitre( $elem, false) == false )
            echo "$elem\n";
      }

      // Puis on fini par afficher le bandeau du bas du cadre
      if ( $fin == 0)
         $this->affiche_CadreBas(true);
   }

   function ChercheChapitre($szChaine,$admin)
   {
      // On creer un tablo qui contiendra la chaine coup�e
      $tablo = array();
      $tablo = explode("=", $szChaine );
      // puis on enleve les espaces inutile
      $PartieGauche = trim ($tablo[0]);
      // Puis on regarde si la partie gauche correspond au mot titre
      if (strcmp("CHAPITRE",$PartieGauche) == 0) {
         // On a trouv� un titre ! on rajoute donc les embelissement
         //$this->szTabTexte[$compteur] = $this->CreerChapitre($tablo[1] );
         if ( $admin )
            $this->szTabTexte .= $this->CreerChapitre($tablo[1] );
         else {
            $chapitre = $this->CreerChapitre($tablo[1] );
            echo "$chapitre\n";
         }
         return true;
      }// fin if
      else
         return false;
   } // fin fonction ChercheChapitre
   
   function CreerChapitre($szTitreChapitre)
   {
      return "
            <table width=\"50%\" bgcolor=\"#5a69a4\" cellpadding=\"0\" cellspacing=\"0\" 
                border=\"0\"><tr><td>
            <table width=\"100%\" cellpadding=\"3\" cellspacing=\"2\" border=\"0\" >
            <tr>
            <td bgcolor=\"#5b8cc1\" align=\"left\"><font color=\"white\" size=\"2\">
            <b> $szTitreChapitre </b></font><br /></td>
            </tr></table></td></tr></table><br />
            ";
   }
   
   // =============================================================
   // Cette fonction affiche les balises du haut pour afficher le cadre
   function affiche_CadreHaut($bAffiche)
   {
      $szTexte = 
         "<table cellspacing=\"0\" cellpadding=\"1\" width=\"95%\" 
                 border=\"0\">
            <tbody>
              <tr>
                <td valign=\"middle\" align=\"center\" bgcolor=\"#ffcc99\">
                <table cellspacing=\"0\" cellpadding=\"1\" width=\"99%\" 
                       border=\"0\">
                  <tr valign=\"top\" bgcolor=\"#ffcc99\">
                     <td align=\"left\" valign=\"middle\" 
                        style=\"background : url(/legacy/Imgs/raye10.gif)\" >
                        <font face=\"helvetica,verdana\" color=\"#ffffff\" 
                              size=\"-1\">&nbsp; <b>  
                             $this->szTitreCadre </b> </font>
                     </td>
                     <td align=\"right\" 
                        style=\"background : url(/legacy/Imgs/raye10.gif)\" >
                        &nbsp;&nbsp;&nbsp;&nbsp;<b> 
                        <font face=\"helvetica,verdana\" color=\"#f4d4b2\" 
                              size=\"-1\" >
                        [ $this->szDateTexte ]&nbsp;</font> </b> </td>
                 </tr></table>
              </td></tr>
              <tr>
                <td valign=\"middle\" align=\"center\" bgcolor=\"#f7ad21\">
                  <table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" 
                         border=\"0\">
                    <tbody>
                    <tr>
                      <td valign=\"top\" align=\"left\"  width=\"100%\" 
                       style=\"background : url(/legacy/Imgs/fond.png)\" >
                       <br /><br /><div id=\"cadre\">
                      ";
      if ( $bAffiche)
         echo $szTexte;
      else
         return $szTexte;
   } // fin de la fonction affiche_CadreHaut()

   // =============================================================
   // Cette fonction affiche le cadre du bas ( en dessous du texte du cadre
   function affiche_CadreBas($bAffiche)
   {
      $szTexte = "</div>
              </td></tr></tbody></table></td></tr></tbody></table><br />\n";
      if ( $bAffiche)
         echo $szTexte;
      else
         return $szTexte;
   } // fin de la fonction affiche_CadreBas()
} // fin de la classe cadre


// =============================================================
// Cette cadre permet d'afficher les textes pr�sents dans une base
// de donn�es.
class CadreBD extends  Cadre {
   // =====================================================
   //                    Les Variables
   var $szTable;          // table dont sont tir�s les diff�rents param�tres
   var $numPage;       // numero de la page que l'on veut acc�der
   // =============================================================
   // Constructeur de la classe
   function CadreBD($tab,$numP="1")
   {
      $this->szTable = $tab;
      $this->numPage = $numP;
      $this->szBgColor = "#eeea9c";
      // Puis on se connecte pour r�cup�rer tous les champs qui nous interresse
      if ( $tab != "news")
         $this->ConnectDB();
   }
   // =============================================================
   
   // =============================================================
   // Cette m�thode permet de se connecter sur la base de donn�e
   // et de recuperer les donnees qui nous interresse
   function ConnectDB()
   {
      global $sql_bdd;
      
      // On se connecte a la base de donn�e du site
      $connect_db = jb_sql_connect(true);
      
      if ($connect_db  !=  "") {
         // On recupere les diff�rents champs qui nous interresse
         // Sur la table pass� en param�tre du constructeur
         $resultat = mysql_db_query($sql_bdd,"select * from $this->szTable where id=$this->numPage",$connect_db);
         // On stock le r�sultat dans les variables de la classe
         $this->szTitreCadre = mysql_result($resultat,0,"titre");
         
         $this->szTabTexte = mysql_result($resultat,0,"texte");
         $this->szDateTexte = mysql_result($resultat,0,"date");
         $result = mysql_close($connect_db);
      } // Fin if
      return $connect_db;
   }
   // =============================================================
   // Cette m�thode permet de retourner un tableau contenant tous les
   //
   function GetDataDB()
   {
      // Les variables locales
      global $sql_serveur;
      global $sql_bdd;
      global $sql_user;
      global $sql_passwd;
      // Fin des variables locales
      
      // On se connecte sur la base du livre d'Or
      $connect_db = jb_sql_connect(false);

      $resultat = mysql_db_query($sql_bdd,"select * from news",$connect_db);
      
      return $resultat;
   }
} // Fin de la classe Cadre BD


// =============================================================
// Cette classe permet d'afficher un article dans un cadre
class CadrePresse extends Cadre {
   
   // =============================================================
   // Constructeur de la classe
   function CadrePresse($NomDossier,$titre, $date)
   {
      // on enregistre les param�tres
      $this->szFichier = "./presse/$NomDossier/index.html";
      $this->szTitreCadre = $titre;
      $this->szDateTexte = $date;
      $this->szBgColor = "#eeea9c";
   } // fin du constructeur

   // =============================================================
   // Fonction permettant d'afficher le cadre
   function Affiche()
   {
      // On affiche le bandeau du haut avec le titre et la date
      $this->affiche_CadreHaut(true);
      // Puis on affiche le texte du cadre
      require ($this->szFichier );
      // Puis on fini par afficher le bandeau du bas du cadre
      $this->affiche_CadreBas(true);
   } // fin de la fonction Affiche()

} // fin de la classe CadreFichierPresse

// =============================================================
// Cette classe permet d'afficher les textes pr�sents dans un fichier
// Pr�sent sur le serveur
class CadreFichier extends  Cadre {
   // =====================================================
   //                    Les Variables
   var $szNomDossier;          // contient le chemin ou est stock� le fichier

   // =============================================================
   // Constructeur de la classe
   function CadreFichier($szNomFichier,$def=1)
   {
      $this->szBgColor = "#eeea9c";
      // On initialise le nom du dossier ou sont  sauv� les testes
      if ( $def >= 1 )
         $this->szNomDossier = "./Textes/";
      else
         $this->szNomDossier = "./";
      //$this->szTabTexte = array();
      
      // On ouvre dans un premier temps le fichier et on extrait les donn�es
      $bResultat= $this->OuvreFichier($szNomFichier, $def);
   } // Fin du constructeur

   // =============================================================
   // Cette fonction ouvre le fichier pass� en param�tre
   // Retourne 1 s'il c'est bien ouvert
   // faut sinon
   function OuvreFichier($szNomFichier, $action)
   {
      $bTrouveTitre=0;
      $i=0;
      // On creer le chemin complet du fichier
      $szChemin = "$this->szNomDossier$szNomFichier";
      // On r�cupere la date de derni�re modification du fichier
      $this->szDateTexte = date(  "d/m/Y H:h:i", filemtime( $szChemin) );
      
      // Puis on ouvre
      $pFichier = fopen($szChemin,"r");
      if ($pFichier == false) {
         echo "le fichier n'existe pas et voila";
         return 1;
      }

      while ( feof($pFichier) != 1 ) {
         $szLigne = fgets($pFichier,120);
         
         if ($action == 1) {
	 	if ( $bTrouveTitre == 0 ) {
            	$bresul = $this->ChercheTitre($szLigne);
            	if ($bresul == 1)
               	$bTrouveTitre = 1;
         	} // fin if
         	else {
            	if ( $this->ChercheChapitre($szLigne, true) == false )
               	$this->szTabTexte.= $szLigne;
            	//$this->szTabTexte[$i] = $szLigne;
            	$i++;
         	} // fin else
	}
	else
		$this->szTabTexte.= $szLigne;
      } // fin while
      $this->nLongTexte = $i;
      // Puis on ferme le fichier
      fclose ($pFichier);
      
      return 1;
   } // fin de la fonction OuvreFichier($szNomFichier)

   // =============================================================
   // Cette  fonction recherche le titre du document. Si elle le trouve
   // elle le sauvegarde dans sa variable et retourn 1 . 0 sinon
   function ChercheTitre($szChaine )
   {
      // On creer un tablo qui contiendra la chaine coup�e
      $tablo = array();
      $tablo = explode("=", $szChaine );
      // puis on enleve les espaces inutile
      $PartieGauche = trim ($tablo[0]);
      // Puis on regarde si la partie gauche correspond au mot titre
      if (strcmp("TITRE",$PartieGauche) == 0) {
         // Si on a trouv� le titre a lors on le sauvegarde
         $this->szTitreCadre = $tablo[1];
         // puis on retourne 1
         return true;
      } // fin if
      else
         // sinon on retourne 0
         return false;
   }
}

?>
