/*****************************************************
* *
* Le NEO-FORUM Version 1.1 php *
* 30-10-2000 *
* *
*****************************************************/
/*
Forum de discussion ecrit en PHP 3.
Dispose de nombreuses options de configuration simples, en faisant un outil
simple et utile a tous les webmestres.
Ce forum ne necessite pas de base de données, et est disponible egalement en
Perl 5 dans sa version 1.0 uniquement pour le moment.
Neo-Scripts : http://neoscripts.free.fr
neoscripts@free.fr
*/
/***************************************
Copyright (C) 2000 NeoScripts
Ce programme est un logiciel libre ; vous pouvez le redistribuer mais pas le
modifier (les lignes 2 a 19 - code HTML - peuvent etre modifiées si besoin )
conformément aux dispositions de la Licence Publique Générale GNU, telle que
publiée par la Free Software Foundation ; version 2 de la licence, ou encore
(à votre choix) toute version ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE
GARANTIE; sans même la garantie implicite de COMMERCIALISATION ou D'
ADAPTATION A UN OBJET PARTICULIER. Pour plus de détail, voir la Licence
Publique Générale GNU .
http://www.april.org/gnu/gpl.html
Vous devez avoir reçu un exemplaire 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., 675 Mass Ave, Cambridge, MA 02139, Etats-Unis
***************************************/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
require "data.php3"; $PHP_SELF = eregi_replace ("^\/(.+)\.(online|free)\.fr", "", $PHP_SELF);
?>
echo $titre; ?>
/*************************************************
* *
* ENTETE DU PROGRAMME *
* *
*************************************************/
// Variables globales utiles
$liste = array();
$rep = array();
$index = array();
$date = date ("d/m/Y, H:i:s");
$MessagesAffiches = 0;
/*************************************************
* *
* DECLARATION DES DIFFERENTES FONCTIONS *
* *
*************************************************/
// Copyright : pied de page + fin de programme
function copyright () {
global $copyright, $mailadmin;
echo "
\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";}
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";}
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 "
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";
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 .= "