";
echo "
Die Suche nach ".$query." ergab ".$resp["items"][0]["resultSetCount"]." Teffer
";
$queryresult = $resp["items"];
foreach ($resp[items][0][items] as $produkt) {
echo "
";
}
echo "
";
echo "";
}
/**
* Beispiel für eine Navigation, die Termine jeweils eines Monats anbietet.
* StattBuchung benötigt immer einen Zeitraum von, bis im ISO-FORMAT
* Mit dieser Methode wird eine Abstraktion auf Ebenen von Monaten erreicht.
*
* Die Methode nutzt das HTML-Template 'nav_liste.inc'
* Für die Darstellung des Dezember 2018 werden folgende Parameter übergeben:
* - "monat_name" => 'Dezember' (Abhähngig von der Server-Locale),
* - "monat_down" => 11,
* - "jahr_down" => 2018,
* - "monat_up" => 1,
* - "jahr_up" => 2019
*/
function renderMonatNavigation($start) {
date_default_timezone_set('Europe/Berlin');
$akt = $start->getTimestamp();
$start->sub(new DateInterval('P1M'));
$ts =$start->getTimestamp();
$start->add(new DateInterval('P2M'));
$tsUp =$start->getTimestamp();
$params=array(
"monat_name" => strftime('%B',$akt),
"monat_down" => strftime('%m',$ts),
"jahr_down" => strftime('%G',$ts),
"monat_up" => strftime('%m',$tsUp),
"jahr_up" => strftime('%G',$tsUp)
);
$viewRow = new Template($params, templatePath);
echo $viewRow->render('nav_liste.inc');
}
/**
* Darstellung einer einfach Suchbox im oberen Seitenbereich.
* Die Darstellung wird im Template searchbox.inc erzeugt.
* Die Parametrisierung erfolgt in der HTML-Datei.
* Im einfachsten Fall wird nur ein Query-String übergeben.
* Es können zudem die Optionen von, bis, schlagwort, eventtyp gesetzt werden.
*
*/
function renderSearchBox() {
$params=array();
date_default_timezone_set('Europe/Berlin');
$viewRow = new Template($params, templatePath);
echo $viewRow->render('searchbox.inc');
}
function renderSuccess() {
$params=array();
date_default_timezone_set('Europe/Berlin');
$viewRow = new Template($params, templatePath);
echo $viewRow->render('success.inc');
}
/**
* Darstellung des Anmeldeformulars für eine Veranstaltung.
* Die Validierung der Felder ist in der Template-Datei zu realisieren.
* Falls eine online-Zahlung angeboten werden soll muss diese selbst implementiert werden.
* Erst nach erfolgter Zahlung dürfen die Daten an StattBuchung übermittelt werden.
*
*/
function renderAnmeldeformular($resp, $sessionInfo, $paypal, $step) {
$ep = $resp;
date_default_timezone_set('Europe/Berlin');
$viewRow = new Template($ep, templatePath);
$viewRow->properties['freitn'] =$ep["maxtn"]-$ep["tn"];
$viewRow->properties['von'] = new DateTime($ep["von"]);
$viewRow->properties['bis'] = new DateTime($ep["bis"]);
$viewRow->properties['paypal'] = $paypal;
$viewRow->properties['step'] = $step;
echo $viewRow->render('anmeldeformular.inc');
}
function renderTerminliste($resp, $sessionInfo, $query, $templatePrefix, $swlist) {
date_default_timezone_set('Europe/Berlin');
$view = new Template($swlist, templatePath);
echo $view->render($templatePrefix.'_head.inc');
foreach ($resp[items][0][items] as $ep) {
if($odd == true) {
$ep['odd_even'] = 'odd';
$odd = false;
} else {
$ep['odd_even'] = 'even';
$odd = true;
}
$viewRow = new Template($ep, templatePath);
if(is_int($ep["maxtn"])) {
$viewRow->properties["freitn"]=$ep["maxtn"]-$ep["tn"];
} else {
$viewRow->properties["freitn"]=99-$ep["tn"];
$viewRow->properties["maxtn"]=99;
}
$viewRow->properties['von'] = new DateTime($ep["von"]);
$viewRow->properties['bis'] = new DateTime($ep["bis"]);
echo $viewRow->render($templatePrefix.'_row.inc');
}
echo $view->render($templatePrefix.'_foot.inc');
}
function sendAnmeldung($id, $sessionInfo, $apikey, $oidang, $verkaufstelle, $zahlungsart, $postdata) {
date_default_timezone_set('Europe/Berlin');
$gebdate = new DateTime( $postdata['geburtsdatum']);
$params=array(
"oid" => $postdata['de_stattbuchung_event_Modul'],
"anrede"=>$postdata['anrede'],
"vorname"=>$postdata['vorname'],
"nachname"=>$postdata['nachname'],
"strasse"=>$postdata['strasse'],
"plz"=>$postdata['plz'],
"ort"=>$postdata['ort'],
"email"=>$postdata['email'],
"telefon"=>$postdata['telefon'],
// "institution"=>$postdata['institution'],
"geburtsdatum"=>$gebdate->format(DateTime::ATOM),
"de_bidat_av_Profiltyp_geburtsort"=>$postdata['geburtsort'],
"kommentar"=>$postdata['kommentar'],
"de_stattbuchung_event_Modul"=>$postdata['de_stattbuchung_event_Modul'],
"de_stattbuchung_Kanal"=>$apikey,
"de_stattbuchung_Verkaufsstelle"=>$verkaufstelle,
"systems_sdw_fi_Zahlungsart"=>$zahlungsart,
"systems_sdw_hr_Angestellter"=>$oidang
);
foreach ($postdata as $key => $value) {
if(strpos($key, "de_stattbuchung_Teilnehmerart_") === 0) {
$params[$key] = $value;
}
}
$resp=post($sessionInfo, opcAddAnmeldung, $params, "{}", $debug) ;
if($resp['beschreibung'] == 'OK') {
echo "Herzlichen Dank für Ihre Anmeldung
";
echo "Sie sollten in Kürze eine Nachricht über die Adresse ".$postdata['email']." erhalten.
";
} else {
echo "Ups
";
echo "Bei der Anmeldung ist etwas schief gelaufen, bitte versuchen Sie es erneut
";
echo "
".$resp['beschreibung']."";
}
return $resp;
}
function renderTerminDetail($resp, $sessionInfo, $showmap, $cssid) {
$ep = $resp;
//var_dump($resp);
date_default_timezone_set('Europe/Berlin');
$view = new Template($ep, templatePath);
$view->properties['cssid'] = $cssid;
if(is_int($ep["maxtn"])) {
$view->properties['freitn'] =$ep["maxtn"]-$ep["tn"];
} else {
$view->properties['freitn'] =99-$ep["tn"];
$view->properties['maxtn'] =99;
}
$view->properties['von'] = new DateTime($ep["von"]);
$view->properties['bis'] = new DateTime($ep["bis"]);
$view->properties['validFrom'] = new DateTime($ep["validFrom"]);
$view->properties['showmap'] = $showmap;
echo $view->render('termindetail.inc');
}
function renderTerminDetailListenansicht($resp, $sessioninfo) {
echo "";
if($resp[items][0][itemCount]==0) {
echo "
Ihre Anfrage hat keine Termine ergeben.
";
} else {
$odd = true;
foreach ($resp[items][0][items] as $termin) {
if($odd == true) {
$termin['odd_even'] = 'odd';
$odd = false;
} else {
$termin['odd_even'] = 'even';
$odd = true;
}
renderTerminDetail($termin, $sessionInfo, false, 'bidat_list');
}
}
echo "
";
}
function fetchTreffpunkt($id, $sessionInfo) {
$params=array("oid" => $id);
$treffpunkt=post($sessionInfo, opcFetchTreffpunkt, $params, "{}", $debug) ;
return $treffpunkt;
}
/**
* Lädt die Informationen zu einem Termin von StattBuchung
*
*/
function fetchTermindetail($id, $sessionInfo, $apikey, $verkaufstelle) {
$params=array(
"oid" => $id,
"de_stattbuchung_event_Modul"=>$id,
"de_stattbuchung_Verkaufsstelle"=>$verkaufstelle,
"de_stattbuchung_Kanal"=>$apikey
);
$resp=post($sessionInfo, opcFetchTermindetail, $params, "{}", $debug) ;
return $resp;
}
/**
* Main.
*
*/
try {
$sessionInfo=login($ini['host'], $ini['user'], $ini['psw'], $debug);
date_default_timezone_set('Europe/Berlin');
//$resp=get($sessionInfo, opcObjectlistProdukt, $params, $debug) ;
$treffpunktid = $_GET['treffpunkt'];
$registerid = $_GET['register'];
$modulid = $_GET['modul'];
$modultermine = $_GET['modultermine'];
$formid = $_GET['form'];
$stichwortkey = $_GET['stichwort'];
$monat = $_GET['monat'];
$jahr = $_GET['jahr'];
$maxResult = $_GET['maxResultLength'];
$teaser = $_GET['teaser'];
$viewStyle = $_GET['style'];
$verkaufstelle = $ini['de_stattbuchung_Verkaufsstelle'];
$zahlungsart = $ini['systems_sdw_fi_Zahlungsart'];
$view = new Template(array(), templatePath);
if($teaser > 0) {
$view->properties['bodyid']="_teaser";
}
$view->title=$ini["seitentitel"];
if(is_null($ini["css"])) $view->properties['css'] = 'bidat.css';
else $view->properties['css'] = $ini["css"];
echo $view->render('header.inc');
if ($ini['show_stichwort_selector'] == true) {
$params=array("oid" => "0",
"de_stattbuchung_Kanal"=>$ini["apikey"],
"de_stattbuchung_event_Typ"=>$ini["de_stattbuchung_event_Typ"]);
if($jsonString == NULL) $jsonString = "{}";
$swlist=post($sessionInfo, opcStichwortlistByKanal, $params, $jsonString, $debug) ;
} else {
$swlist = NULL;
}
if($treffpunktid > 100) {
fetchTreffpunkt($treffpunktid, $sessionInfo);
} else if( $_GET['success']==true) {
renderSuccess();
}
else if($registerid == 872) {
$resp = sendAnmeldung($registerid, $sessionInfo, $ini['apikey'], $ini['oid_ang'], $verkaufstelle, $zahlungsart, $_POST);
if($ini['paypal'] == true) {
header('Content-type: application/json');
echo json_encode($resp);
} else {
renderSuccess();
}
} else if ($modulid > 100) {
renderTerminDetail(fetchTermindetail($modulid, $sessionInfo, $ini['apikey'], $verkaufstelle), $sessionInfo, TRUE, 'eb-event-page');
} else if ($formid > 100) {
$paypal = false;
if($ini['paypal']== true) $paypal = true;
renderAnmeldeformular(fetchTermindetail($formid, $sessionInfo, $ini['apikey'], $verkaufstelle), $sessionInfo, $paypal, 1);
} else if($treffpunktid > 100) {
$paypal = false;
if($ini["paypal"]=='true') $paypal = true;
renderAnmeldeformular($registerid, $sessionInfo, $paypal);
} else if($teaser > 0) {
$params=array("oid" => "0",
"de_stattbuchung_Kanal"=>$ini["apikey"],
"de_stattbuchung_event_Typ"=>$ini["de_stattbuchung_event_Typ"],
"maxResultLength"=>$teaser);
$resp=post($sessionInfo, opcCalendarByChannel, $params, $jsonString, $debug) ;
renderTerminliste($resp, $sessionInfo, '','teaser', NULL);
} else {
if ($ini['show_searchbox']==true) {
renderSearchBox();
}
$query =$_GET['query'];
$query=htmlspecialchars($query);
$params=array("oid" => "0",
"de_stattbuchung_Kanal"=>$ini["apikey"],
"de_stattbuchung_event_Typ"=>$ini["de_stattbuchung_event_Typ"]);
if($query !== '') {$params['muster']=$query;}
if($modultermine >0) {$params['de_stattbuchung_Produkt']=$modultermine;}
if($maxResult > 0) {
$params['maxResultLength'] = $maxResult;
} else {
$params['maxResultLength'] = 100;
}
if($stichwortkey != 'NULL') {
$params['de_stattbuchung_Stichwort_key'] = $stichwortkey;
}
if(!is_null($monat)) {
if(is_null($jahr)) {
$jahr = date ('Y', time());
}
if ($monat >12) {
$jahr++;
$monat = $monat-12;
} else if ($monat ==0) {
$jahr--;
$monat = 12;
}
$start = new DateTime( '1.'.$monat.'.'.$jahr);
$ende = new DateTime( '1.'.$monat.'.'.$jahr);
$ende->add(new DateInterval('P1M'));
$ende->sub(new DateInterval('P1D'));
$params['von'] = $start->format(DateTime::ATOM);
$params['bis'] = $ende->format(DateTime::ATOM);
}
$jsonString ="{oid:0}";
$resp=post($sessionInfo, opcCalendarByChannel, $params, $jsonString, $debug) ;
if($monat > 0) renderMonatNavigation($start);
if(is_null($stichwortkey) || $viewStyle == 'table') renderTerminliste($resp, $sessionInfo, $query, 'table', $swlist);
else renderTerminDetailListenansicht($resp, $sessioninfo);
}
// Ausloggen nicht vergessen!
logoff($sessionInfo, $debug);
} catch (Exception $e) {
echo 'Exception: '.$e->getMessage()." code: ".$e->getCode()."
";
}
echo $view->render('footer.inc');
?>