NAME

 webtist.pm 

DESCRIPTION

 Modulbeschreibung webtist.pm

 Version 1.87
 Das Module stellt allgemeine Routinen fr DHTML zur verfuegung.
 Diverse Routinen rund ums Web zur schnellen gestaltung von Pages.
 Die Funktionen werden im einzelenen noch beschrieben wie sie
 Aufgerufen werden und was sie zurckgeben.

 weitere SUB Module zu webtist
  webtist::content
  webtist::counter
  webtist::chat
  webtist::dirindex
  webtist::gb
  webtist::lebenslauf
  webtist::meta
  webtist::navigation
  webtist::shop
  webtist::sysadm 
  webtist::ticker
  webtist::tools
  webtist::user

AUTOR

 Marc Hanschur, Space4Data / WEBTIST [NOSPAMmarc@hanschur.de]
 Aenderungsliste im PerlModul

SYNOPSIS

 das Modul DBI wird benoetigt mit den dazugehoerigen Modulen wie z.B DBD::MySQL oder DBD::Oracle
 sowie Time::Local

 Aufruf
  use webtist;
  $webtist = new webtist();
  # wo liegen die Files zu Laden (Config Files)
  $webtist->param('cfgpath','./incl','1');
  # wir evtl keine Webanwendung sondern eine Scripanwendung initialisiert
  # somit wird das config File auf script.cfg gesetzt
  $webtist->param('cfgfile','1','1');

 Modul Variablen sind %gparam und $gquery

 bei einlesen des Modules wird der Verzeichnispfad festgestellt um die
 benoetigten Konfigurations und Templatefiles zu finden. Dieses wird
 ueber die Globale Variable @INC in Erfahrung gebracht

 nach diesem Vorgang stehen die Modul Variablen
 $gpath, $gcfgpath, $gtmplpath, $gconfigfile und $gwebcfgfile
 zur Verfuegung
  $gpath => der Pfad zum Modul webtist Verzeichnis
  $gcfgpath => der Pfad zum Konfig verzeichnis (cfg)
  $gtmplpath => der Pfad zu den Standarttemplates
  $gconfigfile => Webtist Standartconfigfile (main.cfg)
  $gcfgfile => dieser wird aus der main.cfg geholt ueber die Methode webtistcfg();
          nix oder 0 Standard web.cfg 1 = script.cfg

 main.cfg File Konfigfile des Modules
 die Datei ist wie eine CSV Datei aufgebaut
 die eintr?e in dieser Datei werden von mir vorgenommen
 sie enthalten Standarttemplate angaben sowie Spezifische
 angaben zum Modul und und und bitte nicht veraendern

 web.cfg File Konfigfile der einzelnen Webseite
 die Datei ist wie eine CSV Datei aufgebaut
 die Parameter die in dieser Datei hinterlegt werden koennen werden in der
 jeweiligen Moduel/Routine beschrieben
 Beispiel
 Parameter;Wert;Beschreibung wenn n?ig;
 Standartwerde sind:
 DEBUG;0;ja == 1 / nein == 0 Debug Ausgabe am Bildschirm funktioniert nur wenn es das Module erlaubt (main.cfg);
 DEBUGNOWEB;1;ja ==1 / nein == 0 Ausgbae ohne HTML Tags fr zeilenumbruch beim Logging
 LOGGING;1;ja == 1 / nein == 0 Debug Ausgabe in Datei;
 LOGFILE;./incl/webmaster.log;mit komplettem PFAD Achtung Datei muss fr Webserver schreibbar sein

METHODS

new

 Konstruktor

 Aufruf
 new webtist();

webtistcfg

 Konfigparameter (Dateizeilen in Variable einlesen)

 Aufruf
 &webtistcfg($param,$art,$file);

 Parameter
 $param => ?ergabeparameter der aus der Konfig Datei als Wert zurckgegeben wird
 $art => welche Konfig soll geladen werden
   => 0 oder nix ist main.cfg
   => 1 Config von Website / Script
   => 2 Dynamisches Template laden nachfolgender Parameter erforderlich
 $file => Welches Template File soll geoeffnet werden
 
 wenn der CFG File name ge?dert werden soll (keine Webanwendung sondern ein script)
 dann sollte beim einbinden von Module webtist der Parameter CFGFILE auf 1 gesetzt werden
 somit muss ein Globale Konfig File "script.cfg" angelegt werden 
 
 Rueckgabe
 Parameter aus Datei in Form eines Skalars

param

 Rckgabe von Globalen Variablen (gparam)

 Aufruf
 &param($variable,$wert,$todo)

 Parameter
 $variable => Name der Variable
 $wert => Inhalt der Variablen
  MCGI => neues Modul CGI wird eingebunden und wichtige Variable gesetzt
          dieses kann wie nachfolgend dargestellt uebergeben werden
          use CGI;
          my $query = new CGI;
          $webtist->param('MCGI',$query,'1');
 $todo => was soll die SUB machen
  0 oder nix == Variable aus %gparam ausgeben
  1 == Variable in %gparam setzten (wird fuer Webseite verwendet)
  2 == Variable in %cgiparam setzten ( kann beliebig verwendet werden)
  3 == Variable aus %cgiparam auslsesen
  4 == Variable aus %cgiparam loeschen
  5 == fonts Verzeichnis auf dem Server

 Rueckgabe
 ein Skalar bei $todo 0 oder '' ansonsten kommt nichts zurueck

querystrg

 Querystring zusammenbauen

 Aufruf
 &querystrg($wert,$art)

 Parameter
 $wert => was fr ein wert soll noch an den Querystring angeh?gt werden
 $art
  1 = Land aus Wert setzten und Navigations IDs mit ausgeben
  2 = Printenstring anh?gen
  3 = alles bis auf Printen und uebergebener Wert anhaengen
  4 = alles und uebergebener Wert anhaengen
  5 = wie 4 nur als UNiMUT Schwobifying Proxy URL siehe
      http://unimut.fsk.uni-heidelberg.de/schwob.html
  6 = alles bis auf Nav IDs

 Rueckgabe
 ein Skalar mit dem gewuenschten Querystring

cgiquerystrg

 CGI Querystring zusammenbauen

 Aufruf
 &cgiquerystrg($wert)

 Parameter
 $wert => Werte die an den Querystrg angeh?gt werden sollen
 $art => 0 oder nix der komplette Querystrg
  1 = den CGIPARAM als Hash

 Rueckgabe
 ein Skalar mit allen initialisierten Querystring Parameter als Querystrg
 oder bei art 1 = Hash mit CGI Werten

hiddenquerystrg

 Querystring zusammenbauen
 wenn keine Templates angegeben werden werden diese zuerst
 versucht aus dem Webconfig File gezogen sonst aus dem
 Standasrtkonfigfile
 Weiter definitionen in der web.cfg
 HIDDEN => Verzeichnis/Datei

 Aufruf
 &hiddenquerystrg($emplate)

 Parameter
 $template => das zu ?fnende Hidden Template mit Pfadangabe

 Rueckgabe
 ein Scalar mit HTML Inhalt

gensessionid

 Genereirt eine eindeutige Session ID
 wenn wwwid und GParam definiert und nicht leer ist
 ansonsten wird die gparam{'wwwid'} als sessionid mitgefhrt

 Aufruf
 &session()

 Parameter
  keine

 Rueckgabe
  ein Skalar mit der Session ID

webtisttime

 Time Variablen setzten und zurckgeben
 die mehrsprachigkeit muss hier noch eingebaut werden

 Aufruf
 &webtisttime($variable,$timeview)

 Parameter
 $variable => Welchen Timewert willst du zurck
  Variable Werte
  sec = Sekunden
  min = Minuten
  hour = Stunden
  mday = Tag
  mon = Monat Zahl
  year = Jahr
  day = Tag
  week = Woche
  date = Datum Lang
  shortdate = Datum Kurz
  today = timestamp
  metadate = Datum fr Metatags
  oradbtime = Zeit fuer Oracle DB
  date01 = Datum Language oder $timeview selber definieren
  tmstamp = YYYYMMDDHH24MISS
 $timeview => Angabe wie Langtimeview $variable = date01
 $epoch_seconds => Epochen Sekunden (gleich wie time)

  web.cfg Werte nur fuer eingeschlatetet LANG / WEBLANG
  TIMEVIEW / TIMEVIEW-LANGID fuer die Zeitdarstellung
  in folgender Form YYYY.MM.DD HH24:MI:SS oder z.B. MM/DD/YYYY HH:MI:SSAM

  Rueckgabe
  ein Skalar mit dem oben Ausgewaehlten Inhalt

bodyhacking

 Body Weghacken in einem HTML File

 Aufruf
 &bodyacking($tmpl)

 Parameter
 $tmpl => Das ge?fnete Template

 Rueckgabe
 ein Skalar mir HTML Code

weblang

 Sprache auf der Seite richtig setzten
 die gilt nur fr die Seite nicht fr dynamische Inhalte inerhalb einer Seite
 Definitionen in der web.cfg
 LANG;de;;
 WEBLANG;1;ja == 1 / nein == 0 ist die mehrsprachigkeit erlaubt oder nicht;
 WEBLANGDBTXT;0;ja == 1 (db) / nein == 0 (textfile);
 WEBLANGDBFILE;templates.cfg;liegt im cfgpath was im Modulaufruf definiert werden muss oder dbi:mysql:Datenbank:host;
 WEBLANGDBUSR;username;Der Datenbankuser;
 WEBLANGDBPASS;password;Das dazugehierige Password
 WEBLANGTRAN;txtdat;wird nur bei textfiles benoetigt bitte ohne Endung und punkt muss jeweils aber als endung .de .en ... vorliegen;

 Das WEBLANGDBFILE Template sieht wie folgt aus
 Parameter;Wert;Beschreibung wenn n?ig;
 test02.tmpl;000;;
 test01.tmpl;001;;

 Standartwerte sind:
 NAV => Navigation
 ERR => Errortexte
 GB => Gaestebuch
 TCK => Ticker

 Die WEBLANGTRAN Templates sehen wie folgt aus
 File txtdat.de
 Parameter;Wert;Beschreibung wenn n?ig;
 000:01;DE TEST TEXT1;
 000:02;DE TEST;
 001:01;DE TEST TEXT2;
 File txtdat.eng
 Parameter;Wert;Beschreibung wenn n?ig;
 000:01;ENG TEST TEXT1;
 000:02;ENG TEST;
 001:01;ENG TEST TEXT2;

 Tabellenstruktur und Namen
 hier werden die Templates erfasst (wie templates.cfg)
 CREATE TABLE langtmpl (
  langtmpl_id varchar(10) default NULL,
  langtmpl_name varchar(50) default NULL,
  langtmpl_comment varchar(100) default NULL,
  ID tinyint(4)  DEFAULT '' NOT NULL auto_increment,
  PRIMARY KEY (ID),
  UNIQUE KEY langtmpl_id (langtmpl_id),
  KEY langtmpl_tmpl (langtmpl_tmpl),
  KEY langtmpl_id_2 (langtmpl_id)
 ) TYPE=MyISAM;
 hier werden die einzelenen Textbloecke erfasst wie txtdat nur alles in einer tabelle mit der langid als index
 CREATE TABLE langtxt (
  langtxt_id varchar(10) default NULL,
  langtxt_langtmpl_id varchar(10) default NULL,
  langtxt_lang_id varchar(10) NOT NULL default 'DFT',
  langtxt_textl blob,
  langtxt_textk varchar(50) default NULL,
  ID tinyint(4)  DEFAULT '' NOT NULL auto_increment,
  PRIMARY KEY (ID),
  KEY langtxt_id (langtxt_id),
  KEY langtxt_langtmpl_id (langtxt_langtmpl_id),
  KEY langtxt_langid (langtxt_langid)
 ) TYPE=MyISAM;

 Dabei ist zu beachten damit die langtmpl_id,langtxt_id,langtxt_langtmpl_id nur Zahlenwerte sein duerffen dies
 gilt auch fuer die Textdateien

 Aufruf
 &weblang($tmpl,$tmplid,$txtid)

 Parameter
 $tmpl => Das bereits ge?fnete Template in dem die Sprache richtig gesetzt werden soll
 $tmplid => Template Name wenn nicht vorhanden wird er ermittelt oder Template ID
 $txtid => die Text ID zur direkten Rueckgabe eines Textbausteines

 Rueckgabe
 der Uebergebene Wert mehrsprachig als Skalar

tmpl2fomfields

 Im Template enthaltene Qualifire durch Formularfelder ersetzen
 nur der Body Inhalt wird ausgegeben (das Template wird somit vorher durch die
 bodyhacking routine gejagt)
 <!--%%BEGINN:XX:YY:00-00:BERECHTIGUNG%%-->TEXT<!--%%END%%-->
 XX => Art TF fuer Textfield TA fuer Texarea
 YY => Name des Feldes
 00-00 => Groesse des Feldes angezeigtel?ge-maximall?ge bei textfield
 rows-colums bei textarea
 kann in form von -12 oder 12- angegeben werden
 BERECHTIGUNG => Berechtigung des Feldes ansonsten leer lassen

 Aufruf
 &tmpl2fomfields($tmpl)

 Parameter
 $tmpl => das bereits ge?fnete Template

 Rueckgabe
 Das Template mit den Formularfeldern

formfields2tmpl

 Das Template das mit durch die uebergebenen Formularfelder
 ersetzt werden soll

 Aufruf
 &formfields2tmpl($tmpl)

 Parameter
 $tmpl => das bereits ge?fnete Template

 Rueckgabe
 Das zusammengesetzte Template

randdirfiles

 RadomFunktion auf Verzeichnis mit Ablaufdatum wie
 templatename-YYYYMMDD.tmpl ab diesem Tag (Systemdatum) wird das Template nicht mehr beruecksichtigt.
 Die Files muessen mit .tmpl enden.
 wenn ein template mit stat beginnt wird diese immer verwendet kann aber jeweils immer nur eines sein und muss
 ein ablaufdatum besitzen wie z.b. stattemplatename-YYYYMMDD.tmpl

 Aufruf
 &randdirfiles($directory,$art)

 Parameter
 $directory => Verzeichnis in der die Files dynamisch ausgew?t werden mit Verfallsdatum ohne endenden /
 $art => Welche Files sollen durchgearbeitet werden
        => 0 oder nix ist main.cfg
        => 1 catcha Diretory nach png,gif,jpg durchsuchen (Achtung files klein schreiben)

 Rueckgabe
 ein Filename als Skalar

filesearch

 Files in einem Verzeichnis Suchen nach muster und als Array zurckliefern

 Aufruf
 &filesearch($muster,$directory)

 Parameter
 $muster => nach welche Files soll gesucht werden /muster/
 $directory => Verzeichnis in der die Files dynamisch gesucht werden sollen

 Rueckgabe
 ein Array mit dem gefundenen Files

opentmpl01

 Dateihandle (Datei in Variable einlesen)

 Aufruf
 &opentmpl01($template)

 Parameter
 $template => Verzeichnis/Datei wo das Template liegt

 Rueckgabe
 ein Skalar mit Inhalt der Datei

opentmpl02

 Dateihandle (Datei Zeilenweise in Variable einlesen mit Feldtrenner)

 Aufruf
 &opentmpl02($template,$spacer)

 Parameter
 $template => Verzeichnis/Datei wo das Template liegt
 $spacer => der Feldtrenner der zwichen den Zeilen verwendet werden soll

 Rueckgabe
 ein Skalar mit Inhalt des Templates Zeilenweise durch Feldtrenner getrennt

opentmpl03

 Dateihandle (Datei in Array Zeilenweise einlesen)

 Aufruf
 &opentmpl03($template)

 Parameter
 $template => der Pfad wo das Template liegt

 Rueckgabe
 ein Array in dem das Template zeilenweise eingelesen wird

writefile01

 Dateihandle (An eine bestehende Datei etwas anh?gen oder neue erzeugen)
 nur eine Zeile

 Aufruf
 &writefile01($file,$string)

 Parameter
 $file => der Pfad wo das File liegt und das File
 $string => was soll in die Datei geschriben werden

 Rueckgabe
 keine

writefile02

 Dateihandle (neue erzeugen)
 nur eine Zeile oder mehrere Zeilen

 Aufruf
 &writefile02($file,$string,$art)

 Parameter
 $file => der Pfad wo das File liegt und das File
 $string => was soll in die Datei geschriben werden
 $art => 0 oder nix keiner binmode
  1 = binmod auf file

 Rueckgabe
 keine

mailsend

 Mailroutine zum versenden von Mails mit Templatevorgabe und mehrsprachigkeit
 wenn die mailsubject Variable nichts enthaelt wir es aus dem Template extrahiert
 in folgender form <mailsubject>TEXT</mailsubject>

 Aufruf
 &mailsend($mailto,$mailtoadr,$mailfrom,$mailfromadr,$mailsubject,$mailtemplate,$art)

 Parameter
 $mailto => Name des Mailempfaengers
 $mailtoadr => Mailadresse des Empfaengers
 $mailfrom => Name des Absenders
 $mailfromadr => Mailadresse des Absenders
 $mailsubject => Mailbetreff
 $mailtemplate => das bereits geoeffnete Mailtemplate das versandwerden soll (TEXTFILE)
 $att => Attachements im Template

 Rueckgabe
 keine

mailatt

 an einen String ein Attachment h?gen

 Aufruf
 &mailatt($mailatt)

 Parameter
 $mailatt => bereits vorhandene Attachments

 Rueckgabe
 ein Skalar mit dem zus?zlichen Attachment

uml2html

 Wandlung von Sonderzeichen

 Aufruf
 &uml2html($tmpl)

 Parameter
 $tmpl => der komplette HTML Code

 Rueckgabe
 ein Skalar

fillUp

 Strings auffuellen

 Aufruf
 &fillup($len,$pre,$strg,$post)

 Parameter
 $len => L?ge
 $pre => Pr?ix
 $strg => String
 $post => Postfix

 Rueckgabe
 Skalar mit geaendertem String als Inhalt

dblogging

 Loggin informationen Webschreiben fr WEBMASTER wenn fehler auftreten
 Definitionen in der web.cfg
 DBLOGGING;1;ja == 1 / nein == 0 Debug Ausgabe in DB;
 DBLOGDB;dbi:mysql:Datenbank:host;Datenbank
 DBLOGDBSID;; nur bei Oracle
 DBLOGDBUSR;;Username
 DBLOGDBPASS;;Passwort

 Aufruf
 &dblogging($tabelle,$felder,$werte,$art,$timeok)

 Beispiel fuer logging Tabelle
 CREATE TABLE USR
 (
  USR_NICKNAME   VARCHAR(20)                   NOT NULL,
  USR_WWWID      VARCHAR(255)                  NOT NULL,
  USR_TIMESTAMP  DATE                           NOT NULL,
  USR_METHODE    VARCHAR(70)                   NOT NULL,
  USR_RESULT     VARCHAR(255)                  NOT NULL,
  USR_QUERY      VARCHAR(512),
  USR_STATUS     INT                         DEFAULT 0
 )

 Parameter
 $tabelle => in welche tabelle soll protokoliert werden
 $felder => welche felder werden geschrieben feld,feld,feld
 $werte => welche inhalte werden geschrieben 'inhalt',0,'inhalt'
 $art => soll die einzelne Uebergabe direkt gedebuggt werden
 == 0 oder nix keine Aenderung
 == 1 einzelne Wert Debuggen fuer Entwicklung
 $timeok => soll die Routine den Timstamp erzeugen als wert bitte das DB Feld angeben

 Rueckgabe
 keine

logging

 Loggin informationen Webschreiben fr WEBMASTER wenn fehler auftreten
 Wichtig dabei ist damit der Webserver in dem Logfile das in der WEBconfig angegeben wird
 Schreibberechtigung hat !!!!
 das Logging muss im main.cfg sowie im web.cfg erlaubt sein
 Definitionen in der web.cfg
 LOGGING;1;ja == 1 / nein == 0 Debug Ausgabe in Datei;
 LOGFILE;./incl/webmaster.log;mit komplettem PFAD Achtung Datei muss fr Webserver schreibbar sein

 Aufruf
 &logging($logstring,$art,$file)

 Parameter
 $logstring => der Code der Ausgegebn werden soll (ins Logfile)
 $art => soll die einzelne Uebergabe direkt gedebuggt werden
  == 0 oder nix keine Aenderung
  == 1 einzelne Wert Debuggen fuer Entwicklung
 $file => Logfile

 Rueckgabe
 keine

debug

 Debug Informationen anzeigen aber nur wenn in main.cfg es erlaubt ist
 und im web.cfg der Wert DEBUG definiert ist
 Weiter definitionen in der web.cfg
 DEBUG;0;ja == 1 / nein == 0 Debug Ausgabe am Bildschirm funktioniert nur wenn es das Module erlaubt (main.cfg);

 Aufruf
 &debug($debugstring,$art,$nobr)

 Parameter
 $debugstring => der Code der Ausgegebn werden soll
 $art => soll die einzelne Uebergabe direkt gedebuggt werden
  == 0 oder nix keine Aenderung
  == 1 einzelne Wert Debuggen fuer Entwicklung
 $nobr => keine BR setzten => 1

 Rueckgabe
 keine es erfolgt eine direkte print Ausgabe

WARNING

 ich kann im Moment keine Warnungen erkennen

BUGS

 Transparent wird durch eine Remotedelegationkerbe vollendet, die unter bestimmten Umstaeden brechen
 konnte.  Wenn dieses Ihnen geschieht, informieren Sie mich bitte.
 Informieren Sie mich, wenn Sie einiges finden.

ACKNOWLEDGEMENTS

 Thanks to Susanne Herz for inspiration, laughs and all 'round good times;
 and Linus Torvalds for all the great software.

LICENSE

 Dieser Code ist freie Software;  Sie koenen ihn neuverteilen und/oder ihn unter den gleichen
 Bezeichnungen wie Perl selbst aedern.

DISCLAIMER

 Dieses ist freie Software.  Wenn es bricht, besitzen Sie beide Teile.

POD ERRORS

Hey! The above document had some coding errors, which are explained below:

Around line 125:

Non-ASCII character seen before =encoding in 'geändert'. Assuming ISO8859-1