| Current Path : /home/photograt/gerard-clavet-photos.com/AutreJML4/SauveDec22/STIP/supportwiki/ |
| Current File : /home/photograt/gerard-clavet-photos.com/AutreJML4/SauveDec22/STIP/supportwiki/stipindex.php3 |
<?php
/* ##################### A propos de WIKIPLAM version MySql ################ */
/* WikiPlam ! Informations sur le concept de Wiki : http://c2.com/cgi/wiki */
/* Copyright � 2002 Pierre Lamelin (lamelin.com - p220.free.fr/wiki) */
/* Copyleft attitude : ce script est libre, vous pouvez le redistribuer */
/* et/ou le modifier selon les termes de la Licence Art Libre (artlibre.org) */
/* Merci a BohwaZ (http://bohwaz.lautre.net) pour ses idees et sa sympathie */
/* ########################## Configuration de WIKIPLAM #################### */
$host= "cm.ac-amiens.fr"; // Le serveur MySql ("localhost" ou "sql.free.fr"...)
$user= "REstipgc02"; // Le login de connexion a MySql
$pass= "cbdmwjbn3k"; // Le mot de passe de connexion a MySql
$database= "stip"; // Le nom de la base (tres souvent identique au login)
$tablewiki= "wikistip"; // Nom que vous voulez donner a la table de la base
$pagewiki= "stipindex.php3"; // Nom de ce fichier (n'oubliez pas de le changer le cas echeant !)
$lienlogo= "logo_wikiplam.png"; // Chemin (absolu ou relatif) vers le logo du haut de la page
$pagesoff = array( "stipindex.php3"); // Liste des pages dont vous voulez empecher les modifs (obligatoire pour WikiListe). Les s�parer par des virgules.
/* ######################################################################### */
/* Les variables $skin["haut"] et $skin["bas"] sont egalement modifiables si */
/* elles conservent les 4 variables ecrites en majuscule (voir ci-dessous). */
/* --------------------- Debut du skin (haut) --------------------- */
/* Note : "haut" contient 3 variables: #SELF, #TITRE et #PHRASE */
$skin[ "haut"]= "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head><title>Wiki: #TITRE</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<style type=\"text/css\"><!--
table {border: thin solid black;}
td {padding: 12pt;}
body,td,a {font-family: arial,sans-serif;}
a {color: #000088; text-decoration: underline;}
a:hover {color: red; text-decoration: none;}
//-->
</style></head>
<body bgcolor=\"#FFFFFF\">
<a href=\"#SELF\"><img src=\"$lienlogo\" alt=\"logo\" border=0></a>
<center>
<table width=\"95%\" bgcolor=\"#EEEEEE\">
<tr>
<td><center><h1>#PHRASE #TITRE</h1></center>
<p>";
/* --------------------- Fin du skin (haut) --------------------- */
/* ---------------------- D�but du skin (bas) ---------------------- */
/* Note : "bas" contient 2 variables: #FORM (INDISPENSABLE) et #SELF */
$skin[ "bas"]= "
#FORM
<font size=\"-1\">Retour � <a href=\"#SELF?FrontPage\"><font color=\"red\">FrontPage</font></a> |
<a href=\"#SELF?WikiListe\">WikiListe</a> des pages</font>
</td>
</tr>
</table>
</center>
</body>
</html>";
/* ----------------------- Fin du skin (bas) ----------------------- */
/* ---------------------- D�but des fonctions ---------------------- */
function crea_table() {
global $database,$tablewiki;
$ins= "CREATE TABLE $tablewiki (name VARCHAR (255) not null , text TEXT , date VARCHAR (12) , ip VARCHAR (255) , PRIMARY KEY (name))";
$result = mysql_query($ins);
Return $result;
}
function madate($date) {
$date=substr($date,4,2). "/".substr($date,2,2). "/".substr($date,0,2). " ".substr($date,6,2). ":".substr($date,8,2). ":".substr($date,10,2);
return $date;
}
function dans_tablo($elem,$array_t) {
for ($i=0; $i < count($array_t); $i++) {
if ($array_t[$i] == $elem) { return true; }
}
return false;
}
function getlongip() {
if (getenv(HTTP_X_FORWARDED_FOR))
{ $ipe=getenv(HTTP_X_FORWARDED_FOR); }
else { $ipe=getenv(REMOTE_ADDR); }
return gethostbyaddr($ipe);
}
function mysql_table_exists($table,$db){
$tables=mysql_list_tables($db);
while (list($temp)=mysql_fetch_array($tables)) {
if ($temp == $table) { return 1; }
}
return 0;
}
function affichewikiliste() {
global $tablewiki;
$list = "'''Derni�res modifications :'''\n\n";
$ins = "SELECT name, date, ip FROM $tablewiki ORDER BY date DESC";
$TableRep=mysql_query($ins);
if ($TableRep>0) {
while (list($name, $date, $ip) = mysql_fetch_row ($TableRep)) {
$list .= $name. " ..... ".madate($date). " ..... ".$ip. "\n";
}
$count = mysql_num_rows($TableRep);
$list .= "\nTotal Wiki : '''".$count. " pages'''";
} else {
$list = "Erreur de lecture MySql";
}
echo format_html($list);
}
function affichewiki($name) {
global $editmode,$pagewiki,$tablewiki;
$ins = "SELECT * FROM $tablewiki where (name='$name')";
$TableRep=mysql_query($ins);
if ($TableRep>0) {
$text = @mysql_result($TableRep, 0, "text"); // Le @ �vite le display d'erreur si la page est vide
$text = stripslashes($text);
} else {
$text = "Erreur de lecture MySql";
}
if ($text == "") {
$text = "D�crivez $name en cliquant sur le bouton.";
}
if ($editmode != "edit") { // Affiche $text normalement pour les modes normal et done
if ($name == "WikiListe") { // Attention cas particulier WikiListe
affichewikiliste();
} else {
echo format_html($text);
}
} else { // Affiche $text dans sa boite d'edition pour le mode edit
echo "
<form method=\"post\" action=\"".$pagewiki. "\">
<input type=\"hidden\" name=\"editmode\" value=\"done\">
<input type=\"hidden\" name=\"name\" value=\"".$name. "\">
<textarea rows=18 cols=70 name=\"text\" style=\"width:100%\"
wrap=virtual>".$text. "</textarea><br>
<input type=\"submit\" value=\"Enregistrer\"><input name=\"r\" type=\"reset\" value=\"Reset\">
</form>
<a href=\"".$pagewiki. "?ModeDemploi\">ModeDemploi</a> : astuces pour l'�dition";
}
}
function postwiki($name,$text) {
global $pagewiki,$tablewiki;
$date = date( "ymdHis"); // date pour l'enregistrement dans MySql
$ddate = date( "d M Y - H:i"); // date pour le tag <d> qu'on affiche
$text = str_replace( "<d>", $ddate, $text);
$ip = getlongip();
$text = htmlspecialchars(addslashes($text));
$ins = "REPLACE INTO $tablewiki (name,text,date,ip) VALUES ('$name','$text','$date','$ip')";
$res = mysql_query($ins);
}
function affichehaut() { // remplace les variables en MAJUSCULE
global $name,$skin,$editmode,$pagewiki;
$skin[ "haut"] = ereg_replace( "#TITRE", $name, $skin[ "haut"]);
$skin[ "haut"] = ereg_replace( "#SELF", $pagewiki, $skin[ "haut"]);
if ($editmode == "") {
echo ereg_replace( "#PHRASE", "Wiki:", $skin[ "haut"]);
} elseif ($editmode == "edit") {
echo ereg_replace( "#PHRASE", "Edition de", $skin[ "haut"]);
} else {
echo ereg_replace( "#PHRASE", "Merci d'avoir �dit�", $skin[ "haut"]);
}
}
function affichebas() { // remplace les variables en MAJUSCULE
global $name,$skin,$editmode,$pagewiki,$pagesoff;
if ($editmode == "edit") { // Mode edition : rien a afficher en bas
$rempl= "
<p><hr noshade size=1>";
} else {
if ((dans_tablo($name,$pagesoff)) == true) { // Autres modes : cas ou l'on ne veut pas que les pages soient modifiables
$rempl= "<p><hr noshade size=1>Page non modifiable<p>\n";
} else { // Autres modes : mode par defaut.
$rempl= "
<p><hr noshade size=1>
<form method=\"post\" action=\"#SELF\">
<input type=\"submit\" value=\"Editer la Page\">
<input type=\"hidden\" name=\"name\" value=\"".$name. "\">
<input type=\"hidden\" name=\"editmode\" value=\"edit\">
</form>"; }
}
$skin[ "bas"] = ereg_replace( "#FORM",$rempl,$skin[ "bas"]);
echo ereg_replace( "#SELF",$pagewiki,$skin[ "bas"]);
}
function format_html($text) { // Affiche $text selon les caract�ristiques Wiki
global $pagewiki;
$text = ereg_replace( "'''(('?[^\n'])*)'''", "<b>\\1</b>", $text);
$text = ereg_replace( "''(('?[^\n'])*)''", "<i>\\1</i>", $text);
$text = ereg_replace( "([[:space:];<>'\(]|^)(([A-Z][a-z���������]+){2,})([[:space:].,!?&<>\)]|$)",
"\\1<a href=\"".$pagewiki. "?\\2\">\\2</a>\\4", $text);
$text = eregi_replace( "([[:space:];<>\(]|^)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/=])([[:space:].,&<>\)]|$)",
"\\1<a href=\"\\2://\\3\\4\" target=\"_blank\">\\2://\\3\\4</a>\\5", $text);
$text = eregi_replace( "([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)",
"<a href=\"mailto:\\1\">\\1</a>", $text);
$text = ereg_replace( "\[http://([^[:space:]]*)([[:alnum:]#?/&=])\]",
"<img src=\"http://\\1\\2\" alt=\"http://\\1\\2\">", $text);
$text = ereg_replace( "%%(([A-Z][a-z���������]+){2,})%%", "\\1", $text);
$text = ereg_replace( "\n[ ]+([[:print:]���������]+)", "\n<tt> \\1</tt>", $text);
$text = ereg_replace( "\n\*[ ]+([[:print:]���������]+)", "<ul><li>\\1</li></ul>", $text);
$text = ereg_replace( "\n---(-)*", "<hr noshade size=1>", $text);
$text = ereg_replace( "\n", "<br>\n", $text);
return $text;
}
/* --------------------- Fin des fonctions --------------------- */
/* ----------------------- D�but du code ----------------------- */
if ($name == "") $name = $argv[0]; // On choppe le nom de la page dans l'URL : le mot apres le "?"
if ($name == "") $name = "FrontPage";
$conx = mysql_connect($host,$user,$pass); // Connexion a la base SQL
if ($conx) {
mysql_select_db($database,$conx);
if (mysql_table_exists( "$tablewiki",$database) > 0) { // V�rification de l'existence de la table $tablewiki
if ($editmode != "done") {
affichehaut();
affichewiki($name);
affichebas();
} else {
postwiki($name,$text);
affichehaut();
affichewiki($name);
affichebas();
}
} else { // Cr�ation de la table $tablewiki si elle n'existe pas
$rep=crea_table();
if ($rep>0) {
echo "<BR>Table MySql $tablewiki cr��e, rechargez � pr�sent la page pour faire fonctionner votre Wiki.";
} else {
echo "Erreur : cr�ation de la table MySql $tablewiki impossible.";
}
}
mysql_close($conx);
} else {
echo "Connexion impossible. V�rifiez les serveur/login/pass de connexion � MySql dans le script.";
}
/* ------------------------ Fin du code ------------------------ */
?>