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; } }