All pastes #126660 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-08-11 17:54 UTC
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>
                    &nbsp;/&nbsp;
        <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>
                    &nbsp;/&nbsp;
        <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 -&gt;".$lines[$i].'&lt;-</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 -&gt;".$lines[$i].'&lt;-</li>';
					}
					else{$flg_en=1;}
				} // else
			}
		}// end if
	} // end for
 
	if ($flg_error>0){echo '</ul>';}
	return ($flg_error);
} // end func