oSystem=&$oSystem;
$this->msTPLPath=CURRDIR."apps/veranstaltung/anmeldungen/tpl/";
}
function gsRender($asParams)
{
if(is_array($asParams))
$sAction=strtolower(array_shift($asParams));
switch($sAction)
{
default:
return $this->msEditor($asParams);
case "drop":
unset($_SESSION["neueanmeldung"]);
return $this->msEditor($asParams);
case "setzen":
$this->__saveToSession();
return $this->msEditor($asParams);
case "speichern":
$this->__saveToSession();
return $this->msSave($asParams);
case "bearbeiten":
return $this->msEdit($asParams);
}
}
function checkPersonData()
{
$asPerson=$_SESSION["neueanmeldung"]["stammdaten"];
if(trim($asPerson["Nachname"])=="")
return false;
if(trim($asPerson["Strasse"])=="")
return false;
if(trim($asPerson["PLZ"])=="")
return false;
if(trim($asPerson["Ort"])=="")
return false;
return true;
}
function msSave($asParams)
{
if($this->glGetCountOrder()>0&&$this->checkPersonData())
{
$_SESSION["neueanmeldung"]["formkey"];
$sFormKey=true;
if($sFormKey!==false)
{
if(isset($_SESSION["neueanmeldung"]["formkey"]))
{
if($_SESSION["loaded.randomkey"]==$_SESSION["neueanmeldung"]["formkey"])
{
unset($_SESSION["neueanmeldung"]["formkey"]);
if($this->mbSaveToDB()===true)
{
$_SESSION["PDFRENDER"]["ANMELDUNGPK"]=$this->mlLastAnmeldungPK;
require_once(CURRDIR."fwreplace/anmeldung.pdf.php");
$oPDF=new CAPDF($this->oSystem);
$oPDF->msGetPDF($this->mlLastAnmeldungPK);
unset($_SESSION["neueanmeldung"]);
return "
oSystem->oSiteNavi->gsGetURL("PDF",array("Anmeldung"),"document")."Anmeldung.pdf\" target=\"__new\">Wurde gespeichert, hier kann das Dokument heruntergeladen werden.";
}
else
return "Konnte nicht speichern (DB)";
}
else
return "Ein Fehler in der Sessiodsnverwaltung ist aufgetreten!";
}
else
return "Daten wurden bereits gespeichert!";
}
else
{
return "Ein Fehler in der Sessionverwaltung xx ist aufgetreten";
}
}
return $this->msEditor($asParams);
}
function mbSaveToDB()
{
$asData=$_SESSION["neueanmeldung"]["karten"];
if(is_array($asData) && sizeof($asData)>0)
{
$asPerson=$_SESSION["neueanmeldung"]["stammdaten"];
$asInsert["VeranstaltungsPK"]=$this->oSystem->oDB->gsEscapeString($this->VeranstaltungsPK);
$asInsert["AnmeldeDatum"]=$this->oSystem->oDB->gsEscapeString($this->gsFormatDatum($asPerson["AnmeldeDatum"]));
$asInsert["SourceType"]=$this->oSystem->oDB->gsEscapeString($asPerson["SourceType"]);
$asInsert["Anrede"]=$this->oSystem->oDB->gsEscapeString($asPerson["Anrede"]);
$asInsert["Titel"]=$this->oSystem->oDB->gsEscapeString($asPerson["Titel"]);
$asInsert["Vorname"]=$this->oSystem->oDB->gsEscapeString($asPerson["Vorname"]);
$asInsert["Nachname"]=$this->oSystem->oDB->gsEscapeString($asPerson["Nachname"]);
$asInsert["Verbindung"]=trim($asPerson["Verbindung"])==""?"NULL":$this->oSystem->oDB->gsEscapeString($asPerson["Verbindung"]);
$asInsert["IsCV"]=$this->oSystem->oDB->gsEscapeString($asPerson["IsCV"]);
$asInsert["IsACV"]=$this->oSystem->oDB->gsEscapeString($asPerson["IsACV"]);
$asInsert["Strasse"]=$this->oSystem->oDB->gsEscapeString($asPerson["Strasse"]);
$asInsert["PLZ"]=$this->oSystem->oDB->gsEscapeString($asPerson["PLZ"]);
$asInsert["Ort"]=$this->oSystem->oDB->gsEscapeString($asPerson["Ort"]);
$asInsert["StaatPK"]=$this->oSystem->oDB->gsEscapeString($asPerson["StaatPK"]);
$asInsert["Fax"]=$this->oSystem->oDB->gsEscapeString($asPerson["Fax"]);
$asInsert["EMail"]=$this->oSystem->oDB->gsEscapeString($asPerson["EMail"]);
$asInsert["GesamtBetrag"] = $this->oSystem->oDB->gsEscapeString(str_replace(",",".",$_SESSION["neueanmeldung"]["gesamtsumme"]));
$asInsert["FromIP"] = $this->oSystem->oDB->gsEscapeString(getenv("REMOTE_ADDR"));
$asInsert["CreateDate"]="now()";
$asInsert["Creator"]=$this->oSystem->oUser->oUserData->UserPK;
if($oRes=$this->oSystem->oDB->goInsertArray("tdAnmeldungen",$asInsert))
{
$lAnmeldungPK=$oRes->glGetInsertID();
$this->mlLastAnmeldungPK=$lAnmeldungPK;
$asUpdate["BuchungsKey"]=$this->oSystem->oDB->gsEscapeString($this->gsGenerateKey($lAnmeldungPK));
if($oRes=$this->oSystem->oDB->goUpdateArray("tdAnmeldungen",$asUpdate,"AnmeldungPK=".$lAnmeldungPK))
{
unset($asInsert);
foreach($asData as $lProgrammPK=>$asPGM)
{
unset($asInsert);
if(isset($asPGM["RABATTIERT"])||isset($asPGM["NORMAL"]))
{
$asInsert["ProgrammPK"]=$this->oSystem->oDB->gsEscapeString($lProgrammPK);
$asInsert["VeranstaltungsPK"]=$this->oSystem->oDB->gsEscapeString($this->VeranstaltungsPK);
$asInsert["AnmeldungPK"]=$lAnmeldungPK;
$lKartenN=0;
$lKartenR=0;
if(isset($asPGM["RABATTIERT"]))
$lKartenR=$asPGM["RABATTIERT"];
if(isset($asPGM["NORMAL"]))
$lKartenN=$asPGM["NORMAL"];
$asInsert["KartenRabattiert"]=$this->oSystem->oDB->gsEscapeString($lKartenR);
$asInsert["KartenNormal"]=$this->oSystem->oDB->gsEscapeString($lKartenN);
$bACV=$asPerson["IsACV"]==-1?-1:0;
$sQuery="SELECT
(IF(GratisForACV=-1&&".$bACV."=-1,0,IFNULL(PreisNormal,0))) as PreisNormal,
(IF(GratisForACV=-1&&".$bACV."=-1,0,IFNULL(PreisRabattiert,0))) as PreisRabattiert
FROM
tdProgrammPunkte
WHERE
ProgrammPK=".$this->oSystem->oDB->gsEscapeString($lProgrammPK);
if($o=$this->oSystem->oDB->goGetRecord($sQuery))
{
$asInsert["PreisNormal"]=$o->PreisNormal;
$asInsert["PreisRabattiert"]=$o->PreisRabattiert;
}
else
echo mysql_error()."
".$this->oSystem->oDB->msQuery."
";
if($this->oSystem->oDB->goInsertArray("tdAnmeldungenProgrammPunkte",$asInsert))
{
}
else
echo mysql_error()."
".$this->oSystem->oDB->msQuery."
";
}
}
return true;
}
else
{
// eventuell LÖSCHEN
echo mysql_error()."
".$this->oSystem->oDB->msQuery."
";
}
}
else
echo mysql_error()."
".$this->oSystem->oDB->msQuery."
";
}
else
return false;
}
function gsGenerateKey($lStart,$sBlockLength=8)
{
$lMul=pow(10,$sBlockLength);
$lMin=$lStart*$lMul;
$lMax=($lStart+1)*$lMul-1;
$value=md5(mt_rand($lMin,$lMax));
$lFillFrom=strlen($lStart);
$sVal=mt_rand(10000000,99999999);
$sValue=substr($sVal,0,8-$lFillFrom).$lStart;
return $sValue;
}
function gsGetSources($sCurrentSource)
{
$asPush["Value"]="fax";
$asPush["Anzeige"]="FAX";
$asPush["PreSelected"]="";
if($sCurrentSource=="fax")
$asPush["PreSelected"]="SELECTED";
$asR[]=$asPush;
$asPush["Value"]="email";
$asPush["Anzeige"]="E-Mail";
$asPush["PreSelected"]="";
if($sCurrentSource=="email")
$asPush["PreSelected"]="SELECTED";
$asR[]=$asPush;
$asPush["Value"]="mail";
$asPush["Anzeige"]="Post";
$asPush["PreSelected"]="";
if($sCurrentSource=="mail")
$asPush["PreSelected"]="SELECTED";
$asR[]=$asPush;
return $this->oSystem->oUI->gsGetSelectBox($asR,"__person[SourceType]",array("class"=>"transpSelect","style"=>"width:150"));
}
function __saveToSession()
{
if($asPerson=$this->oSystem->oClientData->gvGetVariable("__person",false))
$_SESSION["neueanmeldung"]["stammdaten"]=$asPerson;
if($asData=$this->oSystem->oClientData->gvGetVariable("__data"))
{
$lGesamtSumme=0;
foreach($asData["AnzahlKarten"] as $lProgrammPK=>$asKarten)
{
$lKartenN=0;
$lKartenR=0;
if($asKarten["NORMAL"]>0)
{
$lKartenN=$asKarten["NORMAL"];
$asSave[$lProgrammPK]["NORMAL"]=$asKarten["NORMAL"];
}
if($asKarten["RABATTIERT"]>0)
{
$lKartenR=$asKarten["RABATTIERT"];
$asSave[$lProgrammPK]["RABATTIERT"]=$asKarten["RABATTIERT"];
}
$mlGesamtKarten=$lKartenN+$lKartenR;
$asPerson=$_SESSION["neueanmeldung"]["stammdaten"];
$bACV=$asPerson["IsACV"]==-1?-1:0;
$sQuery="SELECT
(IF(GratisForACV=-1&&".$bACV."=-1,0,IFNULL(PreisNormal,0))*".$lKartenN.")+
(IF(GratisForACV=-1&&".$bACV."=-1,0,IFNULL(PreisRabattiert,0))*".$lKartenR.") as Summe
FROM tdProgrammPunkte WHERE ProgrammPK=".$this->oSystem->oDB->gsEscapeString($lProgrammPK);
$o=$this->oSystem->oDB->goGetRecord($sQuery);
$asSave[$lProgrammPK]["Summe"]=$o->Summe;
$lGesamtSumme+=$o->Summe;
}
$_SESSION["neueanmeldung"]["gesamtsumme"]=$lGesamtSumme;
$_SESSION["neueanmeldung"]["karten"]=$asSave;
$_SESSION["neueanmeldung"]["gesamtkarten"]=$mlGesamtKarten;
}
}
function msEditor($asParams)
{
$oTPL=$this->oSystem->goGetTPLParser($this->msTPLPath."editor.tpl");
$oTPL->gbSetValue("set",$this->oSystem->oSiteNavi->gsGetURL($this->msClass,$this->__addAction("Setzen")));
$oTPL->gbSetValue("save",$this->oSystem->oSiteNavi->gsGetURL($this->msClass,$this->__addAction("Speichern")));
$oTPL->gbSetValArray($this->gasGetData());
$_SESSION["neueanmeldung"]["formkey"]=$_SESSION["app.randomkey.loaded"];
$oTPL->gbSetValue("formkey",$_SESSION["neueanmeldung"]["formkey"]);
$oTPL->gbSetValue("Anmeldungen",$this->gasGetVeranstaltung());
$asB["savedata"]=false;
$this->glGetCountOrder();
if($this->glGetCountOrder()>0)
{
$asB["savedata"]=true;
}
$oTPL->gbSetButtons($asB);
return $oTPL->gsParse();
}
function gasGetData()
{
$asR["AnredeHerr"]=$_SESSION["neueanmeldung"]["stammdaten"]["Anrede"]=="Herr"||$_SESSION["neueanmeldung"]["stammdaten"]["Anrede"]==""?"checked":"";
$asR["AnredeFrau"]=$_SESSION["neueanmeldung"]["stammdaten"]["Anrede"]=="Frau"?"checked":"";
$asR["Titel"]=$_SESSION["neueanmeldung"]["stammdaten"]["Titel"];
$asR["Vorname"]=$_SESSION["neueanmeldung"]["stammdaten"]["Vorname"];
$asR["Nachname"]=$_SESSION["neueanmeldung"]["stammdaten"]["Nachname"];
$asR["IsCVNein"]=$_SESSION["neueanmeldung"]["stammdaten"]["IsCV"]!="-1"||$_SESSION["neueanmeldung"]["stammdaten"]["IsCV"]==""?"checked":"";
$asR["IsCVJa"]=$_SESSION["neueanmeldung"]["stammdaten"]["IsCV"]=="-1"?"checked":"";
$asR["IsACVNein"]=$_SESSION["neueanmeldung"]["stammdaten"]["IsACV"]!="-1"||$_SESSION["neueanmeldung"]["stammdaten"]["IsACV"]==""?"checked":"";
$asR["IsACVJa"]=$_SESSION["neueanmeldung"]["stammdaten"]["IsACV"]=="-1"?"checked":"";
$asR["Verbindung"]=$_SESSION["neueanmeldung"]["stammdaten"]["Verbindung"];
$asR["Strasse"]=$_SESSION["neueanmeldung"]["stammdaten"]["Strasse"];
$asR["PLZ"]=$_SESSION["neueanmeldung"]["stammdaten"]["PLZ"];
$asR["Ort"]=$_SESSION["neueanmeldung"]["stammdaten"]["Ort"];
$asR["Staat"]=$this->gsGetStaatSelect($_SESSION["neueanmeldung"]["stammdaten"]["StaatPK"]);
$asR["Fax"]=$_SESSION["neueanmeldung"]["stammdaten"]["Fax"];
$asR["AnmeldeDatum"]=$_SESSION["neueanmeldung"]["stammdaten"]["AnmeldeDatum"]==""?date("d.m.Y"):$_SESSION["neueanmeldung"]["stammdaten"]["AnmeldeDatum"];
$asR["EMail"]=$_SESSION["neueanmeldung"]["stammdaten"]["EMail"];
$asR["SourceType"]=$this->gsGetSources($_SESSION["neueanmeldung"]["stammdaten"]["SourceType"]);
return $asR;
}
function gsFormatDatum($sDatum)
{
$sDatum=str_replace(",",".",$sDatum);
$sDatum=str_replace("-",".",$sDatum);
$sDatum=str_replace("/",".",$sDatum);
$asDatum=explode(".",$sDatum);
if(strlen($asDatum[2])==2)
$asDatum[2]="20".$asDatum[2];
return str_pad($asDatum[2],4,"0",STR_PAD_LEFT)."-".str_pad($asDatum[1],2,"0",STR_PAD_LEFT)."-".str_pad($asDatum[0],2,"0",STR_PAD_LEFT);
}
function gsGetStaatSelect($lPreselectPK)
{
$lPreselectPK=$lPreselectPK==""?29:$lPreselectPK;
$sQuery="SELECT
StaatPK as Value,
Name as Anzeige,
IF(StaatPK=".$this->oSystem->oDB->gsEscapeString($lPreselectPK).",'SELECTED','') as PreSelected
FROM tdCountryList ORDER BY Name";
if($oRes=$this->oSystem->oDB->goQuery($sQuery))
{
$asData=$oRes->gaaGetAllRecords();
return $this->oSystem->oUI->gsGetSelectBox($asData,"__person[StaatPK]",array("class"=>"transpSelect","style"=>"width:150"));
}
}
function gasGetVeranstaltung()
{
if($asData=$this->oSystem->oClientData->gvGetVariable("__data",false))
{
}
$oTPL=$this->oSystem->goGetTPLParser($this->msTPLPath."auswahl.programm.tpl",true,-3,2);
$oTPL->gbSetBlock("tage",$asTage);
$asPerson=$_SESSION["anmeldung"]["person"]["stamm"];
$bACV=$asPerson["IsACV"]==-1?-1:0;
$asTypen=array();
$sQuery="SELECT tdProgrammPunktTypen.Name,tdProgrammPunktTypen.TypePK FROM tdProgrammPunktTypen,tdProgrammPunkte WHERE
tdProgrammPunktTypen.TypePK=tdProgrammPunkte.TypePK AND VeranstaltungsPK=".$this->VeranstaltungsPK." AND 1 GROUP BY tdProgrammPunkte.TypePK";
if($oX=$this->oSystem->oDB->goQuery($sQuery))
{
$asTypen=$oX->gaaGetAllRecords();
}
$asPerson=$_SESSION["neueanmeldung"]["stammdaten"];
$bACV=$asPerson["IsACV"]==-1?-1:0;
$sKey=0;
foreach($asTypen as $asType)
{
$sQuery="SELECT
*,
IF(IFNULL(tdProgrammPunkte.Kontingent,-1)=-1||tdProgrammPunkte.Kontingent<=0,'__false__',tdProgrammPunkte.Kontingent) as Kontingent,
IF(IFNULL(tdProgrammPunkte.Kontingent,-1)=-1||tdProgrammPunkte.Kontingent<=0,'".WORT_FUER_UNLIMITERT."',tdProgrammPunkte.Kontingent) as KontingentView,
CONCAT(DATE_FORMAT(BeginnDatum,'%d.%m.%y'),' ',TIME_FORMAT(BeginnUhrzeit,'%H:%i')) as START_UHRZEIT,
IF(GratisForACV=-1&&".$bACV."=-1,0,IFNULL(PreisNormal,0)) as PreisNormal,
IF(GratisForACV=-1&&".$bACV."=-1,0,IFNULL(PreisRabattiert,0)) as PreisRabattiert,
IF(IFNULL(EndeDatum,-1)=-1,'".WORT_FUER_OFFENESENDE."',CONCAT('bis ',IF(EndeDatum=BeginnDatum,'',date_format(EndeDatum,'%d.%m.%Y')),TIME_FORMAT(EndeUhrzeit,'%H:%i'))) as ENDEDATUM,
IF(
PreisRabattiert=0,'".WORT_FUER_GRATIS."',
IF(GratisForACV=-1&&".$bACV."=-1,'".WORT_FUER_GRATIS_OECV."',
IF(IFNULL(PreisRabattiert,-1)=-1,'".WORT_FUER_NICHT_RABATTIERT."',
CONCAT(REPLACE(PreisRabattiert,'.',','),' €')))) as PreisRabattiertView,
IF(IFNULL(PreisRabattiert,-1)!=-1,
CONCAT(''),
'') as AnzahlRInput,
IF(IFNULL(PreisNormal,-1)!=-1,
CONCAT(''),
'') as AnzahlNInput,
IF(
PreisNormal=0,'".WORT_FUER_GRATIS."',
IF(GratisForACV=-1&&".$bACV."=-1,'".WORT_FUER_GRATIS_OECV."',
IF(IFNULL(PreisNormal,-1)=-1,'".WORT_FUER_KEIN_NORMALPREIS."',
CONCAT(REPLACE(PreisNormal,'.',','),' €')))) as PreisNormalView
FROM
tdProgrammPunkte
WHERE
tdProgrammPunkte.TypePK=".$asType["TypePK"]." AND VeranstaltungsPK=".$this->VeranstaltungsPK." AND 1 ORDER BY CONCAT(BeginnDatum,' ',BeginnUhrzeit)";
if($oRes=$this->oSystem->oDB->goQuery($sQuery))
{
$oTPLD=$this->oSystem->goGetTPLParser($this->msTPLPath."kategorisiert.pgm.tpl");
$asPGMInfo=$oRes->gaaGetAllRecords();
$oTPLD->gbSetValue("KATEGORIE",$asType["Name"]);
$oTPLD->gbSetValue("STARTDATUM",$asPGMInfo[0]["START_DATUM"]);
foreach($asPGMInfo as $sKey=>$asPGM)
{
$lProgrammPK=$asPGM["ProgrammPK"];
$lVerfuegbar=false;
$oGeb=$this->oSystem->oDB->goGetRecord("SELECT SUM(KartenNormal+KartenRabattiert) as GEB FROM tdAnmeldungenProgrammPunkte,tdAnmeldungen WHERE tdAnmeldungen.AnmeldungPK=tdAnmeldungenProgrammPunkte.AnmeldungPK AND IFNULL(tdAnmeldungen.DeleteDate,-1)=-1 and ProgrammPK=".$lProgrammPK);
if($asPGM["Kontingent"]=="__false__")
$asPGMInfo[$sKey]["Verguegbar"]=WORT_FUER_UNLIMITERT;
else
{
$lVerfuegbar=$asPGM["Kontingent"]-$oGeb->GEB;
$asPGMInfo[$sKey]["Verguegbar"]=$lVerfuegbar;
}
if($lVerfuegbar!==false)
{
if($lVerfuegbar<=0)
{
$asPGMInfo[$sKey]["Verguegbar"]="0";
$asPGMInfo[$sKey]["AnzahlNInput"]=WORT_FUER_AUSGEBUCHT;
$asPGMInfo[$sKey]["AnzahlRInput"]=WORT_FUER_AUSGEBUCHT;
}
}
if(isset($_SESSION["neueanmeldung"]["karten"][$lProgrammPK]["RABATTIERT"]))
$asPGMInfo[$sKey]["ANZAHLKARTENR"]=$_SESSION["neueanmeldung"]["karten"][$lProgrammPK]["RABATTIERT"];
else
$asPGMInfo[$sKey]["ANZAHLKARTENR"]="";
if(isset($_SESSION["neueanmeldung"]["karten"][$lProgrammPK]["NORMAL"]))
$asPGMInfo[$sKey]["ANZAHLKARTENN"]=$_SESSION["neueanmeldung"]["karten"][$lProgrammPK]["NORMAL"];
else
$asPGMInfo[$sKey]["ANZAHLKARTENN"]="";
$asPGMInfo[$sKey]["Summe"]=$_SESSION["neueanmeldung"]["karten"][$lProgrammPK]["Summe"];
}
$oTPLD->gbSetBlock("programm",$asPGMInfo);
$asProgrammDaten[]["daten"]=$oTPLD->gsParse();
unset($oTPLD);
}
else
echo mysql_error();
}
$oTPL->gbSetBlock("programm",$asProgrammDaten);
$oTPL->gbSetValue("GesamtSumme",number_format($_SESSION["neueanmeldung"]["gesamtsumme"],2,",","."));
$oTPL->gbSetValue("__save__",$this->oSystem->oSiteNavi->gsGetURL($this->msVeranstaltungsKey,array("Veranstaltung","Auswahl")));
return $oTPL->gsParse();
}
function glGetCountOrder()
{
$lSumme=0;
//test
if(is_array($_SESSION["neueanmeldung"]["karten"]))
foreach($_SESSION["neueanmeldung"]["karten"] as $sKey=>$asPGM)
{
if(isset($asPGM["NORMAL"])&&$asPGM["NORMAL"]>0)
{
$lSumme+=$asPGM["NORMAL"];
}
if(isset($asPGM["RABATTIERT"])&&$asPGM["RABATTIERT"]>0)
{
$lSumme+=$asPGM["RABATTIERT"];
}
}
return $lSumme;
}
}