rendered paste body<?php
// create langpack_french based on the wiki entries
$version='0.04.22b';
//File counter eingefügt, Zeilen 192-207
// def stuff
if(!defined('PATH')) define('PATH',realpath(dirname(__FILE__)));
$vars['path_wiki']='/';
$vars['path_wiki_data']=PATH.'/data/pages/langpack';
$vars['path_temp']=PATH.'/temp';
/* ------------------ no edits needed below --------------------------- */
ini_set('short_open_tag',"1");
(strtolower(substr(PHP_OS, 0, 3) == 'win')) ? $PS=';' : $PS=':';
ini_set('include_path',ini_get('include_path').$PS.PATH);
//require_once("./create_langpack/html.php");
require_once("./create_langpack/ConvertCharset.class.php");
if(@file_exists($vars['path_wiki']."inc/utf8.php")){
//get some dokuwiki includes
require_once($vars['path_wiki']."/conf/dokuwiki.php");
require_once($vars['path_wiki']."/inc/common.php");
require_once($vars['path_wiki']."/inc/search.php");
require_once($vars['path_wiki']."/inc/utf8.php");
}
//check if encoding was given
$lp_select = $_POST['output'];
//
// parameter check
if ($_GET['check']==1) {
xhtml_head();
$flg=check_structure();
xhtml_foot();
}
elseif ($_GET['save_stable']==1) {
xhtml_head();
$flg=0;
$flg=check_structure();
if ($flg>0) {echo'<b>Fehler in der Sprachdatei. keine Speicherung</b>';}
else {
echo "<br />Speicherung läuft...";
action("1");
echo "<br />... fertig";
}
xhtml_foot();
}
elseif(!$lp_select){
xhtml_head();
xhtml_hello();
xhtml_foot();
}
else{
// It will be called langpack_french.txt
header("Content-Type: x-type/subtype");
// header('Content-Disposition: attachment; filename="langpack_french.txt"');
header("Content-Disposition: attachment; filename=\"langpack_french.txt\"");
action("0");
//xhtml_finished();
}
exit();
function action($flg_save) { // Zusammenstellen des langpacks
global $version;
global $vars;
$files_langpack=read_dir();
$files_langpack_sort=sort($files_langpack);
$i=0;
unset($langpack_french);
unset($langpack);
for ($i=0;$i < sizeof($files_langpack);$i++){
if($files_langpack[$i] == "core.txt") {
if (file_exists($vars['path_wiki_data'].'/'.$files_langpack[$i].'.asc')) { // ISO File
$core=read_langpack($files_langpack[$i].'.asc'); // langpack core -> $core
$core=remove_non_lp($core); // alles nicht <file>...</file> raus
}
else { //UTF-8
$core=read_langpack($files_langpack[$i]); // langpack core -> $core
$core=remove_non_lp($core); // alles nicht <file>...</file> raus
$core=convert_from_utf($core);
}
}
elseif ($files_langpack[$i] == "common.txt") {
$files=ereg_replace("(\.txt)$","",$files_langpack[$i]);
$flg_ok=$_POST[$files];
if(isset($flg_ok) or isset($_POST['alles']) or isset($flg_save)) {
$file_time=filectime($vars['path_wiki_data'].'/'.$files_langpack[$i]);
if (file_exists($vars['path_wiki_data'].'/'.$files_langpack[$i].'.asc')) { // ISO File
$common=read_langpack($files_langpack[$i].'.asc'); // langpack core -> $core
$common=remove_non_lp($common); // alles nicht <file>...</file> raus
}
else {
$common=read_langpack($files_langpack[$i]); // langpack core -> $core
$common=remove_non_lp($common); // alles nicht <file>...</file> raus
$common=convert_from_utf($common);
}
$common=array_merge("; start of langpack ASC: ".$files.", last update: ".gmdate("d.M.Y H:i:s", $file_time)." (".$file_time.")\r\n",$common);
$common=array_merge($common,"; ##############################################\r\n; end of langpack: ".$files."\r\n; ##############################################\r\n\r\n");
}
}
elseif (ereg("(\.txt)$",$files_langpack[$i])){
$files=ereg_replace("(\.txt)$","",$files_langpack[$i]);
$flg_ok=$_POST[$files];
if(isset($flg_ok) or isset($_POST['alles']) or isset($flg_save)) {
$file_time=filectime($vars['path_wiki_data'].'/'.$files_langpack[$i]);
if (file_exists($vars['path_wiki_data'].'/'.$files_langpack[$i].'.asc')) { // ISO File
$langpack=read_langpack($files_langpack[$i].'.asc');
$langpack=remove_non_lp($langpack);
if ($langpack != "") {
$langpack_french=array_merge($langpack_french,"; start of langpack ASC: ".$files.", last update: ".gmdate("d.M.Y H:i:s", $file_time)." (".$file_time.")\r\n");
$langpack_french=array_merge($langpack_french,$langpack); // langpack nach restl. lp hängen
$langpack_french=array_merge($langpack_french,"; ##############################################\r\n; end of langpack: ".$files."\r\n; ##############################################\r\n\r\n");
}
}
else { // UTF-8 file
$langpack=read_langpack($files_langpack[$i]);
$langpack=remove_non_lp($langpack);
if ($langpack != "") {
$langpack=convert_from_utf($langpack);
$langpack_french=array_merge($langpack_french,"; start of langpack: ".$files.", last update: ".gmdate("d.M.Y H:i:s", $file_time)." (".$file_time.")\r\n");
$langpack_french=array_merge($langpack_french,$langpack); // langpack nach restl. lp hängen
$langpack_french=array_merge($langpack_french,"; ##############################################\r\n; end of langpack: ".$files."\r\n; ##############################################\r\n\r\n");
}
}
}
}
}
$core=array_merge($core,$common); // common an core hängen
$langpack_french=array_merge($core,$langpack_french); // common an core hängen
// Header einfügen
$lp_header=array("Miranda Language Pack Version 1\r\n","Language: French (fr-FR)\r\n","Locale: 040c\r\n","Last-Modified-Using: Miranda IM 0.5\r\n","Authors: Dagobert_78, a7 et la comunautée miranda-fr.net\r\n","Author-email: dago.bert@wanadoo.fr & postmaster@miranda-fr.net\r\n","X-Langpack-creation-date: ".date("d M Y H:i:s")."\r\n","X-Langpack-creator: Langpack creator v".$version."\r\n");
$lp_flid=array("\r\n","; FLID: French Language Pack ".date("0.y.m.d")."\r\n");
$lp_hinweis=array("\r\n","; du texte ici :o \r\n","\r\n\r\n; ###########################\r\n; end of Header\r\n; ###########################\r\n\r\n");
$included_files="";
for ($i=0;$i < sizeof($files_langpack);$i++){
$files=ereg_replace("(\.txt)$","",$files_langpack[$i]);
$flg_ok=$_POST[$files];
if(isset($flg_ok) or isset($_POST['alles']) or isset($_GET['save_stable'])) {
$included_files=$included_files.' '.$files;
}
}
$lp_plugins=array("; Plugins-included:".$included_files."\r\n");
$langpack_french=array_merge($lp_hinweis,$langpack_french); // Hinweis vor lp hängen
$langpack_french=array_merge($lp_flid,$langpack_french); // flid vor lp hängen
$langpack_french=array_merge($lp_plugins,$langpack_french); // Pluginnamen vor lp hängen
$langpack_french=array_merge($lp_header,$langpack_french); // Header vor lp hängen
//
// Ausgabe der Datei
if ($flg_save) {
$datei=@fopen("/var/www/web29/files/langpack_french.txt", "w");
@flock($datei,2);
$zp = gzopen("/var/www/web29/files/langpack_french.txt.gz", "w9");
}
for ($i=0;$i < sizeof($langpack_french);$i++){
$langpack_french[$i]=preg_replace("(\r\r\n)", "\r\n", preg_replace("(\n)", "\r\n", $langpack_french[$i])); // DFYX :-)
if ($flg_save) {
@fputs($datei, $langpack_french[$i]);
// Schreibe den String in die Datei
gzwrite($zp, $langpack_french[$i]);
}
else {
echo $langpack_french[$i]; //'<br />';
}
}
if ($flg_save) {
@fputs($datei, "\r\n\r\n".'; total lines: '.sizeof($langpack_french).' end of file langpack_french.txt'."\r\n");
gzwrite($zp, "\r\n\r\n".'; total lines: '.sizeof($langpack_french).' end of file langpack_french.txt'."\r\n");
}
else {
echo "\r\n\r\n".'; total lines: '.sizeof($langpack_french).' end of file langpack_french.txt'."\r\n";
}
echo "; Plugins-included:".$included_files."\r\n";
if ($flg_save) {
@fputs($datei, "; Plugins-included:".$included_files."\r\n");
gzwrite($zp, "; Plugins-included:".$included_files."\r\n");
// Schließe die Datei
gzclose($zp);
@flock($datei,3);
@fclose($datei);
}
$countfile="counterfile".date("dm").".txt";
if (!file_exists($countfile)) // Look if file exists
{
$fp = fopen($countfile,"w"); //if it dosen't create it
fputs ($fp,"0" ); // lets add a 0 in it
}
else
{
$fp = fopen($countfile,"r+");
};
$numcountaction= fread($fp,filesize($countfile));
fclose($fp);
$numcountaction++;
$fp = fopen($countfile,"w");
fputs ($fp,$numcountaction);
fclose($fp);
} // end action()
function read_dir (){
global $vars;
$verz=opendir($vars['path_wiki_data']);
while ($file = readdir ($verz)) {
if(ereg("(\.txt)$",$file)) {
$files[$i]=$file;
$i++;
}
}
closedir($verz);
return ($files);
}
function read_langpack ($file){
global $vars;
$fp = fopen($vars['path_wiki_data'].'/'.$file,"r"); // abs Pfad
$text = file($vars['path_wiki_data'].'/'.$file);
fclose($fp);
return ($text);
} // end read_langpack
function remove_non_lp ($text) {
$flg_lp=0;$j=0;
for($i=0;$i < sizeof($text);$i++) {
if ($flg_lp==1) {
if (ereg("\<\/file\>", $text[$i])) { $flg_lp=0;}
else{$txt[$j]=$text[$i];$j++;}
}
if (ereg("\<file\>", $text[$i])) { $flg_lp=1;}
}
return($txt);
} // remove_non_lp
function convert_from_utf($text){
$conv = new ConvertCharset; // objekt der Klasse erstellen
$txt = $conv->Convert($text,'utf-8','windows-1252',false); // Zugriff auf Funktion in Objekt
return($txt);
} // convert_from_utf
function xhtml_head(){
global $version;
header('Content-Type: text/html; charset=windows-1252');
print '<?xml version="1.0"?>';
print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"';
print ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
<head>
<title>Langpack Creator <?=$version?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<meta name="generator" content="Langpack Creator <?=$version;?>" />
<link rel="stylesheet" media="screen" type="text/css" href="create_langpack/style.css" />
</head>
<body>
<div class="page">
<?
}
function xhtml_foot(){
?>
</div>
</body>
</html>
<?
}
function xhtml_hello(){
global $conf;
?>
<!-- <p>Dieses Skript soll dazu dienen die Fleißarbeit der Eingabe in das Sprachdatei- <a href="http://wiki.splitbrain.org/">Wiki</a> zu belohnen indem es das Wiki ausliest und eine Sprachdatei zum runterladen erstellt. Das Skript basiert auf dem <a href="http://wiki.splitbrain.org/wiki:utf8update">wiki:utf8update</a> und nutzt teilweise dessen Routinen.
</p>
<p style="font-weight:bold">Dies ist eine der ersten Versionen und nicht voll lauffähig!</p> -->
<?
xhtml_langpack_selection($files_langpack);
}
function xhtml_finished(){
?>
<p>Okay, hier die gespeicherten Sprachdateien</p>
<?
}
function xhtml_langpack_selection(){
$files=read_dir();
$files_langpack_sort=sort($files);
?>
<p style="font-weight:bold">Veuillez sélectionner les langpacks | <a href='create_langpack.php?check=1'><font size="-2">Contrôler tout les langpacks</font></a></p>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="tablesForm">
<input type="radio" name="core" value="core" checked="checked" /><a href="doku.php?id=langpack:core" target="_blank">Miranda IM 0.5 (Core) <img src="img/core.gif"/></a><br />
<!-- <input type="radio" name="core_0.3" value="core_0.3" /><a href="doku.php?id=langpack:core_0.3" target="_blank">Miranda IM v0.3.x (Kern) - z.Zt. nicht unterstützt</a><br /> -->
<!-- <br />
<a href="create_langpack.php?alles=1">Tout sélectionner</a>
/
<a href="create_langpack.php?alles=0">Tout désélectionner</a>
<br />
<input type="submit" value="Sprachdatei erstellen" /><br /> --><br />
<p><img src="img/addons.gif"/> Plugins traduits :</p>
<?
for ($i=0;$i < sizeof($files);$i++){
if (ereg("(\.txt)$",$files[$i]) and !ereg("^(core)",$files[$i])and !ereg("^(_)",$files[$i])){
$files[$i]=ereg_replace("(\.txt)$","",$files[$i]);
echo '<input type="checkbox" name="'.$files[$i].'" value="'.$files[$i].'"';
if($_GET['alles']==1) {echo ' checked="checked"';}
echo'/><a href="doku.php?id=langpack:'.$files[$i].'" target="_blank">'.$files[$i].'</a><br />'."\n";
} // end if
}
?>
<br />
<a href="create_langpack.php?alles=1">Tout sélectionner</a>
/
<a href="create_langpack.php?alles=0">Tout désélectionner</a>
<br />
<input type="hidden" name="output" value="astxt" />
<input type="submit" value="Créer le langpack" />
</form>
<?
}
function check_structure () {
$files_langpack=read_dir();
$files_langpack_sort=sort($files_langpack);
$i=0;
unset($langpack_french);
for ($i=0;$i < sizeof($files_langpack);$i++){
$file=ereg_replace("(\.txt)$","",$files_langpack[$i]);
if (ereg("(\.txt)$",$files_langpack[$i])){
// echo '<b>'.$files_langpack[$i].'</b>';
if(ereg("^(core)",$files_langpack[$i])) {
$core=read_langpack($files_langpack[$i]); // langpack core -> $core
$core=remove_non_lp($core); // alles nicht <file>...</file> raus
$flg_error=check_file($core, 0,$files_langpack[$i]);
if ($flg_error) {echo '<a href="doku.php?id=langpack:'.$file.'" target="_blank">'.$file.'</a> - <font color="red">Erreur(s) trouvée(s)</font><br />';}
else{echo'core - <font color="green">OK</font><br />';}
unset($core);
}
else {
$files=ereg_replace("(\.txt)$","",$files_langpack[$i]);
$flg_ok=1;
//var_dump($_POST);
if(isset($flg_ok) or isset($_POST['alles'])) {
//echo $i.": ".$files."<br />";
unset($langpack);
$langpack=read_langpack($files_langpack[$i]);
$langpack=remove_non_lp($langpack);
$flg_error=check_file($langpack, 0,$files_langpack[$i]);
echo $file;
//echo $files_langpack[$i];
if ($flg_error>0) {echo ' - <font color="red">Erreur(s) trouvée(s)</font><br />';}
else{echo ' - <font color="green">OK</font><br />';}
}
} // else
}// end if
} // end for
if ($flg_error) {echo 'Es wurden '.$flg_error.' Erreur(s) trouvée(s). Le langpack n\'est probablement pas valide ';}
else{ echo'<br />Le contrôle s\'est passé sans erreurs. <a href="create_langpack.php">Retour au choix des Plugins </a>';}
if (isset($flg_error)){return($flg_error);}
} // end func
function check_file($lines, $start, $file){
$flg_error=0;
$flg_en=1;
for ($i=$start;$i < sizeof($lines);$i++){
$lines[$i]=chop($lines[$i]);
$zeile=$lines[$i];
$zeile=ereg_replace("\W","",$zeile);
$zeile=ereg_replace(" ","",$zeile);
$zeile=ereg_replace("(;*)$",";",$zeile);
$zeile=ereg_replace("(]*)$","]",$zeile);
if ($lines[$i]!="" and $zeile!="" and strlen($zeile)>1 and (!eregi("^(Plugins-included:)",$lines[$i])) and (!eregi("^(X-)",$lines[$i]))) {
if (ereg("^(;)", $zeile)) {
}
else {
if ($flg_en==1) {
if (!(ereg("^(\[)",$lines[$i]) and ereg("(\])$",$zeile))) {
$flg_error++;
if ($flg_error==1){
$file=ereg_replace("(\.txt)$","",$file);
echo '<b><a href="doku.php?id=langpack:'.$file.'" target="_blank">'.$file.'</a></b><ul>';
}
echo "<li> Fehler in Zeile $i: <b>englische</b> La ligne attend ->".$lines[$i].'<-</li>';
}
else{$flg_en=0;}
}
else {
if ((ereg("^(\[)",$lines[$i]) and ereg("(\])$",$zeile))) {
$flg_error++;
if ($flg_error==1){
$file=ereg_replace("(\.txt)$","",$file);
echo '<b><a href="doku.php?id=langpack:'.$file.'" target="_blank">'.$file.'</a></b><ul>';
}
echo "<li> Erreur dans la ligne $i: <b>french</b> la ligne attend ->".$lines[$i].'<-</li>';
}
else{$flg_en=1;}
} // else
}
}// end if
} // end for
if ($flg_error>0){echo '</ul>';}
return ($flg_error);
} // end func