"
","[/quote]"=>""); var $regex = "(([A-ZÔÊÎ]+[a-zéàèâûôùçêî]+){2,})+([A-Z0-9]+)?"; var $module_regex = array("^<\?php\$",//"^class module \{\$", "^\\\$module\[name\] = \"([^\"]+)\";\$", "^\\\$module\[description\] = \"([^\"]+)\";\$","^(\\\$module\[files\]\['([a-z0-9_.<>-]+)'\] = \"([^\"]+)\";){1,}\$","\?>\$"); var $version = "0.5.5 (beta)"; var $url_site = "http://wiki.kubbe.eu.org/"; var $charset = "ISO-8859-15"; var $send_charset_headers = FALSE; var $txt = array( "perms"=>"Vous n'avez pas les permissions pour écrire dans ce répertoire. Les permissions sont actuellement [perms] alors qu'elles devraient être 777. Cependant il se peut que le processus de détection des permissions fonctionne mal. Dans ce cas cliquez sur le bouton retour pour l'outrepasser.", "mkdir"=>"Impossible de créer les répertoires pour faire fonctionner le wiki. Vérifiez les permissions, elle devraient être en 777.", "inconnu"=>"Erreur inconnue. Peut-être est-ce dû à un problèmes de permissions.", "ask_pass"=>"Cet espace est réservé à l'administrateur du site. Si vous êtes cette personne, donnez votre mot de passe dans le champ ci-dessous et cliquez sur Connexion, sinon allez voir ailleurs.", "logout"=>"Vous avez été déconnecté. Cliquez sur le bouton ci-dessous pour vous reconnecter.", "maj" => array("0.3.x" => "La version de WikiKubbe qui est installée est la 0.3.x. Pour passer à la nouvelle version 0.4 de WikiKubbe vous devez effectuer une mise à jour.\n\nCette mise à jour va créer un répertoire http://votresite.com/wiki.docs/ si votre wiki est à l'adresse http://votresite.com/wiki/.\n\nCeci vous permettra de bénéficier des nouvelles fonctionnalités de WikiKubbe comme la gestion intuitive des images ou des visuels.") ); function dekod($c) { if(!empty($c)) return gzinflate(base64_decode($c)); } function filtre($texte) { $texte = htmlspecialchars(stripslashes($texte)); $texte = str_replace("\r","",$texte); $i=1; $pos = strpos($texte,"[code]"); while(is_numeric($pos)) { $code[$i] = substr($texte,$pos+6,strpos($texte,"[/code]") - ($pos+6)); $texte = str_replace("[code]".$code[$i]."[/code]","
",$texte);
$pos = strpos($texte,"[code]");
$i++;
}
$texte = eregi_replace("(^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero):[A-Za-z0-9/](([A-Za-z0-9$_.+!*(),;/?:@&~=_-])|%[A-Fa-f0-9]{2})+)",'\\0',$texte);
$texte = eregi_replace("(^|[ \t\r\n])([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)", '\\0', $texte);
while(ereg("(^|[ \t\r\n])({$this->regex})",$texte,$el))
$texte = str_replace($el[0],$el[1].''.$el[2].'',$texte);
$texte = eregi_replace("(^|[ \t\r\n])\[([^\n]+\.(png|jpe?g|gif))\]",'\\1',$texte);
while(eregi("(^|[ \t\r\n])\[([a-z0-9_ éàîôùçèûêâ\.-]+)\]",$texte,$el))
$texte = str_replace($el[0],$el[1].''.$el[2].'',$texte);
$texte = strtr($texte,$this->tags);
$texte = nl2br($texte);
for($i=1;$i <= count($code); $i++)
$texte = str_replace("",''.trim($code[$i]).'
',$texte);
$texte = str_replace("@","@",$texte);
return $texte;
}
function get_default_template() {
if($this->separateur[1] == "/") $path = "../";
$template = <<
#TITRE
#TRANSITION
#TITRE
ENDOFFILE;
return $template;
}
// Affichage d'une page (template)
// Array( "titre", "texte", "form" => "action du formulaire", "bouton" => "intitulé du bouton",
// "infos" => "Infos bas de page", "page" => "nom de la page");
function affiche_page($rec) { //$titre,$texte,$form,$bouton,$infos,$page) {
if($rec[page] == "PageDaccueil") $rec[titre] = $this->conf[nom_wiki];
$template = $this->get_default_template();
if(file_exists($this->datas."page.html")) { $f = file($this->datas."page.html"); $template = implode("",$f); }
if(empty($rec[transition])) $rec[transition] = "\n";
$template = str_replace("#TITRE",htmlentities(stripslashes($rec[titre])),$template);
$template = str_replace("#INFOS",$rec[infos],$template);
$template = str_replace("#FORM",$rec[form],$template);
$template = str_replace("#BOUTON",htmlentities(stripslashes($rec[bouton])),$template);
$template = str_replace("#NOM_WIKI",$this->conf[nom_wiki],$template);
$template = str_replace("#TRANSITION",$rec[transition],$template);
$template = str_replace("#PAGE",$rec[page],$template);
$template = str_replace("#TEXTE",$rec[texte],$template);
if($this->send_charset_headers) header("Content-Type: text/html; charset={$this->charset}");
return $template;
}
function show_conf() {
if($this->conf[type] == "prive") $prive = "checked=\"checked\"";
else $libre = "checked=\"checked\"";
if(!empty($this->conf[ip])) $ip = "checked=\"checked\"";
if(!empty($this->conf[pass])) $pass = "checked=\"checked\"";
$this->conf[nom_wiki] = htmlentities(stripslashes($this->conf[nom_wiki]));
$t.= <<
Type de wiki:
Authentification du wiki pour l'administration:
END;
$rec = array("titre"=>"Configuration","texte"=>$t,"form"=>$this->separateur[3]."action=configuration","bouton"=>"Enregistrer","page"=>"configuration",
"infos"=>"url_site}\">Aide de WikiKubbe");
echo $this->affiche_page($rec);
}
function do_conf() {
if(empty($_POST[nom])) return $this->show_error("Vous n'avez pas spécifié le nom de votre wiki.","configuration");
elseif($_POST[pass1] == "oui" && empty($_POST[pass2])) return $this->show_error("Vous n'avez pas spécifié de mot de passe alors que vous avez coché la se correspondante.","configuration");
elseif($_POST[ip1] == "oui" && empty($_POST[ip2])) return $this->show_error("Vous n'avez pas spécifié d'adresse IP alors que vous avez coché la se correspondante.","configuration");
$fp = @fopen($this->datas."config.inc.php","w");
if(!$fp) return $this->show_error($this->txt[inconnu]);
$cont = "";
fputs($fp,$cont);
fclose($fp);
return TRUE;
}
function show_error($t,$p="") {
$t = nl2br(htmlentities(stripslashes($t)));
$rec = array("titre"=>"Erreur","texte"=>$t,"form"=>$this->separateur[2].$p,"bouton"=>"Retour","page"=>"rien",
"infos"=>"url_site}\">Aide de WikiKubbe");
echo $this->affiche_page($rec);
return FALSE;
}
function do_inst($force=FALSE) {
$perms = decoct(@fileperms($this->fichier)) % 1000;
# if(!$force && $perms < 755) return $this->show_error(str_replace("[perms]",$perms,$this->txt[perms]),"force_inst");
$r = @mkdir(substr($this->datas,0,-1),0777);
$r = @mkdir(substr($this->public,0,-1),0777);
if(!$r) return $this->show_error($this->txt[mkdir]);
$fp = @fopen($this->datas."version","w");
if(!$fp) return $this->show_error($this->txt[inconnu]);
fputs($fp,$this->version);
fclose($fp);
$fp = @fopen($this->datas.".htaccess","w");
if(!$fp) return $this->show_error($this->txt[inconnu]);
fputs($fp,"Allow from none\nDeny from All\n");
fclose($fp);
return TRUE;
}
function show_maj($ver,$fic="") {
$t = $this->txt[maj][$ver];
$t = nl2br(htmlentities(stripslashes($t)));
$t.= "";
$rec = array("titre"=>"Mise à jour","texte"=>$t,"form"=>$this->separateur[3]."action=maj","bouton"=>"Effectuer la mise à jour","page"=>"maj",
"infos"=>"url_site}\">Aide de WikiKubbe");
if(!empty($fic)) $rec[form] = $fic;
echo $this->affiche_page($rec);
}
function lire($page) {
$f = @file($this->datas.$page.".kub");
if(!$f) return FALSE;
$out = implode("",$f);
$rec[date] = filemtime($this->datas.$page.".kub");
if(file_exists($this->datas.$page.".mod")) {
$rec[modif] = filemtime($this->datas.$page.".mod");
$tmp = @file($this->datas.$page.".mod");
$rec[ip] = $tmp[0];
} else $rec[modif] = "1";
$rec[texte] = $out;
return $rec;
}
function do_save($p,$txt) {
$fp = @fopen($this->datas.$p.".kub","w");
if(!$fp) return FALSE;
fputs($fp,$txt);
fclose($fp);
return TRUE;
}
function show_page($p) {
$rec = $this->lire($p);
if($rec === FALSE) $rec = array(
"texte"=>"Pour écrire dans cette page cliquez sur le bouton Editer.",
"date"=>"Page inexistante","infos"=>"Page inexistante");
else {
$rec[texte] = $this->filtre($rec[texte]);
if($this->auth == "oui") $rec[infos] = "MàJ le ".date("d/m/Y H:i",$rec[date]).' - Administration';
else $rec[infos] = "Dernière mise à jour le ".date("d/m/Y H:i",$rec[date]);
}
$rec[form] = $this->separateur[2]."editer~".urlencode($p);
$rec[bouton] = "Editer";
$rec[page] = urlencode($p);
$rec[titre] = strtr($p,array("_"=>" ","."=>" / "));
echo $this->affiche_page($rec);
}
function edit_page($p) {
if(file_exists($this->datas.$p.".lock")) $lock=TRUE;
if(file_exists($this->datas.$p.".unlock")) $unlock=TRUE;
if(($this->conf[type] == "prive" || $lock) && ($this->auth != "oui") && !$unlock) {
$this->show_error("Cette page est protégée contre l'édition.",$p);
exit;
}
$rec = $this->lire($p);
if((($rec[modif] > 1) && ($rec[modif] > time()-3600) && ($_SERVER[REMOTE_ADDR] != $rec[ip])) && $this->auth != "oui")
return $this->show_error("Cette page est déjà en train d'être modifiée par une autre personne.",$p);
if($rec !== FALSE) {
$fp = @fopen($this->datas.$p.".mod","w");
if($fp) { fputs($fp,$_SERVER[REMOTE_ADDR]); fclose($fp); }
}
$rec[texte] = "
";
if($this->auth == "oui") {
$t = '';
if($this->conf[type] == "libre") {
$t.= ' ';
} else {
$t.= ' ';
}
$t.= ' Administration
';
$rec[texte].= $t;
}
$rec[titre] = "Edition de {$p}";
$rec[form] = $this->separateur[2]."enregistrer~".urlencode($p);
$rec[bouton] = "Enregistrer";
$rec[infos] = 'Retour';
if(file_exists($this->datas."module.wysiwyg"))
$rec[transition] = '