

<?PHP


// WORTE_LOGGEN2: Wertet Wortlisten aus


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

// ffnet diverse Wortlisten zum bearbeiten
// 

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


// !! NOCH ZU WAEND:PHP!!



// Wortlisten aufzhlen: 

$Wortlisten = array
(
"Worte, die auch als reine Zeichenkette nicht erlaubt sind" => "stopwords.txt", 

"Worte, die nur als ganze Worte nicht erlaubt sind" => "singlestopwords.txt", 

"Worte, die als ganze Worte dennoch erlaubt sind" => "goodwords.txt"

);



// ..................................................



// Anzahl der Wortlisten: 

$AnzahlWortlisten = count($Wortlisten);

// Schlssel der Wortlisten: 

$K_array = array_keys($Wortlisten);

$SchluesselPaar = each($Wortlisten);

// Werte der Wortlisten: 

$V_array = array_values($Wortlisten);


// $SchluesselPaar = each($Wortlisten);



// FOR 1

// foreach ($Wortlisten as $WortDatei) 

for($DatNr=0; $DatNr < $AnzahlWortlisten; $DatNr++)

{

$Snr = $DatNr+1;

echo "\n<TR>\n";

echo "<TD NOWRAP>\n";

echo "<BR>\n";

ECHO "$Snr. $K_array[$DatNr]: <BR>
";
ECHO "Datei: $V_array[$DatNr] <BR>
";


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

$WortDatei = $V_array[$DatNr];

// TEST: 
// ECHO "Datei: $WortDatei";


$JedeZeile = file($WortDatei); 
$VZeilenZahl = count($JedeZeile); 


// WICHTIG:
unset ($Wert);

$Wert = join("", $JedeZeile); 


// Ende lesen

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

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

// $fp1a = fopen($WortDatei,"r");
// flock($fp1a,1);

// $Wert = echo fpassthru($fp1a);
// $Wert = readfile($WortDatei);

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


// TEST:
// echo "<BR> \n"; 
// echo "TEST: "; 
// echo "<BR> \n"; 
// echo "Datei: $WortDatei \n"; 
// // echo " / Datei-Nummer: $DateiNr \n"; 
// echo "<BR> \n"; 
// echo "Wert: $Wert\n"; 
// echo "<BR> \n"; 


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

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

echo "<TR>\n";

echo "<TD NOWRAP>\n";


echo "<textarea NAME=\"WORT1A$DatNr\" cols=\"60\" rows=\"10\" >$Wert
</textarea>";



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


// LEERZEILE: 

echo "<TR>\n";


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

// Umwandeln in Array, sortieren und subern 

// Schwierig: fortl.Nr! Wg. POST ist nur der Wert an sich mglich
// MUSS aber sein, sonst 3x gleicher Input!


$STUF = "WORT1A$DatNr"; // OK 


// TEST: 
// Echo "<P> TEXTAREA NAME: 
// - $STUF -
// <BR>";
// Echo "<P> TEXTAREA VALUE: 
// -x- ".$$STUF." -y-
// <P>
// ";

// echo $STUF;

// Echo "<P> <BR>
// ";


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

// END- Zeilenumbruch SEHR WICHTIG!
// Sonst kein Endumbruch, falls neuer String unten angefgt wurde!

// $WORT1A = "$WORT1A
// ";

$WORT1A = $$STUF."
";

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

	
$Array_WORT1A = explode("\n", strtolower($WORT1A));

sort($Array_WORT1A);

$Array_WORT1A = array_unique($Array_WORT1A); 


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


// Zurckwandeln in String

$WORT1A = implode("\n",$Array_WORT1A); 


$WORT1A = trim($WORT1A);


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


// EXTRA 1: ZEICHEN-FEHLERMELDUNG

$Prf1 = $WORT1A;

// STOPPZEICHEN - NUR ZAHLEN UND BUCHSTABEN
// Erlaubte Zeichen: - MIT UMBRUCH!! Da Umbrche auch in der Liste

$StoppzeichenPrf1 = strspn(strtolower("$Prf1"),"-:*369
\n 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 in Wortliste $Snr: -$Fehlzeichen- </B></FONT> <BR> \n" ;
ECHO "<B>Der eingegebene Wert darf nicht null sein und darf nur Buchstaben enthalten. Bitte <A HREF=\"#Ende\">Werte neu laden</A></B><P>\n" ;

// Konsequenz: Neuer Wert wird bei Fehleingabe nicht bernommen:
$WORT1A = "$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!

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



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

// FEHLERMELDUNG DOPPELTE Fr GANZE WORTE I

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

// Abgleich einzelner Wortlisten - Nummer hier festgelegt!

// I. Dubletten bei verbotenen und erlaubten Worten nicht zulassen:


// TEST: 
// ECHO "<BR>";
// ECHO "Datei $DatNr: $V_array[$DatNr] ";
// ECHO " / $K_array[$DatNr]";
// ECHO "<P>";



$Array_Verboten = file ($V_array[1]);
$Array_Erlaubt = file ($V_array[2]);


$result1 = array_intersect($Array_Verboten, $Array_Erlaubt);
if ($result1 != null)
{
// TEST:
// ECHO "BingO! <BR>";
// $WORT1A = "";
}

// NG. Blockiert das Lschen bestehender Dubletten, 
// aber nicht deren Eintragung

// Besser: nur Fehlermeldung, keine Blockade, da in Stop_Words
// 'Erlaubte Worte' die 'Verbotenen Worte' nicht aushebeln 
// Sie bleiben als Wort verboten, nur als Zeichenkette erlaubt



// II. Dubletten bei verbotenen Ketten und Worten nicht zulassen:


$Array_VerbKette = file ($V_array[0]);
$Array_Verboten = file ($V_array[1]);


$result2 = array_intersect($Array_Verboten, $Array_VerbKette);



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

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

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




// End FOR 1 NG
// }



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

// Sicherungen erstellen:

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

// $Sicherung1 = "WORT1A01n.txt";
// $Sicherung2 = "WORT1A02.txt";
// $Sicherung3 = "WORT1A02n.txt";
// $Sicherung4 = "WORT1A03.txt";

// sicherungen/

$Sicherung1 = "sicherungen/liste".$Snr."v1n.txt";
$Sicherung2 = "sicherungen/liste".$Snr."v2.txt";
$Sicherung3 = "sicherungen/liste".$Snr."v2n.txt";
$Sicherung4 = "sicherungen/liste".$Snr."v3.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 Wort-Datei existiert hoffentlich!
$fc1 = copy($WortDatei, $Sicherung1);

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

}


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

// LOGGEN:


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


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

$fp = fopen($WortDatei,"w");
flock($fp,2);
fputs($fp,"$WORT1A");
flock($fp,3);
fclose($fp);



// Ende loggen

unset($WortDatei);
unset($WORT1A);
clearstatcache();


// End FOR 1 OK
}




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

// FEHLERMELDUNG DOPPELTE fr GANZE WORTE II

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



while(list($key, $val) = each($result1)) 
{
ECHO "<FONT COLOR=RED><B>FEHLER! </B></FONT><BR>";
echo "Als ganzes Wort verboten in <I>$V_array[1]</I> in Zeile " . $key . "
/ <BR> Aber erlaubt in <I>$V_array[2]</I>: &nbsp; <B>
<FONT COLOR=RED> " . $val . "</B></FONT><br>";
ECHO "<P>";
}

ECHO "<HR>
<BR>
";


// II ausgelagert in WORT_AEND.PHP


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

// END WORTE_LOGGEN1

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


?>

