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