\n"; echo "
\n"; echo "Copyright © $copyright <$mailadmin>
\nPowered by neoscripts\n"; echo "
\n"; echo "\n"; echo "\n"; exit; } // affichage d'un texte d'erreur ! function erreur ($err = "Erreur Inconnue") { echo "
\n"; echo "

ERREUR:

\n"; echo "Le programme a renvoyé l'erreur suivante:\n$err\n"; echo "
\n

\n"; copyright (); } // initialisation des variables globales. // @liste = contenu du fichier. // %rep = (message n° i => reponses a ce message) // @index = sujets principaux function init () { global $rep, $liste, $index, $cat; static $card, $fp, $i, $regs; $card = 0; if (!file_exists("liste_$cat.txt")) { $fp = @fopen ("liste_$cat.txt", "w"); if (!$fp) {erreur ("Le fichier d'archive liste_$cat.txt est necessaire et n'a pas ete trouve ni n'a pu etre cree. Merci de prevenir le webmaster.");} } if (!file_exists("msg_$cat.txt")) { $fp = @fopen ("msg_$cat.txt", "w"); if (!$fp) {erreur ("Le fichier d'archive msg_$cat.txt est necessaire et n'a pas ete trouve ni n'a pu etre cree. Merci de prevenir le webmaster.");} } $liste = @file ("liste_$cat.txt"); $rep = array(); $index = array(); for ($i=0; $i array (auteur, date, sujet, message) function GetInfos ($num = 1) { global $cat; static $msg, $i, $regs, $tableau, $p; $msg = @file ("msg_$cat.txt"); for ($i=0;$i $tableau[0], "email" => $tableau[1], "date" => $tableau[2], "sujet" => $tableau[3], "message" => $tableau[4]); } } return array(); // en cas d'echec } // Afficher l'arborescence des reponses du message $num // fonction recursive function ArbreReponses ($num = 1) { global $cat, $Messagesaffiches, $rep, $action, $PHP_SELF; static $infos, $p, $reponses; $infos = GetInfos ($num); $MessagesAffiches++; echo "
  • "; if ($action == "admin") {echo "";} echo "".$infos['sujet']." : ".$infos['auteur'].", ".$infos['date']."\n"; if (isset($rep[$num])) { $reponses = explode (";", $rep[$num]); for ($p=sizeof($reponses)-1;$p>=0;$p--) { echo "
      \n"; ArbreReponses ($reponses[$p]); echo "
    \n"; } } } // Afficher l'arborescence totale function AfficheArbre () { global $cat, $affiche, $rep, $index, $MessagesAffiches, $page, $action, $password, $PHP_SELF; static $i, $p, $auteur, $email, $date, $sujet, $message, $reponses; if ($action == "admin") {echo "
    \n\n\n\n";} if (sizeof($index) == 0) { echo "

    PAS DE MESSAGES !
    "; } else { echo "
      \n"; echo "
      \n"; $i = ($page-1)*25; while ($MessagesAffiches < 25 and $i < sizeof($index)) { $infos = GetInfos ($index[$i]); $MessagesAffiches++; echo "
    • "; if ($action == "admin") {echo "";} echo "".$infos['sujet']." : ".$infos['auteur'].", ".$infos['date']."\n"; if (isset($rep[$index[$i]])) { $reponses = explode (";", $rep[$index[$i]]); for ($p=sizeof($reponses)-1;$p>=0;$p--) { echo "
        \n"; ArbreReponses ($reponses[$p]); echo "
      \n"; } } echo "
      \n"; $i++; } echo "
    \n"; } if ($action == "admin") {echo "
      Les messages cochés
    et les réponses à ces messages !

    QUITTER la zone d'administration
    \n
    \n";} echo "

    Index des messages
    \n"; AfficheMenu (); FormNouveauMessage (); } // Afficher l'index (uniquement les messages principaux) function AfficheIndex () { global $cat, $rep, $index, $MessagesAffiches, $page, $action, $affiche, $password, $PHP_SELF; static $i, $num_rep, $infos; if ($action == "admin") {echo "
    \n\n\n\n";} if (sizeof($index) == 0) { echo "

    PAS DE MESSAGES !
    "; } else { $i = ($page-1)*25; echo "
      \n"; while ($MessagesAffiches < 25 and $i < sizeof($index)) { if (isset($rep[$index[$i]])) { $reponses = explode (";", $rep[$index[$i]]); $num_rep = sizeof($reponses); } else { $num_rep = 0; } $infos = GetInfos ($index[$i]); $MessagesAffiches++; echo "
    • "; if ($action == "admin") {echo "";} echo "".$infos['sujet']." [$num_rep] : ".$infos['auteur'].", ".$infos['date']."\n"; $i++; } echo "
      \n"; echo "
    \n"; } if ($action == "admin") {echo "
      Les messages cochés
    et les réponses à ces messages !

    QUITTER la zone d'administration
    \n
    \n";} echo "

    Arbre des messages
    \n"; AfficheMenu (); FormNouveauMessage (); } // Affichage de menu (liens vers les differentes pages) function AfficheMenu () { global $cat, $page, $affiche, $index, $action, $password, $PHP_SELF; static $nbpages, $i, $prec, $suiv; $nbpages = 1+(sizeof($index)-1-(sizeof($index)-1)%25)/25; if ($nbpages > 1) { echo "
    "; if ($page > 1) { $prec = $page - 1; echo "Page precedente |"; } for ($i = 1; $i <= $nbpages; $i++) { echo " $i"; } if ($page < $nbpages) { $suiv = $page + 1; echo " | Page suivante"; } echo "
    \n"; } } // afficher le contenu d'un message function AfficheMessage ($num = 1) { global $cat, $script, $rep, $page, $action, $table, $bgcolor, $PHP_SELF; static $infos, $reponses, $i; $infos = GetInfos ($num); if ($action == "modif") {echo "
    \n";} echo "
    \n\n"; echo "\n"; echo "\n"; echo "\n\n"; if ($rep[$num]) { echo "\n"; } echo "
    RETOUR
    "; if ($action == "modif") {echo "";} else {echo $infos['sujet'];} echo "
    DE : "; if (ereg("^([[:alnum:]|[:alpha:]|_|\.|-]+)@([[:alnum:]|[:alpha:]|_]+)\.([[:alnum:]|[:alpha:]|_|-]+)$", $infos['email'])) { if ($action == "modif") {echo " ";} else {echo "".$infos['auteur']."";} } else { if ($action == "admin") {echo "";} else {echo "".$infos['auteur']."";} } echo ",
    \nLE : ".$infos['date']."

    \n"; if ($action == "modif") {echo "
    \n";} else { $infos['message'] = eregi_replace("([^[:alnum:]])http://([^[:space:]]+)", "\\1 http://\\2", $infos['message']); $infos['message'] = eregi_replace("http://([^[:space:]]+)\"", "http://\\1 \"", $infos['message']); $infos['message'] = eregi_replace("\"([^[:space:]]+)@([^[:space:]]+)", "\" \\1@\\2", $infos['message']); $infos['message'] = eregi_replace("([^[:space:]]+)@([^[:space:]]+)\"", "\\1@\\2 \"", $infos['message']); $infos['message'] = eregi_replace("http://([^[:space:]]+\.(jpg|jpeg|gif|tif|tiff|png|bmp))", " \"http://\\1\" ", $infos['message']); $infos['message'] = eregi_replace ("[^\"]http://([^[:space:]|^\n|^\r|^<]+)", " http://\\1 ", $infos['message']); $infos['message'] = eregi_replace("([^[:space:]]+)@([^[:space:]|^<]+)", " \\1@\\2 ", $infos['message']); echo $infos['message']; } echo "\n

    "; if ($action == "modif") { echo "\n"; echo "\n"; echo "\n"; echo "Mot de passe administrateur:
    \n
    \n"; echo ""; } echo "


    Reponses:
    \n"; echo "
      \n"; $reponses = explode (";", $rep[$num]); for ($i=0;$i"; echo "
    \n
    \nArbre des messages | Index des messages\n

    \n
    \n"; echo "
    \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
    Repondre a ce message:
    Sujet :
    Auteur :
    E-Mail :
    Message :

    tags HTML
    \n"; echo "
    \n"; echo "
    \n"; } // Formulaire de nouveau message function FormNouveauMessage () { global $cat, $table, $PHP_SELF; echo "


    \n"; echo "
    \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
    Poster un nouveau message:
    Sujet :
    Auteur :
    E-Mail :
    Message :

    tags HTML
    \n"; echo "
    \n"; echo "
    \n"; copyright (); } // verification des données du formulaire // sujet, [si e-mail, verifier validité]. function VerifForm () { global $cat, $sujet, $auteur, $message, $email, $reference, $affiche, $action, $checked, $PHP_SELF;; static $msg; $message = eregi_replace("[\n|\r]", "", nl2br(stripslashes (htmlentities(htmlentities ($message))))); $auteur = stripslashes (htmlentities ($auteur)); $sujet = stripslashes (htmlentities ($sujet)); $sujet = str_replace('\0', "", $sujet); $auteur = str_replace('\0', "", $auteur); if ($auteur == "") {$auteur = "Anonyme";$msg .= "
  • AUTEUR Votre message sera signé "Anonyme". Retournez en arriere si vous voulez signer votre message.\n";} if ($sujet == "") {$sujet = "Pas de Sujet";$msg .= "
  • SUJET Vous n'avez pas indiqué le sujet de votre message. Votre message aura donc le sujet "Pas de Sujet". Retourner en arriere si vous voulez indiquer le sujet de votre message.\n";} if ($message == "") {$msg .= "
  • MESSAGE Vous n'avez pas mis de message. Retournez en arriere si vous ne voulez pas poster un message vide.\n";} if (!ereg("^([[:alnum:]|[:alpha:]|_|\.|-]+)@([[:alnum:]|[:alpha:]|_]+)\.([[:alnum:]|[:alpha:]|_|-]+)$", $email)) {$email = "NotValidMail";$msg .= "
  • E-MAIL Vous avez entre une adresse e-mail invalide. Elle ne sera donc pas prise en compte et les autres participants ne pourront pas vous ecrire. Retournez en arriere si vous voulez modifier cette adresse.\n";} if ($msg) { echo "

    \n"; echo " ATTENTION LES CHAMPS SUIVANTS ONT MAL ETE REMPLIS \n"; echo "
      $msg
    \n"; } echo "
    \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
    \n"; echo "Cliquez Sur le bouton pour confirmer l'envoi de votre message :
    \n"; echo "\n"; echo "
    \n"; echo "
    \n"; copyright (); } // inserer une ligne au debut d'un fichier function finsert ($nom_fichier = "", $ligne = "\n") { static $fp, $contenu_fichier, $new_line; $contenu_fichier = @file($nom_fichier); $fp = @fopen ($nom_fichier, "w"); if (!$fp) {erreur ("Impossible d'ouvrir le fichier $nom_fichier en ecriture !");} @fwrite ($fp, $ligne); while ($new_line = current ($contenu_fichier)) { @fwrite ($fp, $new_line); next ($contenu_fichier); } @fclose ($fp); } // Ajout d'un nouveau message function AjoutNouveau () { global $cat, $checked, $affiche, $auteur, $email, $date, $sujet, $message; static $i; $message = stripslashes ($message); $auteur = stripslashes ($auteur); $sujet = stripslashes ($sujet); $i = 1; if (!$checked) {VerifForm ();} while (GetLine($i) >= 0) {$i++;} finsert ("liste_$cat.txt", "p$i\n"); finsert ("msg_$cat.txt", $i."\\0".$auteur."\\0".$email."\\0".$date."\\0".$sujet."\\0".$message."\n"); init (); if ($affiche == "arbre") {AfficheArbre ();} else {AfficheIndex ();} } // Repondre a un message function AjoutReponse () { global $cat, $liste, $checked, $auteur, $email, $sujet, $message, $date, $reference; static $i, $k, $flist; $message = stripslashes ($message); $auteur = stripslashes ($auteur); $sujet = stripslashes ($sujet); if (!$checked) {VerifForm ();} $i = 1; while (GetLine ($i) >= 0) {$i++;} $liste[sizeof($liste)] = "r$i"; for ($k=0; $k= 0) { if ($rep[$msg]) { $newtableau = explode (";", $rep[$msg]); for ($k=0;$k
    Modifications enregistrées

    "; $action = "admin"; if ($affiche_defaut == "arbre") AfficheArbre (); else AfficheIndex (); } // le nombre de messages dans la categorie function nbmsg ($cat = "") { static $tab; if (!file_exists("liste_$cat.txt")) return "0"; else return sizeof(@file("liste_$cat.txt")); } // Accueil (menu des categories), affichage de la charte, etc... function Accueil () { global $categories, $table, $affiche, $PHP_SELF; static $txt, $fp, $cat, $cle; $accueil = nl2br(@implode("", @file("accueil.txt"))); if (!$categories and (empty($accueil) or eregi("^$", $accueil))) { if ($affiche == "arbre") {AfficheArbre ();} else {AfficheIndex ();} } if (sizeof($categories) >= 1) { $txt = "
    "; while (list($cle, $cat) = each($categories)) { $txt .= ""; } $txt .= "
    $cat"; $desc = nl2br(@implode("", @file("desc_$cle.txt"))); if (!empty($desc)) $txt .= $desc; else $txt .= "[ Pas de description disponible ]"; $txt .= "
    Actuellement ".nbmsg($cle)." messages"; $txt .= "
    "; } else { $txt = "
    ENTRER
    "; } if (!empty($accueil) and !eregi("^$", $accueil)) { if (!eregi("", $accueil)) $accueil .= "\n"; echo eregi_replace("", $txt, $accueil); } else echo $txt; copyright(); } /************************************************* * * * CORPS DU PROGRAMME * * * *************************************************/ echo "Date actuelle : $date \n
    \nAccueil"; if (isset($cat) and !empty($cat)) echo " > $categories[$cat]"; elseif (isset($cat) and empty($cat)) echo " > Theme general"; echo "\n


    \n"; init(); if (!isset($page)) {$page = 1;} if (!isset($affiche)) $affiche=$affiche_defaut; if ($affiche != "index" and $affiche != "arbre") $affiche="index"; if (!isset($cat)) {Accueil ();} elseif ($action == "Poster") {AjoutNouveau ();} elseif ($action == "Repondre") {AjoutReponse ();} elseif ($action == "ModifMsg") {if ($password == $pass) {ModifMessage ();} else {echo "Mot de passe invalide";copyright();}} elseif ($action == "Effacer") {EffaceMessages ();} elseif ($action == "ViewSource") {AfficheSource ();} elseif ($action == "admin" and $password != $pass) {erreur ("Mot de passe $password INVALIDE !");} elseif ($lire) {AfficheMessage ($lire);} elseif ($affiche == "arbre") {AfficheArbre ();} elseif ($affiche == "index") {AfficheIndex ();} else {erreur ("Le programme a recu des arguments invalides !");} copyright (); ?>