
    ####
     A #  Textfunktionen
    ####

    Es gibt im wesentlichen 2 Dateien, in denen die Funktionen untergebracht sind. Standardfunktionen liegen in der Datei "function.php"
    und SQL-Funktionen habe ich in der Datei function_sql.php abgelegt. Nun werde ich sicher nicht jede einzelne Funktion vorstellen, aber
    doch die wichtigsten.

     * myfile($file)

       Die Funktion liest mit dem file() Befehl eine Textdatei ein und "cached" die Datei. Sofern die Datei schon gelesen
       wurde, wird der cache zurückgegeben.

          $inhalt = myfile(PFAD_ZUR_TEXTDATEI);

       Es steht einem nun das Array $inhalt zur Verfügung.

    -------------------------------------------------------------------------------------------------------------------------

     * myfwrite($file,$towrite,$mode,$recht=0777)

       Die Funktion schreibt in ein File, es kann ein Array oder auch ein String übergeben werden. Sofern der Server den flock() Befehl
       unterstützt, wird das File vor dem Schreiben gelocked.

          myfwrite("PFAD_ZUR_TEXTDATEI", $var, 'w'); // scheibt $var in ein File
          myfwrite("PFAD_ZUR_TEXTDATEI", $var, 'a'); // hängt an ein File den Inhalt von $var an

       Ist $var ein Array, z.B
       $var[0] = "zeile 1\n";
       $var[1] = "zeile2 \n";
       $var[2] = "zeile3 \n";

       wird das Array in die Textdatei geschriben, wobei das Array in Aufsteigender Reihenfolge als Zeile in die Datei geschrieben wird.
       Für Zeilenwechsel (\n erzeugt dabei einen Zeilenwechsel) hat man selbst zu sorgen. Auf Windows Maschinen sollte u.U. "\r\n" an die
       Zeilen angehängt werden um dem Windows-Standard zu folgen und die Dateien in einem Editor editierbar zu machen.

       Die Funktion zählt die Anzahl an Dateien, die gelesen wurden und gibt den Wert in der Runtime-Information aus. Der Befehl sorgt auch
       gleich dafür, dass der Cache aktualisiert wird.

       Wird ein Wert für die Rechte mit übergeben, wird versucht diese Rechte zu setzen.

       CSV-Dateien lassen sich auf diese Art relativ einfach realisieren. Ich erstelle ein Array, in dem die einzelnen Vars mit den CSV-Inhal-
       ten befüllt werden, z.B.

          $var[0] = $a."\t".$b."\t".$c."\t".$d."\n";

       $var hat nun einen mit TAB getrennten Inhalt und einen Zeilenumbruch am Ende.

    -------------------------------------------------------------------------------------------------------------------------

     * clean_textfile($file)

       Die Funktion entfernt Leerzeilen aus einem File. Einträge wie TAB (\t) oder Zeilenumbrüche (\n) in einer Zeile werden als Leereintrag
       gewertet und ebenfalls entfernt.

    -------------------------------------------------------------------------------------------------------------------------

     * my_utf8($string)

       Alle Text-Ausgaben sollten durch diese Funktion gesendet werden, da dann der utf8 Filter der Konfiguration berücksichtigt wird.
       Ist der Parameter aktiviert, wird der Ausgabetext durch die Funktionen utf8_encode() geleitet und Umlaute werden einheitlich
       dargestellt.

          $text = myutf8($string);
          echo $text;

       Wird der Parameter $_SESSION['insert_brake'] auf 1 gesetzt, ersetzt die Funktion ein \n durch ein < br >, was die Funktion sowohl zum
       Schreiben in Textdateien als auch als Ausgabefunktion brauchbar macht. Texte aus Textfeldern, die per $_GET oder $_POST übergeben
       werden, werden mit \n als Zeilenumbruch versehen.

    -------------------------------------------------------------------------------------------------------------------------

     * size_hum_read($size,$prez=1)

       Gibt eine Grösse (Dateigrösse, Festplatten etc.) in lesbarer Form wieder. Aus 170855 Byte wird zu 170kB Die Ausgabe wird auf $prez Nach-
       kommastellen gerundet.

    -------------------------------------------------------------------------------------------------------------------------

     * function make_sonder_umlaut($text)

       Wandelt Umlaute in die entsprechenden HTML-Codes um, aus Ö, ä etc werden zu den entsprechenden HTML-Chars.

    -------------------------------------------------------------------------------------------------------------------------

     * function demutate($text)

       Macht die Umwandlung der Umlaute wieder rückgängig. ausserdem werden Feste Leerzeichen; wieder in "normale" Leerzeichen umgewandelt
       \n und \r werden aus dem Text entfernt.
       Natürlich gibt es schon fertige Funktionen in PHP, aber so lassen sich auch Zeichenersetzungen vornehmen, die von PHP nicht berück-
       sichtigt werden.

    -------------------------------------------------------------------------------------------------------------------------

     * function auto_url($text)

       Wandelt einen Text für http://, ftp://, mailto: und news: automatischn in eine URL um. Die URL wird in einem eigenen Fenster (Popup)
       geöffnet.

          $url = auto_url($url);

    -------------------------------------------------------------------------------------------------------------------------

     * init_site_linkbar($sql, $initget='', $default_conf='data_per_page',$return=0)

       Initialiasiert alle notwendigen Variablen, um einen Seiten-Pager anzuzeigen. die Funktion ist vor der Funktion create_site_linkbar
       aufzurufen.

       Es werden folgende Variablen erstellt, initialisiert und zurückgegeben:

            $startwert      ist jener Wert, ab dem ein LIMIT in einem SQL-Statement gesetzt werden soll.
            $z              ist die aktuelle Seite, auf der man sich in der Blätterfunktion befindet
            $pages          ist die Anzahl an Gesamtseiten

       Die Funktion greift auf die config-Variable $config[$default_conf'] zurück, da verschiedene Anzeigen für z.B. Termine und Adressen
       konfiguriert werden können.

       Wird für den Wert $initget der String 'init' übergeben, wird in der Funktion geprüft, ob $_GET['init'] gesetzt wurde ind damit
       die Blätterfunktion ein Reset erfahren soll.

       Wird $return=1 gesetzt, wird ein LIMIT mit den errechneten Werten an den SQL-Query-String angehängt

    -------------------------------------------------------------------------------------------------------------------------

     * create_site_linkbar($baselink,$sites,$z,$panz=3)

       Erstellt eine Blätterfunktion bei mehrseitigen Ausgaben.

          * $baselink gibt die URL an, die in der Blätterfunktion verwendet werden soll
          * $sites ist die Gesamtanzahl an Seiten die es gibt
          * $z ist die aktuelle Seite, auf der wir uns befinden
          * $panz ist ein Ausgabeparameter, der bestimmt, wieviele Seitenangaben in der Anzeige erscheinen sollen.

          Die Ausgabe sieht z.B. so aus:

            Seiten (12) [ « ‹  1 2 3  › » ]

          übergeben wir $panz mit 7 sieht die Ausgabe dann so aus:

            Seiten (12) [ « ‹  1 2 3 4 5 6 7  › » ]


       Was in der Folge kompliziert klingen mag ist es aber nicht.
       Wir erstellen am Besten ein Bsp, die Funktion myfetch_tabel() wird etwas weiter unten erklärt, hier soll es um die Blätterfunktion
       gehen. Nehmen wir an, die Tabelle adressen hat mehrere hundert Einträge.

          $sql = "SELECT * FROM `adressen` ";
          myfetch_table($sql);

               Um eine Blätterfunktion zu realisieren, müsste man eine Limit-Angabe errechnen und automatisch an das Statement anhängen.
               Genau das macht die Funktion. Alles was man eigentlich benötigt sind folgende Informationen:

               1. Anzahl der Gesamtdatensätze
               2. Wieviele Daten sollen je Seiten angezeigt werden
               3. Anzahl an Seiten (wird errechnet)
               3. Der link, (normalerweise ja die Seite, auf der man steht, also $_SERVER['SCRIPT_NAME'])

               Die Gesamanzahl der Datensätze lässt sich mit einer kleinen bestehenden Funktion ermitteln:

                  $_SESSION['gesamt_daten'] = count_alle_daten($sql);

               In der Datei conf.php wurde bereits die Anzahl der anzuzeigenden Datensätze je Seite in der Variablen
               $config['data_per_page'] festegelegt (derzeit 23)

               Damit kann man die Anzahl an Seiten errechnen.

                  $pages = ceil($_SESSION['gesamt_daten'] / $config['data_per_page']);


       All diese Grunddaten werden von der Funktion init_site_linkbar() untersucht und eventuell gesetzt.


       Bauen wir also unser kleines Script:

          session_start ();
          require_once("includes.php"); // alle Funtionen etc laden

          $sql = "SELECT * FROM `adressen` ";

          // Notwednige Daten zum Blättern errechnen
          init_site_linkbar($sql);

          // unser LIMIT an die SQL-Abfrage anhängen
          $sql.=" LIMIT ".$startwert." , ".$config['data_per_page']." "; // LIMIT an das SQL-Statement anhängen

          // Tablle ausgeben
          myfetch_table($sql);

          // Die Blätterfunktion anzeigen lassen
          create_site_linkbar($_SERVER['SCRIPT_NAME']."?todo=".$_SESSION['todo'],$pages,$z,5);

    -------------------------------------------------------------------------------------------------------------------------

     *  function clean_textfile($file)

     Die Funktion löscht alle Leerzeilen, also jene, die keinen Inhalt haben, aus einem Textfile. Die Funktion setzt dabei
     trim() ein um auf Inhalt zu prüfen. Bleiben nach einem trim(Zeile) noch Zeichen übrig, ist die Zeile nicht leer.


