

<?PHP


// VORGABEN_LOGGEN2: Wertet Variable.txt aus

// Spter entweder mit VORGABEN 2a kombinieren oder diese splitten in Auswertung -/- Admin 


// --------------------------


// WERTEAUSGABE
// GIBT UNIVERSELLE WERTE VOR 

// Wertet Variable.txt aus 


// --------------------------

// TEIL A: Auslesen wie AUSLESEN1

// --------------------------


// TEST: 
// echo "\n<BR> \n"; 
// echo "QUELLFORMAT IST: #PARAMETER: \$PARAMETER# !"; 
// echo "\n<BR> \n"; 
// echo "AUSGABEFORMAT: #PARAMETER: wert# ?"; 
// echo "\n<BR> \n"; 

// echo "\n<BR> \n"; 
// echo "TESTBEREICH:"; 
// echo "\n<BR> \n"; 

// --------------------------
// WICHTIG: VORGABE

$VorgabenDatei = "../tech/variable.txt"; 

$JedeZeile = file($VorgabenDatei); 

$VZeilenZahl = count($JedeZeile); 

// WICHTIG:
unset ($LogString1);

// fraglich:
// unset ($EingabeZeichenFehler);

// Header aus Fremddatei auslesen geht nicht, 
// Da die gesamte Datei ausgelesen werden mu -
// Wrde den Header verdoppeln 

// --------------------------

// TABELLE mit 3 Spalten!

// --------------------------



// --------------------------
// --------------------------


// foreach ($JedeZeile as $EinzelZeile) 
// {$EinzelZeile[$vz] = trim($EinzelZeile[$vz]); 

// for($vz=1;$vz<$VZeilenZahl;$vz++)


for($vz=0; $vz < $VZeilenZahl; $vz++)

{

$EinzelZeile[$vz] = trim($JedeZeile[$vz]); 

// TEST:
// echo $EinzelZeile[$vz];

// VORSICHT! SEHR WICHTIGE BEDINGUNG! 

$VarPrf = strpos($EinzelZeile[$vz],"var "); 
$SemiPrf = strrchr($EinzelZeile[$vz],";"); 


// TEST: 
// echo" VarPrf: $VarPrf / "; 
// echo "\n<BR>\n"; 
// echo " SemiPrf: $SemiPrf "; 
// echo "\n<BR>\n"; 

if ($VarPrf == "0" && $SemiPrf == ";" ) 

{ 

// WICHTIG! Parameter-Zhler:
// Ginge aber auch mit VZ

$pz = $pz+1; 


// TEST: 
// echo "$pz;. PARAMETER-ZEILE: &nbsp; &nbsp; &nbsp; $EinzelZeile[$vz]"; 
// echo "\n<BR>\n"; 


// PARAMETER-ZEILE SUBERN:

$Varray = array ("var " => "", "\"" => " ", ";" => ""); 


$EinzelZeile[$vz] = strtr ($EinzelZeile[$vz], $Varray); 

// TEST: 
// echo " - $EinzelZeile[$vz] - "; 
// echo "\n<BR>\n"; 
// echo "\n<BR>\n"; 

// OK

// --------------------------

// parse_str($EinzelZeile[$vz]); 
// echo "1. Parameter = "; 
// echo "\n<BR>\n"; 


// $EinzelZeile[$vz] = "\"$EinzelZeile[$vz]"; 
// echo "($EinzelZeile[$vz])"; 
// echo "\n<BR>\n"; 

// --------------------------

// OK
$ArrayGueltigeZeile = explode("=",$EinzelZeile[$vz]); 

// JA! 

// TEST:
// echo "Zahl der Elemente:  "; 
// echo sizeof($ArrayGueltigeZeile); 

if (count($ArrayGueltigeZeile) == 2 ) 

{ 
// Werte-Zuordnung fr den Admin-Bereich: Einzeln
list($Parameter,$Wert) = $ArrayGueltigeZeile; 

$Parameter = trim($Parameter); 
$Wert = trim($Wert); 

// TEST:
// echo "\n<BR>\n"; 
// echo "\n<BR>\n"; 

// echo "Parameter $pz: $Parameter"; 
// echo "\n<BR> \n"; 
// echo "Wert $pz: $Wert"; 


// echo "\n<P>\n"; 

// Werte-Zuordnung fr die Seiten: Verkoppelt

// $ParameterWert = "\"$Parameter\" => \"$Wert\"";
$ParameterWert = "$$Parameter = \"$Wert\"";

// eval ("\$text = \"$text\";");
eval  ("\$ParameterWert = $ParameterWert;");


// TEST:
// echo "\n<BR> \n"; 

echo "\n<TR>\n";

echo "<TD WIDTH=4% NOWRAP>\n"; 
echo "<U>Wertepaar $pz</U>: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Parameter "; 
echo "\n</TD>\n";

echo "<TD WIDTH=1% NOWRAP ALIGN=CENTER>\n"; 
echo " = "; 
echo "\n</TD>\n";

echo "<TD>\n"; 
echo " $ParameterWert "; 
echo "\n</TD>\n";

echo "</TR>\n";


// echo "\n<BR> \n"; 

// TEST: WERTEPAAR weiter unten 
// WERTESTRING generieren weiter unten 



// --------------------------
// BEL!!
// --------------------------


// --------------------------

// BIS HIER AUSLESEN

// AB HIER LESEN UND LOGGEN 

// --------------------------

// ARRAY herstellen:
// Wertepaar[$pz] = "$Parameter => $ParameterWert"; 
// - Nein! Er mu zum loggen JEDE Zeilen, auch die unwirksamen, schreiben
// - Deshalb mujede Zeile in Folge gelesen werden: 
// - Lesen und schreiben sind nicht zu trennen.
// Deshalb : AUSLESEN einzeln UND als Rahmen fr LOGGEN. 

// --------------------------

// TEIL B: LOGGEN 
// TABELLE mit 3 Spalten!

// --------------------------

// TEST: 
// echo "<P> Jetzt LOGGEN <P>"; 

// --------------------------

echo "\n<TR>\n";

echo "<TD NOWRAP>\n";
echo "Neuer Wert fr: &nbsp; $Parameter &nbsp; "; 
echo "\n</TD>\n";

echo "<TD ALIGN=CENTER>\n";
echo " = "; 
echo "\n</TD>\n";

echo "<TD NOWRAP>\n";

echo "<INPUT TYPE=\"text\" NAME=\"NWERT$pz\" VALUE=\"$Wert\" SIZE=\"30\" MAXLENGTH=\"30\">";

// echo "<INPUT TYPE=\"text\" NAME=\"NWERT\" VALUE=\"$Wert\" SIZE=\"30\" MAXLENGTH=\"30\">";

// echo "$NWERT$pz\n";

echo "\n</TD>\n";
echo "</TR>\n";


// LEERZEILE: 

echo "\n<TR>\n";

echo "\n<TD COLSPAN=3 >\n";
echo "&nbsp; "; 
echo "\n</TD>\n";

echo "</TR>\n";


// MEIN GOTT!!

$NeuerWert = "NWERT$pz";
$NWZ = $$NeuerWert; 
 


// TEST:

// echo "lala: $lala";
// echo "<BR>Alter Wert : $Wert | <BR>"; 
// echo "Nr NeuerWert : $NeuerWert | <BR>"; 
// echo "$NeuerWert: $$NeuerWert | <BR>"; 
// echo "NWZ: $NWZ | <BR>"; 



// TEST: 
// echo " ::: $Wert :zu: $NWZ ::: ";
// TEST:  Nur zur formativen Trennung: 
// echo "\n<BR>\n"; 


echo "\n<TR>\n";
echo "\n<TD COLSPAN=3 >\n"; 


// ----------------------

// EXTRA 1: ZEICHEN-FEHLERMELDUNG

$Prf1 = trim($NWZ);

// STOPPZEICHEN - NUR ZAHLEN UND BUCHSTABEN
// Erlaubte Zeichen:
$StoppzeichenPrf1 = strspn(strtolower("$Prf1"),"0123456789 abcdefghijklmnopqrstuvwxyz-_.,:@");
$LaengePrf1 = strlen($Prf1);

// Keine PHP-kompatible Zeichen zulassen! ; + " etc VERBOTEN!
// Abgleich mit ADMIN.JS: Verbotene Zeichen

// TEST:
// Echo "Prf1: $Prf1 <BR>";
// Echo "<BR>Lnge Prf1: $LaengePrf1 | " ;
// Echo "StoppzeichenPrf1: $StoppzeichenPrf1" ;


if (($BereitsGeladen == "ja") && (($StoppzeichenPrf1 != $LaengePrf1) || ($Prf1 == "")))
{
$Prf1EingabeZeichenFehler = "ja";

$Fehlzeichen = substr("$Prf1", $StoppzeichenPrf1, 1);


ECHO "<BR>\n<FONT Size=2 COLOR=RED> <B>EINGABEFEHLER bei Wertepaar $pz: |$NWZ| Fehlzeichen: -$Fehlzeichen- </B></FONT> <BR> \n" ;
ECHO "<B>Der eingegebene Wert darf nicht null sein und darf bestimmte Zeichen nicht enthalten. Bitte <A HREF=\"#Ende\">Werte neu laden</A></B><P>\n" ;

// Konsequenz: Neuer Wert wird bei Fehleingabe nicht bernommen:
$NWZ = "$Wert";

}


// ----------------------

// 'strspn' sucht in 1 nach dem 1.! Zeichen das in 2 NICHT vorkommt
// 'strcspn' sucht in 1 nach dem 1.! Zeichen das in 2 AUCH vorkommt
// Ausgegeben wird die erste Fundstelle beginnend bei 0
// case sensitive!

// ----------------------

// ----------------------


	
// UNUMGNGLICH:
// Keine Leereingaben erlauben
if ($NWZ == "" )
{$NWZ = "$Wert";}

// TEST: 
// echo "NWZ : $NWZ <BR>\n"; 


// --------------------------

// NEUE LOGZEILE ERSTELLEN 1

// --------------------------


// WICHTIG! Neue Logzeile erstellen, falls Variable:
$NeueLogzeile[$vz] = " var $Parameter = #$NWZ#; "; 

unset ($NWZ);

// TEST:
// echo "\n<P> Neue Logzeile 1: \n"; 
// echo "$NeueLogzeile[$vz]"; 
// echo "\n<P>\n"; 


// WICHTIG! Neue Logzeile 1:
$NeueLogzeile[$vz] = addslashes($NeueLogzeile[$vz]);

// Mit Umbruch addieren zu Logstring1: 
$LogString1 = "$LogString1 
$NeueLogzeile[$vz]";



// TEST:
// echo "$LogString1";

// echo "
// <P> ------- <P>
// ";


// --------------------------
// --------------------------


// END IF COUNT ARRAY
}


else 
{
echo "<B>FEHLER: Zahl der Elemente in einer Variablenzeile ungleich 2 </B>"; 
} 



// --------------------------

// echo "\n<BR>\n"; 
// $EinzelArray = strtr($EinzelZeile[$vz], $Varray); 
// echo $VarAufloesen ; 


// END IF VARPRF
}


// Zusatz: 
// Falls KEINE Parameter-Zeile UND nicht 'unsichtbar', anzeigen:

else 
{

if (!(stristr($EinzelZeile[$vz], "--")) && (trim($EinzelZeile[$vz]) != ""))

{

// Es geht hier nur der Austausch einzelner Zeichen
$EinzelZeileG[$vz] = strtr($EinzelZeile[$vz], "//", "\- ");

// echo "\n<P>\n"; 
// echo "\n<BR>\n"; 

echo "\n<TR>\n";
echo "<TD COLSPAN=3>\n";

echo "&nbsp;<BR>\n"; 
echo "<HR>\n<BR>\n<B>"; 
echo "$EinzelZeileG[$vz]"; 
echo "</B>"; 


// --------------------------

// EXTRA 2: ZEILENFEHLERMELDUNG

if (!(stristr($EinzelZeile[$vz], "//")) && (trim($EinzelZeile[$vz]) != ""))
{
ECHO "<BR>
<BR>
";
ECHO "<FONT COLOR=\"red\"><B>";

ECHO "ZEILENFEHLER! <BR> Text: -$EinzelZeile[$vz]- ";

ECHO "</B></FONT>";
ECHO "<BR>
<BR>
";
}

// --------------------------

echo "\n</TD>\n";
echo "</TR>\n";

// echo "\n<BR>\n"; 
}


// --------------------------

// NEUE LOGZEILE ERSTELLEN 2

// --------------------------

// WICHTIG! Neue Logzeile erstellen, falls KEINE Parameter-Zeile:

if ((stristr($EinzelZeile[$vz], "//")) && (stristr($EinzelZeile[$vz], "//")) && (trim($EinzelZeile[$vz]) != ""))
{$NeueLogzeile[$vz] = $EinzelZeile[$vz];}


// Erste Leerzeile hinzufgen: // VORSICHT!

if (($vz == 0)  && ($NeueLogzeile[$vz] != ""))
{
// WICHTIG! Neue Logzeile 0:

// Bestehende erste Zeile mit Umbruch addieren zu Logstring1:
$LogString1 = "$LogString1 
$NeueLogzeile[$vz]";
}

// Verhindert das weitere addieren von Leerzeilen:

// if (($vz != 0)  && (trim($NeueLogzeile[$vz]."\n".$NeueLogzeile[$vz+1]) != ""))

if (($vz != 0)  && (trim($NeueLogzeile[$vz]."\n".$NeueLogzeile[$vz+1]) != ""))
{
// WICHTIG! Neue Logzeile 2:
$NeueLogzeile[$vz] = addslashes($NeueLogzeile[$vz]);

// Mit Umbruch und Leerzeile (!) addieren zu Logstring1:
$LogString1 = "$LogString1 

$NeueLogzeile[$vz]";
}


// TEST:
// echo "\n<P> Neue Logzeile 2: \n"; 
// echo "$NeueLogzeile[$vz]"; 
// echo "\n<P>\n"; 
// echo "$LogString1";
// echo "\n<P>\n"; 



// Versuch: Leerzeilen nur hier ignorieren:
// if (trim($EinzelZeile[$vz]) != "")
// {
// echo "\n<P> Neue Logzeile: <BR>\n"; 
// echo "$NeueLogzeile[$vz]"; 
// echo "\n<P>\n"; 
// echo "\n<BR>\n"; 
// echo "\n<BR>\n"; 
// }


// END Falls KEINE Parameter-Zeile
}


unset ($VarPrf); 
unset ($SemiPrf); 



// --------------------------
// --------------------------


// Ende Foreach Zeile Auswerten BZW

// END FOR
}



// --------------------------

// --------------------------

// LOG AB HIER LEER!

// --------------------------


// echo
// "
// <P>
// <BR>
// <HR> 
// <BR>
// <H4>Ab Hier Neue Werte:</H4>
// <HR>
// <P>
// "; 
// 
// echo "\n<BR>\n"; 
// echo "\n<BR>\n"; 


// --------------------------
// --------------------------

// for($vz=0; $vz < $VZeilenZahl; $vz++)
// 
// {
// echo "\n<BR>\n"; 
// echo "$NeueLogzeile[$vz]"; 
// }


// --------------------------

// WICHTIG: Ausgabeparameter:
// $VariablenDatei = "../tech/variable.txt";

$VariablenDatei = "$VorgabenDatei";

// bergabe an log_var.php


echo "\n<TR>\n";
echo "<TD COLSPAN=3 >\n";

echo "<INPUT TYPE=\"hidden\" NAME=\"VorgabenDatei\" VALUE=\"$VorgabenDatei\" >";

echo "<INPUT TYPE=\"hidden\" NAME=\"LogString1\" VALUE=\"$LogString1\" >";



// --------------------------

// Sicherungen erstellen:

// Wegen der automatischen Aktualisierung der Seite 
// werden immer 2 doppelte erstellt 

// sicherungen/

$Sicherung1 = "sicherungen/var001n.txt";
$Sicherung2 = "sicherungen/var002.txt";
$Sicherung3 = "sicherungen/var002n.txt";
$Sicherung4 = "sicherungen/var003.txt";


if ($BereitsGeladen == "ja")
{

if(file_exists($Sicherung3))
{$fc4 = copy($Sicherung3, $Sicherung4);}

if(file_exists($Sicherung2))
{$fc3 = copy($Sicherung2, $Sicherung3);}

if(file_exists($Sicherung1))
{$fc2 = copy($Sicherung1, $Sicherung2);}

// Die Variablendatei existiert hoffentlich!
$fc1 = copy($VariablenDatei, $Sicherung1);

// Lscht doppelte - und unterbricht die Kette, leider!
// if(file_exists($Sicherung4))
// {
// $fc0a = unlink($Sicherung1);
// $fc0b = unlink($Sicherung3);
// }

}


// --------------------------



// Nur fr die Zeichen-Fehlermeldung:
echo "<INPUT TYPE=\"hidden\" NAME=\"BereitsGeladen\" VALUE=\"ja\" >";

echo "\n</TD>\n";
echo "</TR>\n";



// AB HIER zu log_var.php: 

$LogString1 = stripslashes($LogString1);
$LogString1 = str_replace("#", "\"", $LogString1);



// TEST:
// echo "\n<P>\n"; 
// echo "!!LOGSTRING: $LogString1";

// --------------------------


// // $LogString1 = array($NeueLogzeile[$vz]);
// // echo $LogString1;
// // echo implode(" ",$NeueLogzeile[$vz]); 
// // Write File

//------------



// Write File:
// W berschreibt den ganzen Inhalt!

$fp = fopen($VariablenDatei,"w");
flock($fp,2);
fputs($fp,$LogString1);
flock($fp,3);
fclose($fp);


// Ende loggen


clearstatcache();



// --------------------------

// END VORGABEN_LOGGEN2

// --------------------------


?>

