All pastes #126673 Raw Edit

my create_langpack

public php v1 · immutable
·published 2006-08-11 18:00 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 checkif ($_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