oSystem=&$oSystem; $this->msTPLPath=CURRDIR."apps/veranstaltung/termin/tpl/"; $this->mlUserPK=$this->oSystem->oUser->oUserData->UserPK; } function gsRender($asParams) { $oTPL=$this->oSystem->goGetTPLParser($this->msTPLPath."main.tpl"); $oTPL->gbSetValue("menu",$this->gsGetMenu($asParams[0]==""?"ProgrammPunkte":$asParams[0])); if(is_array($asParams)) $sAction=strtolower(array_shift($asParams)); switch($sAction) { default: case "programmpunkte": $oTPL->gbSetContent($this->msView($asParams)); break; case "neuerprogrammpunkt": $oTPL->gbSetContent($this->msNew($asParams)); break; } return $oTPL->gsParse(); } function gsGetMenu($sCurrent) { $oMenu=new CMiniMenu($this->oSystem,"Veranstaltung",$sCurrent); $asData["auftraege"] =$oMenu->gsGetButton($this->__addAction(array("NeuerProgrammPunkt")),"Neuer Programmpunkt"); $asData["dienste"] =$oMenu->gsGetButton($this->__addAction(array("ProgrammPunkte")),"Programmpunkte"); return $oMenu->gsGetMenu($asData,150); } function msNew($asParams) { if(is_array($asParams)) $sAction=strtolower(array_shift($asParams)); switch($sAction) { default: return $this->msNewForm(); case "speichern": return $this->msSave(); } } function msNewForm() { return $this->gsEditor($this->oSystem->oSiteNavi->gsGetURL($this->msClass,$this->__addAction(array("NeuerProgrammPunkt","Speichern"))),$this->gasGetEmpty()); } function gasGetEmpty() { $as["ProgrammPunktName"] =$_SESSION["neueveranstaltung"]["title"]; $as["PreisRabattiert"] =$_SESSION["neueveranstaltung"]["title"]; $as["PreisNormal"] =$_SESSION["neueveranstaltung"]["title"]; if($lTypePK=$this->oSystem->oClientData->gvGetVariable("TypePK",false)) { $oR=$this->oSystem->oDB->goQuery("SELECT TypePK as Value,Name AS Anzeige,IF(TypePK='".$lTypePK."','selected','') as PreSelected FROM tdProgrammPunktTypen ORDER BY Name"); } else $oR=$this->oSystem->oDB->goQuery("SELECT TypePK as Value,Name AS Anzeige,'' as PreSelected FROM tdProgrammPunktTypen ORDER BY Name"); $asData=$oR->gaaGetAllRecords(); $as["programmtyp"]=$this->oSystem->oUI->gsGetSelectBox($asData,"__programmPunkt[TypePK]",array("class"=>"transpSelect","style"=>"width:150")); $as["PGMBeginnUhrzeit"] =""; $as["PGMBeginnDatum"] =""; $as["PGMEndeUhrzeit"] =""; $as["PGMEndeDatum"] =""; $as["ProgrammPunktName"] =""; $as["PreisRabattiert"] =""; $as["PreisNormal"] =""; $as["Kontingent"] =""; return $as; } function gsEditor($sSaveURL,$asData) { $oTPL=$this->oSystem->goGetTPLParser($this->msTPLPath."editor.tpl"); $oTPL->gbSetValue("save",$sSaveURL); $oTPL->gbSetValArray($asData); return $oTPL->gsParse(); } function setRFHoch() { if($lProgrammPK=$this->oSystem->oClientData->gvGetVariable("ProgrammPK",false)) { // aktuelles holen: if($oProgramm=$this->oSystem->oDB->goGetRecord("SELECT * FROM tdProgrammPunkte WHERE ProgrammPK=".$lProgrammPK." AND VeranstaltungsPK=".$this->VeranstaltungsPK."")) { if($oPrev=$this->oSystem->oDB->goGetRecord("SELECT * FROM tdProgrammPunkte WHERE TypePK=".$oProgramm->TypePK." AND IFNULL(DeleteDate,-1)=-1 AND VeranstaltungsPK=".$this->VeranstaltungsPK." AND ReihenFolge<".$oProgramm->ReihenFolge)) { $this->oSystem->oDB->goUpdate("tdProgrammPunkte","ReihenFolge=".$oProgramm->ReihenFolge,"ProgrammPK=".$oPrev->ProgrammPK); $this->oSystem->oDB->goUpdate("tdProgrammPunkte","ReihenFolge=".$oPrev->ReihenFolge,"ProgrammPK=".$oProgramm->ProgrammPK); } } } } function setRFRunter() { if($lProgrammPK=$this->oSystem->oClientData->gvGetVariable("ProgrammPK",false)) { // aktuelles holen: if($oProgramm=$this->oSystem->oDB->goGetRecord("SELECT * FROM tdProgrammPunkte WHERE ProgrammPK=".$lProgrammPK." AND VeranstaltungsPK=".$this->VeranstaltungsPK."")) { // vorheriges holen if($oPrev=$this->oSystem->oDB->goGetRecord("SELECT * FROM tdProgrammPunkte WHERE TypePK=".$oProgramm->TypePK." AND ReihenFolge>".$oProgramm->ReihenFolge." AND IFNULL(DeleteDate,-1)=-1 AND VeranstaltungsPK=".$this->VeranstaltungsPK." ORDER BY ReihenFolge ASC ")) { $this->oSystem->oDB->goUpdate("tdProgrammPunkte","ReihenFolge=".$oProgramm->ReihenFolge,"ProgrammPK=".$oPrev->ProgrammPK); $this->oSystem->oDB->goUpdate("tdProgrammPunkte","ReihenFolge=".$oPrev->ReihenFolge,"ProgrammPK=".$oProgramm->ProgrammPK); } } } } function msView($asParams) { if(is_array($asParams)) $sAction=strtolower(array_shift($asParams)); switch($sAction) { case "rfhoch": $this->setRFHoch(); break; case "rfrunter": $this->setRFRunter(); break; } $oTPL=$this->oSystem->goGetTPLParser($this->msTPLPath."liste.main.tpl"); $oTPL->gbSetValue("RFHoch",$this->oSystem->oSiteNavi->gsGetURL($this->msClass,$this->__addAction(array("ProgrammPunkte","RFHoch")))); $oTPL->gbSetValue("RFRunter",$this->oSystem->oSiteNavi->gsGetURL($this->msClass,$this->__addAction(array("ProgrammPunkte","RFRunter")))); $oTPL->gbSetValue("AddTo",$this->oSystem->oSiteNavi->gsGetURL($this->msClass,$this->__addAction(array("NeuerProgrammPunkt")))); $asTypen=array(); $sQuery="SELECT tdProgrammPunktTypen.Name,tdProgrammPunktTypen.TypePK,date_format(tdProgrammPunkte.BeginnDatum,'%d.%m.%y') as DatumKat 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(); } else echo mysql_error(); $sKey=0; foreach($asTypen as $asType) { $sQuery="SELECT *, IF(IFNULL(Kontingent,-1)=-1 || Kontingent=0,'unbegrenzt',CONCAT(Kontingent,'   ')) as Kontingent, TIME_FORMAT(BeginnUhrzeit,'%H:%i') as START_UHRZEIT, (IFNULL(PreisNormal,0)) as PreisNormal, (IFNULL(PreisRabattiert,0)) as PreisRabattiert, IF(IFNULL(EndeDatum,-1)=-1,'offen',CONCAT('bis ',IF(EndeDatum=BeginnDatum,'',date_format(EndeDatum,'%d.%m.%Y')),TIME_FORMAT(EndeUhrzeit,'%H:%i'))) as ENDEDATUM, IF( PreisRabattiert=0,'gratis', IF(IFNULL(PreisRabattiert,-1)=-1,'n/a', CONCAT(REPLACE(PreisRabattiert,'.',','),' €'))) as PreisRabattiertView, IF(IFNULL(PreisRabattiert,-1)!=-1, CONCAT(''), '') as AnzahlRInput, IF(IFNULL(PreisNormal,-1)!=-1, CONCAT(''), '') as AnzahlNInput, IF( PreisNormal=0,'gratis', IF(IFNULL(PreisNormal,-1)=-1,'n/a', CONCAT(REPLACE(PreisNormal,'.',','),' €'))) as PreisNormalView FROM tdProgrammPunkte WHERE tdProgrammPunkte.TypePK=".$asType["TypePK"]." AND VeranstaltungsPK=".$this->VeranstaltungsPK." AND 1 ORDER BY ReihenFolge"; if($oRes=$this->oSystem->oDB->goQuery($sQuery)) { $oTPLD=$this->oSystem->goGetTPLParser($this->msTPLPath."kategorisiert.pgm.tpl"); $oTPLD->gbSetValue("KATEGORIE",$asType["Name"]); $oTPLD->gbSetValue("TypePK",$asType["TypePK"]); $oTPLD->gbSetValue("DatumKat",$asType["DatumKat"]); $asPGMInfo=$oRes->gaaGetAllRecords(); foreach($asPGMInfo as $sKey=>$asPGM) { $asPGMInfo[$sKey]["Name"]=$this->msSplitString($asPGM["Name"],50); } $oTPLD->gbSetBlock("programm",$asPGMInfo); $asProgrammDaten[]["daten"]=$oTPLD->gsParse(); unset($oTPLD); } else echo mysql_error(); } $oTPL->gbSetBlock("programm",$asProgrammDaten); return $oTPL->gsParse(); } function getTermin($asSet) { $asDatum=explode(".",$asSet); if(sizeof($asDatum)<3) $asDatum[2]=date("Y"); $asDatum=array_reverse($asDatum); return $this->oSystem->oDB->gsEscapeString(join("-",$asDatum)); } function msSave() { if($asPGM=$this->oSystem->oClientData->gvGetVariable("__programmPunkt",false)) { $lMax=$this->oSystem->oDB->gsGetFieldValue("tdProgrammPunkte","MaxR","TypePK=".$asPGM["TypePK"]." AND VeranstaltungsPK=".$this->VeranstaltungsPK,"MAX(ReihenFolge) AS MaxR"); $asInsert["Name"] =$this->oSystem->oDB->gsEscapeString($asPGM["ProgrammPunktName"]); $asInsert["ReihenFolge"] =$lMax+1; $asInsert["TypePK"] =$asPGM["TypePK"]; $asInsert["BeginnDatum"] =$this->getTermin($asPGM["BeginnDatum"]); $asInsert["BeginnUhrzeit"] =$this->oSystem->oDB->gsEscapeString($asPGM["BeginnUhrzeit"]); $asInsert["EndeDatum"] =$asPGM["EndeDatum"]==""?"NULL":$this->getTermin($asPGM["EndeDatum"]); $asInsert["EndeUhrzeit"] =$asPGM["EndeUhrzeit"]==""?"NULL":$this->oSystem->oDB->gsEscapeString($asPGM["EndeUhrzeit"]); $asInsert["PreisRabattiert"] =$asPGM["PreisRabattiert"]==""?"NULL":$this->oSystem->oDB->gsEscapeString(CMoney::Betrag2Double($asPGM["PreisRabattiert"])); $asInsert["PreisNormal"] =$asPGM["PreisNormal"]==""?"NULL":$this->oSystem->oDB->gsEscapeString(CMoney::Betrag2Double($asPGM["PreisNormal"])); $asInsert["Kontingent"] =$asPGM["Kontingent"]==""?"NULL":$this->oSystem->oDB->gsEscapeString($asParams["Kontingent"]); $asInsert["GratisForACV"] =$this->oSystem->oDB->gsEscapeString($asPGM["GratisForACV"]==-1?"-1":"0"); $asInsert["CreateDate"] ="now()"; $asInsert["Creator"] =$this->mlUserPK; $asInsert["VeranstaltungsPK"] =$this->VeranstaltungsPK; if($oRes=$this->oSystem->oDB->goInsertArray("tdProgrammPunkte",$asInsert)) { return "Wurde gespeichert"; } else { return "Konnte nicht gespeichert werden"; } } else return $this->msView(); } function msSplitString($sString,$sCount) { if(strlen($sString)<$sCount) return $sString; $asData=explode(" ",$sString); $sLine=""; while($sWord=array_shift($asData)) { if(strlen($sLine.$sWord)<=$sCount) { $sLine.=$sWord." "; } else { $asReturn[]=$sLine; $sLine=$sWord." "; } } if($sLine!="") $asReturn[]=$sLine; return join("
",$asReturn); } }