0 ){
$_SESSION['REFERER'] = $_GET['referer'];
}
$REFERER = &$_SESSION['REFERER'];
// Die Session beenden, wenn sich die IP ändert oder
// wenn die Zeit der Session abgelaufen ist
//
if ( isset($_SESSION['IP']) && $_SESSION['IP'] != $_GET['webiscoip'] ){
$AUTOMATIC_LOGOUT = true;
session_regenerate_id();
} else if ( $KUNDE->exists() && isset($_SESSION['TIMEOUT']) && $_SESSION['TIMEOUT'] < time() ){
$AUTOMATIC_LOGOUT = true;
}
$_SESSION['IP'] = @$_GET['webiscoip'];
$_SESSION['TIMEOUT'] = time() + $session_timeout_minuten*60;
// Warenkorb inizialisieren
if ( !isset($_SESSION['WARENKORB']) || !is_object($_SESSION['WARENKORB']) ){
$WARENKORB = new Warenkorb();
$_SESSION['WARENKORB'] = $WARENKORB;
}
$WARENKORB = &$_SESSION['WARENKORB'];
// Konfiguration erzeugen
if ( !isset($_SESSION['CONFIG']) || !is_object($_SESSION['CONFIG']) || $AUTOMATIC_LOGOUT ){
$CONFIG = Config::getNewInstance();
$_SESSION['CONFIG'] = $CONFIG;
}
$CONFIG = &$_SESSION['CONFIG'];
//$CONFIG = Config::getNewInstance();
//$_SESSION['CONFIG'] = $CONFIG;
// Fahrzeug inizialisieren
if ( !isset($_SESSION['FAHRZEUG']) || !is_object($_SESSION['FAHRZEUG']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch das evtl. ausgewählte Fahrzeug löschen
$FAHRZEUG = new Fahrzeug();
$_SESSION['FAHRZEUG'] = $FAHRZEUG;
$FAHRZEUGE = array();
$_SESSION['FAHRZEUGE'] = $FAHRZEUGE;
}
$FAHRZEUG = &$_SESSION['FAHRZEUG'];
$FAHRZEUGE = &$_SESSION['FAHRZEUGE']; // wenns mehrere zur Auswahl gibt nach KBA-Nummer-Eingabe
// Motor inizialisieren
if ( !isset($_SESSION['MOTOR']) || !is_object($_SESSION['MOTOR']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch den evtl. ausgewählten Motor löschen
$MOTOR = new Motor();
$_SESSION['MOTOR'] = $MOTOR;
$MOTOREN = array();
$_SESSION['MOTOREN'] = $MOTOREN;
}
$MOTOR = &$_SESSION['MOTOR'];
$MOTOREN = &$_SESSION['MOTOREN']; // wenns mehrere zur Auswahl gibt nach Motorcode-Eingabe
// Artikelcache inizialisieren
if ( !isset($_SESSION['ARTIKELCACHE']) || !is_object($_SESSION['ARTIKELCACHE']) || $AUTOMATIC_LOGOUT ){
$ARTIKELCACHE = new ArtikelCache();
$_SESSION['ARTIKELCACHE'] = $ARTIKELCACHE;
}
$ARTIKELCACHE = &$_SESSION['ARTIKELCACHE'];
//$ARTIKELCACHE->clear(); // wenn der Cache sich immer wieder cleared, gehen keine CSGs, da die zwingend beim Klick im cache sein müssen!
// Artikelstamm erzeugen
if ( !isset($_SESSION['ARTIKELSTAMM']) || !is_object($_SESSION['ARTIKELSTAMM']) ){
$ARTIKELSTAMM = Artikelstamm::instance();
$_SESSION['ARTIKELSTAMM'] = $ARTIKELSTAMM;
}
$ARTIKELSTAMM = &$_SESSION['ARTIKELSTAMM'];
// TecDoc-Objekt erzeugen
if ( !isset($_SESSION['TECDOC']) || !is_object($_SESSION['TECDOC']) ){
$TECDOC = new TecDoc();
$_SESSION['TECDOC'] = $TECDOC;
}
$TECDOC = &$_SESSION['TECDOC'];
// das Bestellungsobjekt wenn es eins gibt
if ( !isset($_SESSION['BESTELLUNG']) ){
$_SESSION['BESTELLUNG'] = null;
}
$BESTELLUNG = &$_SESSION['BESTELLUNG'];
// den Sectionpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION['SECTIONPATH']) || !is_array($_SESSION['SECTIONPATH']) ){
$_SESSION['SECTIONPATH'] = array();
}
$SECTIONPATH = &$_SESSION['SECTIONPATH'];
// den Baugruppenpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION[SESSION_BAUGRUPPENPATH]) ){
$_SESSION[SESSION_BAUGRUPPENPATH] = array();
}
$BAUGRUPPENPATH = &$_SESSION[SESSION_BAUGRUPPENPATH];
// die Webisco-Action in der Session merken für Widgetübergreifende abänderung in doAction()
if ( !isset($_SESSION['WEBISCOACTION']) ){
$_SESSION['WEBISCOACTION'] = '';
}
$WEBISCOACTION = &$_SESSION['WEBISCOACTION'];
// die Webisco-Parameter auch in der Session merken
if ( !isset($_SESSION['WEBISCOPARAMS']) ){
$_SESSION['WEBISCOPARAMS'] = array();
}
$WEBISCOPARAMS = &$_SESSION['WEBISCOPARAMS'];
$unserialize_no_classes = array('allowed_classes' => false);
// jetzt die relevanten Webisco-Parameter aus den GET-
// und POST-Parametern wiederherstellen
$WEBISCOPARAMS = array();
if ( isset($_GET['webiscoparams']) ){
// wenns nicht base64 enkodiert is, muss man stripslashes(stripslashes($serialized)) machen!
$phpserialized = base64_decode($_GET['webiscoparams']);
$unzipped = @gzuncompress($phpserialized);
if ( $unzipped != false ){
$phpserialized = $unzipped;
}
$WEBISCOPARAMS = @unserialize($phpserialized, $unserialize_no_classes);
if ( !is_array($WEBISCOPARAMS) ) {
// dann ist was schief gegangen, wieder ein Array herstellen!
$WEBISCOPARAMS = array();
}
}
// Parameter von der webisco.inc, die mit "webisco..." beginnen
$durchschleif_parameter = array();
$durchschleif_parameter['webiscopermalogin'] = WEBISCOPARAM_PERMALOGIN;
$durchschleif_parameter['webiscopermapasswort'] = WEBISCOPARAM_PERMAPASSWORT;
$durchschleif_parameter['webiscosearch'] = WEBISCOPARAM_WEBISCOSEARCH;
$durchschleif_parameter['webiscosearchoption'] = WEBISCOPARAM_WEBISCOSEARCH_OPTION;
$durchschleif_parameter['webiscopaymentcheck'] = WEBISCOPARAM_PAYMENT_CHECK;
$durchschleif_parameter['webiscopaymentcancel'] = WEBISCOPARAM_PAYMENT_CANCEL;
$durchschleif_parameter['webiscopaymentsystem'] = WEBISCOPARAM_PAYMENT_SYSTEM;
$durchschleif_parameter['webiscoartikelid'] = WEBISCOPARAM_ARTIKELID;
$durchschleif_parameter['webiscopaypaltoken'] = WEBISCOPARAM_PAYPALTOKEN;
$durchschleif_parameter['webiscopaymentsessionid'] = WEBISCOPARAM_PAYMENTSESSIONID;
foreach ( $durchschleif_parameter as $getparameter => $webiscoparam ){
if ( isset($_GET[$getparameter]) && (strlen($_GET[$getparameter]) > 0 || $webiscoparam == WEBISCOPARAM_WEBISCOSEARCH )){
$WEBISCOPARAMS[$webiscoparam] = $_GET[$getparameter];
switch ( $webiscoparam ){
case WEBISCOPARAM_PAYMENT_CHECK:
case WEBISCOPARAM_PAYMENT_CANCEL:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_ZAHLUNG;
break;
case WEBISCOPARAM_ARTIKELID:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SHOW_ARTIKEL;
break;
case WEBISCOPARAM_WEBISCOSEARCH:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SEARCH;
break;
}
}
}
if ( !isset($_SESSION[SESSION_WEBISCOSTATISTIK]) ){
$_SESSION[SESSION_WEBISCOSTATISTIK] = false;
}
$WEBISCOSTATISTIK = &$_SESSION[SESSION_WEBISCOSTATISTIK];
if ( isset($_GET[WEBISCOPARAM_WEBISCOSTATISTIK]) ){
$WEBISCOSTATISTIK = ($_GET[WEBISCOPARAM_WEBISCOSTATISTIK] == 'true');
}
// und noch alle POST-Variablen in die Websico-Params reinkopieren
foreach($_POST as $name => $value){
$WEBISCOPARAMS[$name] = $value;
}
$REFERER = &$_SESSION['REFERER'];
// Die Zeiten in Sekunden (muss auch in artikelcsv.php inizialisiert werden!)
$ZEITEN['tecdoc'] = 0;
$ZEITEN['cache'] = 0;
$ZEITEN['daemon'] = 0;
// Die aktuelle Action holen
$WEBISCOACTION = @$WEBISCOPARAMS[WEBISCOPARAM_ACTION];
// jetzt die externen Webisco-Parameter wiederherstellen
$webiscoextparams = array();
if ( isset($_GET['webiscoextparams']) ){
$webiscoextparams = stripslashes(stripslashes($_GET['webiscoextparams']));
$webiscoextparams = unserialize($webiscoextparams, $unserialize_no_classes);
}
$webiscoextscriptname = @$_GET['webiscoextscriptname'];
// ist das BR-Debug-Flag gesetzt?
// bei getWebiscoWidget() kann man im get-parameter-Array 'brdebug' => true mitgeben!
if ( isset($webiscoextparams['brdebug']) ){
$brdebug = boolval($webiscoextparams['brdebug']);
}
if ( !isset($brdebug) ){
$brdebug = false;
}
//einen File erzeugen, der zeigt, was gerade von einem Client requested wurde
if ( isset($_REQUEST['webiscowidget']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_'.$_REQUEST['webiscowidget'].'_'.rand();
} else if ( isset($_REQUEST['webiscowidgets']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_webiscowidgets_'.rand();
} else {
print404();
die();
}
$filehandle = fopen($active_file, 'w');
fwrite($filehandle, "action: $WEBISCOACTION\n");
foreach ( $WEBISCOPARAMS as $key => $value ){
//error_log("$key: $value");
fwrite($filehandle, "$key: $value\n");
}
fclose($filehandle);
$serialize_output = false;
$webisco_widget_array = array();
$output_array = array();
// de Buffer-ethode um alle Widget-Anfragen in ein extra String-Array-Feld zu packen
function saveOutput($buffer) {
global $output_array;
// Strings haben oft seltsame UTF-8-Zeichen, denn bei komischen Binärdaten (komische Whitespaces z.B. von TecDoc) gehen die Strings im Array kaputt sowohl bei serialize() als auch bei json_encode()
// base64 ginge alternativ aber da wird ja alles länger
// Unnötige Whitespaces, Zeilenumbrüche und Tabs entfernen
$buffer = preg_replace(['/>\s+', '/\s{2,}/', '/\n|\r/'], ['><', ' ', ''], $buffer);
$output_array[] = $buffer;
return '';
}
class WebiscoWidget {
public $name = '';
public $parameter = array();
}
// wurde ein spezieller Widget angefragt?
if ( isset($_REQUEST['webiscowidget']) ){
$widget = new WebiscoWidget();
$widget->name = strtolower(stripslashes(stripslashes($_REQUEST['webiscowidget'])));
if ( isset($_REQUEST['webiscowidgetparams']) ){
$tmpwidgetparams = stripslashes(stripslashes($_REQUEST['webiscowidgetparams']));
$tmpwidgetparams = @unserialize($tmpwidgetparams, $unserialize_no_classes);
if ( is_array($tmpwidgetparams) ){
foreach($tmpwidgetparams as $name => $value){
if ( is_string($value) ){
$widget->parameter[strtolower($name)] = strtolower($value);
} else if ( is_array($value) ){
$widget->parameter[strtolower($name)] = $value;
} else if ( is_int($value) ){
$widget->parameter[strtolower($name)] = $value;
}
}
}
}
$webisco_widget_array[] = $widget;
} else if ( isset($_REQUEST['webiscowidgets']) ){
$serialize_output = true;
$tmp_array = @unserialize($_REQUEST['webiscowidgets'], array('allowed_classes' => array('WebiscoWidget')));
if ( is_array($tmp_array) ){
foreach ( $tmp_array as $widget ){
if ( !is_object($widget) || get_class($widget) != 'WebiscoWidget' ){
return 'Es muss ein Array von WebiscoWidget-Objekten übergeben werden.';
} else {
$webisco_widget_array[] = $widget;
}
}
}
}
// nun alle Widgets der Reihe nach generieren
foreach ( $webisco_widget_array as $widget ){
if ( $serialize_output ){
ob_start('saveOutput');
}
if ( strlen($widget->name) == 0 ){
print404();
}
// Tabellen als
oder ?
$divtables = false;
if ( isset($widget->parameter[WIDGETPARAM_GRIDELEMENT]) ){
$divtables = ($widget->parameter[WIDGETPARAM_GRIDELEMENT] == 'div');
}
// wurde schon ein Fahrzeug übergeben?
// Dann laden wir das von TecDoc, aber nur wenns
// ein anderes ist als das aktuelle
if ( isset($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]) && $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] > 0 && (!isset($FAHRZEUG) || $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] != $FAHRZEUG->getID()) ){
$MOTOR = new Motor();
$FAHRZEUG = $TECDOC->getFahrzeugFromCarID($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
/* else if ( isset($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]) && $WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE] != $MOTOR->getMotorCode() ){
$MOTOR = $TECDOC->getMotorFromMotorCode($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
*/
switch ( $widget->name ) {
case WIDGET_INIT:
doAction();
break;
case WIDGET_SUCHE:
$option_exaktsuche = false;
if ( isset($widget->parameter[WIDGETPARAM_SUCHE_OPTION]) ){
$option_exaktsuche = ($widget->parameter[WIDGETPARAM_SUCHE_OPTION] == WIDGETPARAM_SUCHE_OPTION_EXAKTSUCHE);
}
printSuche($option_exaktsuche);
break;
case WIDGET_FAHRZEUG:
$permanent = false;
$details = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGANZEIGE_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_DETAIL:
$details = true;
break;
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_NORMAL:
default:
$details = false;
break;
}
}
printFahrzeugInfo($permanent, $details);
break;
case WIDGET_FAHRZEUGAUSWAHL:
$permanent = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_PERMANENT:
$permanent = true;
break;
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_NORMAL:
default:
$permanent = false;
break;
}
}
printFahrzeugAuswahl($permanent);
break;
case WIDGET_LOGIN:
printKundenBox();
break;
case WIDGET_NAVIGATION:
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT]) ){
switch ( $widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT] ){
case WIDGETPARAM_NAVIGATION_LAYOUT_LINE:
printRootLine();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TREE:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printTreeNavigation($angebote, $baugruppen);
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_STEPUP:
printUpButton();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TEXTLINKS:
printTextLinks();
break;
}
}
break;
case WIDGET_LINK:
if ( isset($widget->parameter[WIDGETPARAM_LINK_TYP]) ){
$text = @$widget->parameter[WIDGETPARAM_LINK_TYP_TEXT]; // das ist der text, der im Link stehen soll
if ( is_string($text) || $text == '' ){
$text = trim(strval($text));
$linktyp = strval($widget->parameter[WIDGETPARAM_LINK_TYP]);
switch ( $linktyp ){
case WIDGETPARAM_LINK_TYP_AGB:
printAGBButton($text);
break;
case WIDGETPARAM_LINK_TYP_ARTIKEL:
printArtikelButton(intval($widget->parameter[WIDGETPARAM_LINK_TYP_ARTIKEL_ID]), $text);
break;
case WIDGETPARAM_LINK_TYP_ALTOELVERORDNUNG:
printAltoelverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_BARRIEREFREIHEIT:
printBarriereFreiheitButton($text);
break;
case WIDGETPARAM_LINK_TYP_BATTERIEVERORDNUNG:
printBatterieverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_DATENSCHUTZ:
printDatenschutzButton($text);
break;
case WIDGETPARAM_LINK_TYP_IMPRESSUM:
printImpressumButton($text);
break;
case WIDGETPARAM_LINK_TYP_VERSANDBEDINGUNGEN:
printVersandbedingungenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WIDERRUFSBELEHRUNG:
printWiderrufsbelehrungButton($text);
break;
case WIDGETPARAM_LINK_TYP_REKLAMATIONEN:
printReklamationenButton($text);
break;
case WIDGETPARAM_LINK_TYP_ALTTEILPFAND:
printAltteilpfandButton($text);
break;
case WIDGETPARAM_LINK_TYP_STARTSEITE:
printStartseitenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WARENKORB:
printWarenkorbButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEANLEGEN:
printKundeAnlegenButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEBEARBEITEN:
printKundeBearbeitenButton($text);
break;
default:
break;
}
}
}
break;
case WIDGET_WARENKORB:
printWarenkorbInfo();
break;
case WIDGET_COPYRIGHT:
printCopyright();
break;
case WIDGET_HAUPTBEREICH:
showAction();
break;
case WIDGET_ARTIKELDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleArtikelDaten($format);
break;
case WIDGET_FAHRZEUGDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleFahrzeugDaten($format);
break;
case WIDGET_KATEGORIEPFAD:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printKategoriePfad($format);
break;
case WIDGET_KATEGORIEBAUM:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printKategorieBaum($angebote,$baugruppen);
break;
case WIDGET_SPRACHWAHL:
if ( isset($widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN]) ){
$sprachen = $widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN];
if ( is_array($sprachen) ){
printSprachwahl($sprachen);
}
}
break;
case WIDGET_ARTIKEL:
if ( isset($widget->parameter[WIDGETPARAM_ARTIKEL_ID]) ){
$artikelid = intval($widget->parameter[WIDGETPARAM_ARTIKEL_ID]);
if ( $artikelid > 0 ){
printArtikelFromID($artikelid);
}
}
break;
case WIDGET_KUNDEBEARBEITEN:{
include(includeDir().'kunde.inc.php');
editKunde(true);
}
break;
case WIDGET_SHOP:
{
doAction();
?>
0 ){
//error_log("server count = ".count($output_array));
//error_log(serialize($output_array));
//print(serialize($output_array));
print(json_encode($output_array));
}
}
@unlink($active_file);
?>
0 ){
$_SESSION['REFERER'] = $_GET['referer'];
}
$REFERER = &$_SESSION['REFERER'];
// Die Session beenden, wenn sich die IP ändert oder
// wenn die Zeit der Session abgelaufen ist
//
if ( isset($_SESSION['IP']) && $_SESSION['IP'] != $_GET['webiscoip'] ){
$AUTOMATIC_LOGOUT = true;
session_regenerate_id();
} else if ( $KUNDE->exists() && isset($_SESSION['TIMEOUT']) && $_SESSION['TIMEOUT'] < time() ){
$AUTOMATIC_LOGOUT = true;
}
$_SESSION['IP'] = @$_GET['webiscoip'];
$_SESSION['TIMEOUT'] = time() + $session_timeout_minuten*60;
// Warenkorb inizialisieren
if ( !isset($_SESSION['WARENKORB']) || !is_object($_SESSION['WARENKORB']) ){
$WARENKORB = new Warenkorb();
$_SESSION['WARENKORB'] = $WARENKORB;
}
$WARENKORB = &$_SESSION['WARENKORB'];
// Konfiguration erzeugen
if ( !isset($_SESSION['CONFIG']) || !is_object($_SESSION['CONFIG']) || $AUTOMATIC_LOGOUT ){
$CONFIG = Config::getNewInstance();
$_SESSION['CONFIG'] = $CONFIG;
}
$CONFIG = &$_SESSION['CONFIG'];
//$CONFIG = Config::getNewInstance();
//$_SESSION['CONFIG'] = $CONFIG;
// Fahrzeug inizialisieren
if ( !isset($_SESSION['FAHRZEUG']) || !is_object($_SESSION['FAHRZEUG']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch das evtl. ausgewählte Fahrzeug löschen
$FAHRZEUG = new Fahrzeug();
$_SESSION['FAHRZEUG'] = $FAHRZEUG;
$FAHRZEUGE = array();
$_SESSION['FAHRZEUGE'] = $FAHRZEUGE;
}
$FAHRZEUG = &$_SESSION['FAHRZEUG'];
$FAHRZEUGE = &$_SESSION['FAHRZEUGE']; // wenns mehrere zur Auswahl gibt nach KBA-Nummer-Eingabe
// Motor inizialisieren
if ( !isset($_SESSION['MOTOR']) || !is_object($_SESSION['MOTOR']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch den evtl. ausgewählten Motor löschen
$MOTOR = new Motor();
$_SESSION['MOTOR'] = $MOTOR;
$MOTOREN = array();
$_SESSION['MOTOREN'] = $MOTOREN;
}
$MOTOR = &$_SESSION['MOTOR'];
$MOTOREN = &$_SESSION['MOTOREN']; // wenns mehrere zur Auswahl gibt nach Motorcode-Eingabe
// Artikelcache inizialisieren
if ( !isset($_SESSION['ARTIKELCACHE']) || !is_object($_SESSION['ARTIKELCACHE']) || $AUTOMATIC_LOGOUT ){
$ARTIKELCACHE = new ArtikelCache();
$_SESSION['ARTIKELCACHE'] = $ARTIKELCACHE;
}
$ARTIKELCACHE = &$_SESSION['ARTIKELCACHE'];
//$ARTIKELCACHE->clear(); // wenn der Cache sich immer wieder cleared, gehen keine CSGs, da die zwingend beim Klick im cache sein müssen!
// Artikelstamm erzeugen
if ( !isset($_SESSION['ARTIKELSTAMM']) || !is_object($_SESSION['ARTIKELSTAMM']) ){
$ARTIKELSTAMM = Artikelstamm::instance();
$_SESSION['ARTIKELSTAMM'] = $ARTIKELSTAMM;
}
$ARTIKELSTAMM = &$_SESSION['ARTIKELSTAMM'];
// TecDoc-Objekt erzeugen
if ( !isset($_SESSION['TECDOC']) || !is_object($_SESSION['TECDOC']) ){
$TECDOC = new TecDoc();
$_SESSION['TECDOC'] = $TECDOC;
}
$TECDOC = &$_SESSION['TECDOC'];
// das Bestellungsobjekt wenn es eins gibt
if ( !isset($_SESSION['BESTELLUNG']) ){
$_SESSION['BESTELLUNG'] = null;
}
$BESTELLUNG = &$_SESSION['BESTELLUNG'];
// den Sectionpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION['SECTIONPATH']) || !is_array($_SESSION['SECTIONPATH']) ){
$_SESSION['SECTIONPATH'] = array();
}
$SECTIONPATH = &$_SESSION['SECTIONPATH'];
// den Baugruppenpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION[SESSION_BAUGRUPPENPATH]) ){
$_SESSION[SESSION_BAUGRUPPENPATH] = array();
}
$BAUGRUPPENPATH = &$_SESSION[SESSION_BAUGRUPPENPATH];
// die Webisco-Action in der Session merken für Widgetübergreifende abänderung in doAction()
if ( !isset($_SESSION['WEBISCOACTION']) ){
$_SESSION['WEBISCOACTION'] = '';
}
$WEBISCOACTION = &$_SESSION['WEBISCOACTION'];
// die Webisco-Parameter auch in der Session merken
if ( !isset($_SESSION['WEBISCOPARAMS']) ){
$_SESSION['WEBISCOPARAMS'] = array();
}
$WEBISCOPARAMS = &$_SESSION['WEBISCOPARAMS'];
$unserialize_no_classes = array('allowed_classes' => false);
// jetzt die relevanten Webisco-Parameter aus den GET-
// und POST-Parametern wiederherstellen
$WEBISCOPARAMS = array();
if ( isset($_GET['webiscoparams']) ){
// wenns nicht base64 enkodiert is, muss man stripslashes(stripslashes($serialized)) machen!
$phpserialized = base64_decode($_GET['webiscoparams']);
$unzipped = @gzuncompress($phpserialized);
if ( $unzipped != false ){
$phpserialized = $unzipped;
}
$WEBISCOPARAMS = @unserialize($phpserialized, $unserialize_no_classes);
if ( !is_array($WEBISCOPARAMS) ) {
// dann ist was schief gegangen, wieder ein Array herstellen!
$WEBISCOPARAMS = array();
}
}
// Parameter von der webisco.inc, die mit "webisco..." beginnen
$durchschleif_parameter = array();
$durchschleif_parameter['webiscopermalogin'] = WEBISCOPARAM_PERMALOGIN;
$durchschleif_parameter['webiscopermapasswort'] = WEBISCOPARAM_PERMAPASSWORT;
$durchschleif_parameter['webiscosearch'] = WEBISCOPARAM_WEBISCOSEARCH;
$durchschleif_parameter['webiscosearchoption'] = WEBISCOPARAM_WEBISCOSEARCH_OPTION;
$durchschleif_parameter['webiscopaymentcheck'] = WEBISCOPARAM_PAYMENT_CHECK;
$durchschleif_parameter['webiscopaymentcancel'] = WEBISCOPARAM_PAYMENT_CANCEL;
$durchschleif_parameter['webiscopaymentsystem'] = WEBISCOPARAM_PAYMENT_SYSTEM;
$durchschleif_parameter['webiscoartikelid'] = WEBISCOPARAM_ARTIKELID;
$durchschleif_parameter['webiscopaypaltoken'] = WEBISCOPARAM_PAYPALTOKEN;
$durchschleif_parameter['webiscopaymentsessionid'] = WEBISCOPARAM_PAYMENTSESSIONID;
foreach ( $durchschleif_parameter as $getparameter => $webiscoparam ){
if ( isset($_GET[$getparameter]) && (strlen($_GET[$getparameter]) > 0 || $webiscoparam == WEBISCOPARAM_WEBISCOSEARCH )){
$WEBISCOPARAMS[$webiscoparam] = $_GET[$getparameter];
switch ( $webiscoparam ){
case WEBISCOPARAM_PAYMENT_CHECK:
case WEBISCOPARAM_PAYMENT_CANCEL:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_ZAHLUNG;
break;
case WEBISCOPARAM_ARTIKELID:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SHOW_ARTIKEL;
break;
case WEBISCOPARAM_WEBISCOSEARCH:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SEARCH;
break;
}
}
}
if ( !isset($_SESSION[SESSION_WEBISCOSTATISTIK]) ){
$_SESSION[SESSION_WEBISCOSTATISTIK] = false;
}
$WEBISCOSTATISTIK = &$_SESSION[SESSION_WEBISCOSTATISTIK];
if ( isset($_GET[WEBISCOPARAM_WEBISCOSTATISTIK]) ){
$WEBISCOSTATISTIK = ($_GET[WEBISCOPARAM_WEBISCOSTATISTIK] == 'true');
}
// und noch alle POST-Variablen in die Websico-Params reinkopieren
foreach($_POST as $name => $value){
$WEBISCOPARAMS[$name] = $value;
}
$REFERER = &$_SESSION['REFERER'];
// Die Zeiten in Sekunden (muss auch in artikelcsv.php inizialisiert werden!)
$ZEITEN['tecdoc'] = 0;
$ZEITEN['cache'] = 0;
$ZEITEN['daemon'] = 0;
// Die aktuelle Action holen
$WEBISCOACTION = @$WEBISCOPARAMS[WEBISCOPARAM_ACTION];
// jetzt die externen Webisco-Parameter wiederherstellen
$webiscoextparams = array();
if ( isset($_GET['webiscoextparams']) ){
$webiscoextparams = stripslashes(stripslashes($_GET['webiscoextparams']));
$webiscoextparams = unserialize($webiscoextparams, $unserialize_no_classes);
}
$webiscoextscriptname = @$_GET['webiscoextscriptname'];
// ist das BR-Debug-Flag gesetzt?
// bei getWebiscoWidget() kann man im get-parameter-Array 'brdebug' => true mitgeben!
if ( isset($webiscoextparams['brdebug']) ){
$brdebug = boolval($webiscoextparams['brdebug']);
}
if ( !isset($brdebug) ){
$brdebug = false;
}
//einen File erzeugen, der zeigt, was gerade von einem Client requested wurde
if ( isset($_REQUEST['webiscowidget']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_'.$_REQUEST['webiscowidget'].'_'.rand();
} else if ( isset($_REQUEST['webiscowidgets']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_webiscowidgets_'.rand();
} else {
print404();
die();
}
$filehandle = fopen($active_file, 'w');
fwrite($filehandle, "action: $WEBISCOACTION\n");
foreach ( $WEBISCOPARAMS as $key => $value ){
//error_log("$key: $value");
fwrite($filehandle, "$key: $value\n");
}
fclose($filehandle);
$serialize_output = false;
$webisco_widget_array = array();
$output_array = array();
// de Buffer-ethode um alle Widget-Anfragen in ein extra String-Array-Feld zu packen
function saveOutput($buffer) {
global $output_array;
// Strings haben oft seltsame UTF-8-Zeichen, denn bei komischen Binärdaten (komische Whitespaces z.B. von TecDoc) gehen die Strings im Array kaputt sowohl bei serialize() als auch bei json_encode()
// base64 ginge alternativ aber da wird ja alles länger
// Unnötige Whitespaces, Zeilenumbrüche und Tabs entfernen
$buffer = preg_replace(['/>\s+', '/\s{2,}/', '/\n|\r/'], ['><', ' ', ''], $buffer);
$output_array[] = $buffer;
return '';
}
class WebiscoWidget {
public $name = '';
public $parameter = array();
}
// wurde ein spezieller Widget angefragt?
if ( isset($_REQUEST['webiscowidget']) ){
$widget = new WebiscoWidget();
$widget->name = strtolower(stripslashes(stripslashes($_REQUEST['webiscowidget'])));
if ( isset($_REQUEST['webiscowidgetparams']) ){
$tmpwidgetparams = stripslashes(stripslashes($_REQUEST['webiscowidgetparams']));
$tmpwidgetparams = @unserialize($tmpwidgetparams, $unserialize_no_classes);
if ( is_array($tmpwidgetparams) ){
foreach($tmpwidgetparams as $name => $value){
if ( is_string($value) ){
$widget->parameter[strtolower($name)] = strtolower($value);
} else if ( is_array($value) ){
$widget->parameter[strtolower($name)] = $value;
} else if ( is_int($value) ){
$widget->parameter[strtolower($name)] = $value;
}
}
}
}
$webisco_widget_array[] = $widget;
} else if ( isset($_REQUEST['webiscowidgets']) ){
$serialize_output = true;
$tmp_array = @unserialize($_REQUEST['webiscowidgets'], array('allowed_classes' => array('WebiscoWidget')));
if ( is_array($tmp_array) ){
foreach ( $tmp_array as $widget ){
if ( !is_object($widget) || get_class($widget) != 'WebiscoWidget' ){
return 'Es muss ein Array von WebiscoWidget-Objekten übergeben werden.';
} else {
$webisco_widget_array[] = $widget;
}
}
}
}
// nun alle Widgets der Reihe nach generieren
foreach ( $webisco_widget_array as $widget ){
if ( $serialize_output ){
ob_start('saveOutput');
}
if ( strlen($widget->name) == 0 ){
print404();
}
// Tabellen als
oder ?
$divtables = false;
if ( isset($widget->parameter[WIDGETPARAM_GRIDELEMENT]) ){
$divtables = ($widget->parameter[WIDGETPARAM_GRIDELEMENT] == 'div');
}
// wurde schon ein Fahrzeug übergeben?
// Dann laden wir das von TecDoc, aber nur wenns
// ein anderes ist als das aktuelle
if ( isset($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]) && $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] > 0 && (!isset($FAHRZEUG) || $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] != $FAHRZEUG->getID()) ){
$MOTOR = new Motor();
$FAHRZEUG = $TECDOC->getFahrzeugFromCarID($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
/* else if ( isset($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]) && $WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE] != $MOTOR->getMotorCode() ){
$MOTOR = $TECDOC->getMotorFromMotorCode($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
*/
switch ( $widget->name ) {
case WIDGET_INIT:
doAction();
break;
case WIDGET_SUCHE:
$option_exaktsuche = false;
if ( isset($widget->parameter[WIDGETPARAM_SUCHE_OPTION]) ){
$option_exaktsuche = ($widget->parameter[WIDGETPARAM_SUCHE_OPTION] == WIDGETPARAM_SUCHE_OPTION_EXAKTSUCHE);
}
printSuche($option_exaktsuche);
break;
case WIDGET_FAHRZEUG:
$permanent = false;
$details = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGANZEIGE_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_DETAIL:
$details = true;
break;
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_NORMAL:
default:
$details = false;
break;
}
}
printFahrzeugInfo($permanent, $details);
break;
case WIDGET_FAHRZEUGAUSWAHL:
$permanent = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_PERMANENT:
$permanent = true;
break;
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_NORMAL:
default:
$permanent = false;
break;
}
}
printFahrzeugAuswahl($permanent);
break;
case WIDGET_LOGIN:
printKundenBox();
break;
case WIDGET_NAVIGATION:
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT]) ){
switch ( $widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT] ){
case WIDGETPARAM_NAVIGATION_LAYOUT_LINE:
printRootLine();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TREE:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printTreeNavigation($angebote, $baugruppen);
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_STEPUP:
printUpButton();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TEXTLINKS:
printTextLinks();
break;
}
}
break;
case WIDGET_LINK:
if ( isset($widget->parameter[WIDGETPARAM_LINK_TYP]) ){
$text = @$widget->parameter[WIDGETPARAM_LINK_TYP_TEXT]; // das ist der text, der im Link stehen soll
if ( is_string($text) || $text == '' ){
$text = trim(strval($text));
$linktyp = strval($widget->parameter[WIDGETPARAM_LINK_TYP]);
switch ( $linktyp ){
case WIDGETPARAM_LINK_TYP_AGB:
printAGBButton($text);
break;
case WIDGETPARAM_LINK_TYP_ARTIKEL:
printArtikelButton(intval($widget->parameter[WIDGETPARAM_LINK_TYP_ARTIKEL_ID]), $text);
break;
case WIDGETPARAM_LINK_TYP_ALTOELVERORDNUNG:
printAltoelverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_BARRIEREFREIHEIT:
printBarriereFreiheitButton($text);
break;
case WIDGETPARAM_LINK_TYP_BATTERIEVERORDNUNG:
printBatterieverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_DATENSCHUTZ:
printDatenschutzButton($text);
break;
case WIDGETPARAM_LINK_TYP_IMPRESSUM:
printImpressumButton($text);
break;
case WIDGETPARAM_LINK_TYP_VERSANDBEDINGUNGEN:
printVersandbedingungenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WIDERRUFSBELEHRUNG:
printWiderrufsbelehrungButton($text);
break;
case WIDGETPARAM_LINK_TYP_REKLAMATIONEN:
printReklamationenButton($text);
break;
case WIDGETPARAM_LINK_TYP_ALTTEILPFAND:
printAltteilpfandButton($text);
break;
case WIDGETPARAM_LINK_TYP_STARTSEITE:
printStartseitenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WARENKORB:
printWarenkorbButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEANLEGEN:
printKundeAnlegenButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEBEARBEITEN:
printKundeBearbeitenButton($text);
break;
default:
break;
}
}
}
break;
case WIDGET_WARENKORB:
printWarenkorbInfo();
break;
case WIDGET_COPYRIGHT:
printCopyright();
break;
case WIDGET_HAUPTBEREICH:
showAction();
break;
case WIDGET_ARTIKELDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleArtikelDaten($format);
break;
case WIDGET_FAHRZEUGDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleFahrzeugDaten($format);
break;
case WIDGET_KATEGORIEPFAD:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printKategoriePfad($format);
break;
case WIDGET_KATEGORIEBAUM:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printKategorieBaum($angebote,$baugruppen);
break;
case WIDGET_SPRACHWAHL:
if ( isset($widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN]) ){
$sprachen = $widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN];
if ( is_array($sprachen) ){
printSprachwahl($sprachen);
}
}
break;
case WIDGET_ARTIKEL:
if ( isset($widget->parameter[WIDGETPARAM_ARTIKEL_ID]) ){
$artikelid = intval($widget->parameter[WIDGETPARAM_ARTIKEL_ID]);
if ( $artikelid > 0 ){
printArtikelFromID($artikelid);
}
}
break;
case WIDGET_KUNDEBEARBEITEN:{
include(includeDir().'kunde.inc.php');
editKunde(true);
}
break;
case WIDGET_SHOP:
{
doAction();
?>
0 ){
//error_log("server count = ".count($output_array));
//error_log(serialize($output_array));
//print(serialize($output_array));
print(json_encode($output_array));
}
}
@unlink($active_file);
?>
0 ){
$_SESSION['REFERER'] = $_GET['referer'];
}
$REFERER = &$_SESSION['REFERER'];
// Die Session beenden, wenn sich die IP ändert oder
// wenn die Zeit der Session abgelaufen ist
//
if ( isset($_SESSION['IP']) && $_SESSION['IP'] != $_GET['webiscoip'] ){
$AUTOMATIC_LOGOUT = true;
session_regenerate_id();
} else if ( $KUNDE->exists() && isset($_SESSION['TIMEOUT']) && $_SESSION['TIMEOUT'] < time() ){
$AUTOMATIC_LOGOUT = true;
}
$_SESSION['IP'] = @$_GET['webiscoip'];
$_SESSION['TIMEOUT'] = time() + $session_timeout_minuten*60;
// Warenkorb inizialisieren
if ( !isset($_SESSION['WARENKORB']) || !is_object($_SESSION['WARENKORB']) ){
$WARENKORB = new Warenkorb();
$_SESSION['WARENKORB'] = $WARENKORB;
}
$WARENKORB = &$_SESSION['WARENKORB'];
// Konfiguration erzeugen
if ( !isset($_SESSION['CONFIG']) || !is_object($_SESSION['CONFIG']) || $AUTOMATIC_LOGOUT ){
$CONFIG = Config::getNewInstance();
$_SESSION['CONFIG'] = $CONFIG;
}
$CONFIG = &$_SESSION['CONFIG'];
//$CONFIG = Config::getNewInstance();
//$_SESSION['CONFIG'] = $CONFIG;
// Fahrzeug inizialisieren
if ( !isset($_SESSION['FAHRZEUG']) || !is_object($_SESSION['FAHRZEUG']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch das evtl. ausgewählte Fahrzeug löschen
$FAHRZEUG = new Fahrzeug();
$_SESSION['FAHRZEUG'] = $FAHRZEUG;
$FAHRZEUGE = array();
$_SESSION['FAHRZEUGE'] = $FAHRZEUGE;
}
$FAHRZEUG = &$_SESSION['FAHRZEUG'];
$FAHRZEUGE = &$_SESSION['FAHRZEUGE']; // wenns mehrere zur Auswahl gibt nach KBA-Nummer-Eingabe
// Motor inizialisieren
if ( !isset($_SESSION['MOTOR']) || !is_object($_SESSION['MOTOR']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch den evtl. ausgewählten Motor löschen
$MOTOR = new Motor();
$_SESSION['MOTOR'] = $MOTOR;
$MOTOREN = array();
$_SESSION['MOTOREN'] = $MOTOREN;
}
$MOTOR = &$_SESSION['MOTOR'];
$MOTOREN = &$_SESSION['MOTOREN']; // wenns mehrere zur Auswahl gibt nach Motorcode-Eingabe
// Artikelcache inizialisieren
if ( !isset($_SESSION['ARTIKELCACHE']) || !is_object($_SESSION['ARTIKELCACHE']) || $AUTOMATIC_LOGOUT ){
$ARTIKELCACHE = new ArtikelCache();
$_SESSION['ARTIKELCACHE'] = $ARTIKELCACHE;
}
$ARTIKELCACHE = &$_SESSION['ARTIKELCACHE'];
//$ARTIKELCACHE->clear(); // wenn der Cache sich immer wieder cleared, gehen keine CSGs, da die zwingend beim Klick im cache sein müssen!
// Artikelstamm erzeugen
if ( !isset($_SESSION['ARTIKELSTAMM']) || !is_object($_SESSION['ARTIKELSTAMM']) ){
$ARTIKELSTAMM = Artikelstamm::instance();
$_SESSION['ARTIKELSTAMM'] = $ARTIKELSTAMM;
}
$ARTIKELSTAMM = &$_SESSION['ARTIKELSTAMM'];
// TecDoc-Objekt erzeugen
if ( !isset($_SESSION['TECDOC']) || !is_object($_SESSION['TECDOC']) ){
$TECDOC = new TecDoc();
$_SESSION['TECDOC'] = $TECDOC;
}
$TECDOC = &$_SESSION['TECDOC'];
// das Bestellungsobjekt wenn es eins gibt
if ( !isset($_SESSION['BESTELLUNG']) ){
$_SESSION['BESTELLUNG'] = null;
}
$BESTELLUNG = &$_SESSION['BESTELLUNG'];
// den Sectionpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION['SECTIONPATH']) || !is_array($_SESSION['SECTIONPATH']) ){
$_SESSION['SECTIONPATH'] = array();
}
$SECTIONPATH = &$_SESSION['SECTIONPATH'];
// den Baugruppenpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION[SESSION_BAUGRUPPENPATH]) ){
$_SESSION[SESSION_BAUGRUPPENPATH] = array();
}
$BAUGRUPPENPATH = &$_SESSION[SESSION_BAUGRUPPENPATH];
// die Webisco-Action in der Session merken für Widgetübergreifende abänderung in doAction()
if ( !isset($_SESSION['WEBISCOACTION']) ){
$_SESSION['WEBISCOACTION'] = '';
}
$WEBISCOACTION = &$_SESSION['WEBISCOACTION'];
// die Webisco-Parameter auch in der Session merken
if ( !isset($_SESSION['WEBISCOPARAMS']) ){
$_SESSION['WEBISCOPARAMS'] = array();
}
$WEBISCOPARAMS = &$_SESSION['WEBISCOPARAMS'];
$unserialize_no_classes = array('allowed_classes' => false);
// jetzt die relevanten Webisco-Parameter aus den GET-
// und POST-Parametern wiederherstellen
$WEBISCOPARAMS = array();
if ( isset($_GET['webiscoparams']) ){
// wenns nicht base64 enkodiert is, muss man stripslashes(stripslashes($serialized)) machen!
$phpserialized = base64_decode($_GET['webiscoparams']);
$unzipped = @gzuncompress($phpserialized);
if ( $unzipped != false ){
$phpserialized = $unzipped;
}
$WEBISCOPARAMS = @unserialize($phpserialized, $unserialize_no_classes);
if ( !is_array($WEBISCOPARAMS) ) {
// dann ist was schief gegangen, wieder ein Array herstellen!
$WEBISCOPARAMS = array();
}
}
// Parameter von der webisco.inc, die mit "webisco..." beginnen
$durchschleif_parameter = array();
$durchschleif_parameter['webiscopermalogin'] = WEBISCOPARAM_PERMALOGIN;
$durchschleif_parameter['webiscopermapasswort'] = WEBISCOPARAM_PERMAPASSWORT;
$durchschleif_parameter['webiscosearch'] = WEBISCOPARAM_WEBISCOSEARCH;
$durchschleif_parameter['webiscosearchoption'] = WEBISCOPARAM_WEBISCOSEARCH_OPTION;
$durchschleif_parameter['webiscopaymentcheck'] = WEBISCOPARAM_PAYMENT_CHECK;
$durchschleif_parameter['webiscopaymentcancel'] = WEBISCOPARAM_PAYMENT_CANCEL;
$durchschleif_parameter['webiscopaymentsystem'] = WEBISCOPARAM_PAYMENT_SYSTEM;
$durchschleif_parameter['webiscoartikelid'] = WEBISCOPARAM_ARTIKELID;
$durchschleif_parameter['webiscopaypaltoken'] = WEBISCOPARAM_PAYPALTOKEN;
$durchschleif_parameter['webiscopaymentsessionid'] = WEBISCOPARAM_PAYMENTSESSIONID;
foreach ( $durchschleif_parameter as $getparameter => $webiscoparam ){
if ( isset($_GET[$getparameter]) && (strlen($_GET[$getparameter]) > 0 || $webiscoparam == WEBISCOPARAM_WEBISCOSEARCH )){
$WEBISCOPARAMS[$webiscoparam] = $_GET[$getparameter];
switch ( $webiscoparam ){
case WEBISCOPARAM_PAYMENT_CHECK:
case WEBISCOPARAM_PAYMENT_CANCEL:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_ZAHLUNG;
break;
case WEBISCOPARAM_ARTIKELID:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SHOW_ARTIKEL;
break;
case WEBISCOPARAM_WEBISCOSEARCH:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SEARCH;
break;
}
}
}
if ( !isset($_SESSION[SESSION_WEBISCOSTATISTIK]) ){
$_SESSION[SESSION_WEBISCOSTATISTIK] = false;
}
$WEBISCOSTATISTIK = &$_SESSION[SESSION_WEBISCOSTATISTIK];
if ( isset($_GET[WEBISCOPARAM_WEBISCOSTATISTIK]) ){
$WEBISCOSTATISTIK = ($_GET[WEBISCOPARAM_WEBISCOSTATISTIK] == 'true');
}
// und noch alle POST-Variablen in die Websico-Params reinkopieren
foreach($_POST as $name => $value){
$WEBISCOPARAMS[$name] = $value;
}
$REFERER = &$_SESSION['REFERER'];
// Die Zeiten in Sekunden (muss auch in artikelcsv.php inizialisiert werden!)
$ZEITEN['tecdoc'] = 0;
$ZEITEN['cache'] = 0;
$ZEITEN['daemon'] = 0;
// Die aktuelle Action holen
$WEBISCOACTION = @$WEBISCOPARAMS[WEBISCOPARAM_ACTION];
// jetzt die externen Webisco-Parameter wiederherstellen
$webiscoextparams = array();
if ( isset($_GET['webiscoextparams']) ){
$webiscoextparams = stripslashes(stripslashes($_GET['webiscoextparams']));
$webiscoextparams = unserialize($webiscoextparams, $unserialize_no_classes);
}
$webiscoextscriptname = @$_GET['webiscoextscriptname'];
// ist das BR-Debug-Flag gesetzt?
// bei getWebiscoWidget() kann man im get-parameter-Array 'brdebug' => true mitgeben!
if ( isset($webiscoextparams['brdebug']) ){
$brdebug = boolval($webiscoextparams['brdebug']);
}
if ( !isset($brdebug) ){
$brdebug = false;
}
//einen File erzeugen, der zeigt, was gerade von einem Client requested wurde
if ( isset($_REQUEST['webiscowidget']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_'.$_REQUEST['webiscowidget'].'_'.rand();
} else if ( isset($_REQUEST['webiscowidgets']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_webiscowidgets_'.rand();
} else {
print404();
die();
}
$filehandle = fopen($active_file, 'w');
fwrite($filehandle, "action: $WEBISCOACTION\n");
foreach ( $WEBISCOPARAMS as $key => $value ){
//error_log("$key: $value");
fwrite($filehandle, "$key: $value\n");
}
fclose($filehandle);
$serialize_output = false;
$webisco_widget_array = array();
$output_array = array();
// de Buffer-ethode um alle Widget-Anfragen in ein extra String-Array-Feld zu packen
function saveOutput($buffer) {
global $output_array;
// Strings haben oft seltsame UTF-8-Zeichen, denn bei komischen Binärdaten (komische Whitespaces z.B. von TecDoc) gehen die Strings im Array kaputt sowohl bei serialize() als auch bei json_encode()
// base64 ginge alternativ aber da wird ja alles länger
// Unnötige Whitespaces, Zeilenumbrüche und Tabs entfernen
$buffer = preg_replace(['/>\s+', '/\s{2,}/', '/\n|\r/'], ['><', ' ', ''], $buffer);
$output_array[] = $buffer;
return '';
}
class WebiscoWidget {
public $name = '';
public $parameter = array();
}
// wurde ein spezieller Widget angefragt?
if ( isset($_REQUEST['webiscowidget']) ){
$widget = new WebiscoWidget();
$widget->name = strtolower(stripslashes(stripslashes($_REQUEST['webiscowidget'])));
if ( isset($_REQUEST['webiscowidgetparams']) ){
$tmpwidgetparams = stripslashes(stripslashes($_REQUEST['webiscowidgetparams']));
$tmpwidgetparams = @unserialize($tmpwidgetparams, $unserialize_no_classes);
if ( is_array($tmpwidgetparams) ){
foreach($tmpwidgetparams as $name => $value){
if ( is_string($value) ){
$widget->parameter[strtolower($name)] = strtolower($value);
} else if ( is_array($value) ){
$widget->parameter[strtolower($name)] = $value;
} else if ( is_int($value) ){
$widget->parameter[strtolower($name)] = $value;
}
}
}
}
$webisco_widget_array[] = $widget;
} else if ( isset($_REQUEST['webiscowidgets']) ){
$serialize_output = true;
$tmp_array = @unserialize($_REQUEST['webiscowidgets'], array('allowed_classes' => array('WebiscoWidget')));
if ( is_array($tmp_array) ){
foreach ( $tmp_array as $widget ){
if ( !is_object($widget) || get_class($widget) != 'WebiscoWidget' ){
return 'Es muss ein Array von WebiscoWidget-Objekten übergeben werden.';
} else {
$webisco_widget_array[] = $widget;
}
}
}
}
// nun alle Widgets der Reihe nach generieren
foreach ( $webisco_widget_array as $widget ){
if ( $serialize_output ){
ob_start('saveOutput');
}
if ( strlen($widget->name) == 0 ){
print404();
}
// Tabellen als
oder ?
$divtables = false;
if ( isset($widget->parameter[WIDGETPARAM_GRIDELEMENT]) ){
$divtables = ($widget->parameter[WIDGETPARAM_GRIDELEMENT] == 'div');
}
// wurde schon ein Fahrzeug übergeben?
// Dann laden wir das von TecDoc, aber nur wenns
// ein anderes ist als das aktuelle
if ( isset($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]) && $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] > 0 && (!isset($FAHRZEUG) || $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] != $FAHRZEUG->getID()) ){
$MOTOR = new Motor();
$FAHRZEUG = $TECDOC->getFahrzeugFromCarID($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
/* else if ( isset($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]) && $WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE] != $MOTOR->getMotorCode() ){
$MOTOR = $TECDOC->getMotorFromMotorCode($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
*/
switch ( $widget->name ) {
case WIDGET_INIT:
doAction();
break;
case WIDGET_SUCHE:
$option_exaktsuche = false;
if ( isset($widget->parameter[WIDGETPARAM_SUCHE_OPTION]) ){
$option_exaktsuche = ($widget->parameter[WIDGETPARAM_SUCHE_OPTION] == WIDGETPARAM_SUCHE_OPTION_EXAKTSUCHE);
}
printSuche($option_exaktsuche);
break;
case WIDGET_FAHRZEUG:
$permanent = false;
$details = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGANZEIGE_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_DETAIL:
$details = true;
break;
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_NORMAL:
default:
$details = false;
break;
}
}
printFahrzeugInfo($permanent, $details);
break;
case WIDGET_FAHRZEUGAUSWAHL:
$permanent = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_PERMANENT:
$permanent = true;
break;
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_NORMAL:
default:
$permanent = false;
break;
}
}
printFahrzeugAuswahl($permanent);
break;
case WIDGET_LOGIN:
printKundenBox();
break;
case WIDGET_NAVIGATION:
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT]) ){
switch ( $widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT] ){
case WIDGETPARAM_NAVIGATION_LAYOUT_LINE:
printRootLine();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TREE:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printTreeNavigation($angebote, $baugruppen);
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_STEPUP:
printUpButton();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TEXTLINKS:
printTextLinks();
break;
}
}
break;
case WIDGET_LINK:
if ( isset($widget->parameter[WIDGETPARAM_LINK_TYP]) ){
$text = @$widget->parameter[WIDGETPARAM_LINK_TYP_TEXT]; // das ist der text, der im Link stehen soll
if ( is_string($text) || $text == '' ){
$text = trim(strval($text));
$linktyp = strval($widget->parameter[WIDGETPARAM_LINK_TYP]);
switch ( $linktyp ){
case WIDGETPARAM_LINK_TYP_AGB:
printAGBButton($text);
break;
case WIDGETPARAM_LINK_TYP_ARTIKEL:
printArtikelButton(intval($widget->parameter[WIDGETPARAM_LINK_TYP_ARTIKEL_ID]), $text);
break;
case WIDGETPARAM_LINK_TYP_ALTOELVERORDNUNG:
printAltoelverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_BARRIEREFREIHEIT:
printBarriereFreiheitButton($text);
break;
case WIDGETPARAM_LINK_TYP_BATTERIEVERORDNUNG:
printBatterieverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_DATENSCHUTZ:
printDatenschutzButton($text);
break;
case WIDGETPARAM_LINK_TYP_IMPRESSUM:
printImpressumButton($text);
break;
case WIDGETPARAM_LINK_TYP_VERSANDBEDINGUNGEN:
printVersandbedingungenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WIDERRUFSBELEHRUNG:
printWiderrufsbelehrungButton($text);
break;
case WIDGETPARAM_LINK_TYP_REKLAMATIONEN:
printReklamationenButton($text);
break;
case WIDGETPARAM_LINK_TYP_ALTTEILPFAND:
printAltteilpfandButton($text);
break;
case WIDGETPARAM_LINK_TYP_STARTSEITE:
printStartseitenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WARENKORB:
printWarenkorbButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEANLEGEN:
printKundeAnlegenButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEBEARBEITEN:
printKundeBearbeitenButton($text);
break;
default:
break;
}
}
}
break;
case WIDGET_WARENKORB:
printWarenkorbInfo();
break;
case WIDGET_COPYRIGHT:
printCopyright();
break;
case WIDGET_HAUPTBEREICH:
showAction();
break;
case WIDGET_ARTIKELDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleArtikelDaten($format);
break;
case WIDGET_FAHRZEUGDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleFahrzeugDaten($format);
break;
case WIDGET_KATEGORIEPFAD:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printKategoriePfad($format);
break;
case WIDGET_KATEGORIEBAUM:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printKategorieBaum($angebote,$baugruppen);
break;
case WIDGET_SPRACHWAHL:
if ( isset($widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN]) ){
$sprachen = $widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN];
if ( is_array($sprachen) ){
printSprachwahl($sprachen);
}
}
break;
case WIDGET_ARTIKEL:
if ( isset($widget->parameter[WIDGETPARAM_ARTIKEL_ID]) ){
$artikelid = intval($widget->parameter[WIDGETPARAM_ARTIKEL_ID]);
if ( $artikelid > 0 ){
printArtikelFromID($artikelid);
}
}
break;
case WIDGET_KUNDEBEARBEITEN:{
include(includeDir().'kunde.inc.php');
editKunde(true);
}
break;
case WIDGET_SHOP:
{
doAction();
?>
0 ){
//error_log("server count = ".count($output_array));
//error_log(serialize($output_array));
//print(serialize($output_array));
print(json_encode($output_array));
}
}
@unlink($active_file);
?>
0 ){
$_SESSION['REFERER'] = $_GET['referer'];
}
$REFERER = &$_SESSION['REFERER'];
// Die Session beenden, wenn sich die IP ändert oder
// wenn die Zeit der Session abgelaufen ist
//
if ( isset($_SESSION['IP']) && $_SESSION['IP'] != $_GET['webiscoip'] ){
$AUTOMATIC_LOGOUT = true;
session_regenerate_id();
} else if ( $KUNDE->exists() && isset($_SESSION['TIMEOUT']) && $_SESSION['TIMEOUT'] < time() ){
$AUTOMATIC_LOGOUT = true;
}
$_SESSION['IP'] = @$_GET['webiscoip'];
$_SESSION['TIMEOUT'] = time() + $session_timeout_minuten*60;
// Warenkorb inizialisieren
if ( !isset($_SESSION['WARENKORB']) || !is_object($_SESSION['WARENKORB']) ){
$WARENKORB = new Warenkorb();
$_SESSION['WARENKORB'] = $WARENKORB;
}
$WARENKORB = &$_SESSION['WARENKORB'];
// Konfiguration erzeugen
if ( !isset($_SESSION['CONFIG']) || !is_object($_SESSION['CONFIG']) || $AUTOMATIC_LOGOUT ){
$CONFIG = Config::getNewInstance();
$_SESSION['CONFIG'] = $CONFIG;
}
$CONFIG = &$_SESSION['CONFIG'];
//$CONFIG = Config::getNewInstance();
//$_SESSION['CONFIG'] = $CONFIG;
// Fahrzeug inizialisieren
if ( !isset($_SESSION['FAHRZEUG']) || !is_object($_SESSION['FAHRZEUG']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch das evtl. ausgewählte Fahrzeug löschen
$FAHRZEUG = new Fahrzeug();
$_SESSION['FAHRZEUG'] = $FAHRZEUG;
$FAHRZEUGE = array();
$_SESSION['FAHRZEUGE'] = $FAHRZEUGE;
}
$FAHRZEUG = &$_SESSION['FAHRZEUG'];
$FAHRZEUGE = &$_SESSION['FAHRZEUGE']; // wenns mehrere zur Auswahl gibt nach KBA-Nummer-Eingabe
// Motor inizialisieren
if ( !isset($_SESSION['MOTOR']) || !is_object($_SESSION['MOTOR']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch den evtl. ausgewählten Motor löschen
$MOTOR = new Motor();
$_SESSION['MOTOR'] = $MOTOR;
$MOTOREN = array();
$_SESSION['MOTOREN'] = $MOTOREN;
}
$MOTOR = &$_SESSION['MOTOR'];
$MOTOREN = &$_SESSION['MOTOREN']; // wenns mehrere zur Auswahl gibt nach Motorcode-Eingabe
// Artikelcache inizialisieren
if ( !isset($_SESSION['ARTIKELCACHE']) || !is_object($_SESSION['ARTIKELCACHE']) || $AUTOMATIC_LOGOUT ){
$ARTIKELCACHE = new ArtikelCache();
$_SESSION['ARTIKELCACHE'] = $ARTIKELCACHE;
}
$ARTIKELCACHE = &$_SESSION['ARTIKELCACHE'];
//$ARTIKELCACHE->clear(); // wenn der Cache sich immer wieder cleared, gehen keine CSGs, da die zwingend beim Klick im cache sein müssen!
// Artikelstamm erzeugen
if ( !isset($_SESSION['ARTIKELSTAMM']) || !is_object($_SESSION['ARTIKELSTAMM']) ){
$ARTIKELSTAMM = Artikelstamm::instance();
$_SESSION['ARTIKELSTAMM'] = $ARTIKELSTAMM;
}
$ARTIKELSTAMM = &$_SESSION['ARTIKELSTAMM'];
// TecDoc-Objekt erzeugen
if ( !isset($_SESSION['TECDOC']) || !is_object($_SESSION['TECDOC']) ){
$TECDOC = new TecDoc();
$_SESSION['TECDOC'] = $TECDOC;
}
$TECDOC = &$_SESSION['TECDOC'];
// das Bestellungsobjekt wenn es eins gibt
if ( !isset($_SESSION['BESTELLUNG']) ){
$_SESSION['BESTELLUNG'] = null;
}
$BESTELLUNG = &$_SESSION['BESTELLUNG'];
// den Sectionpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION['SECTIONPATH']) || !is_array($_SESSION['SECTIONPATH']) ){
$_SESSION['SECTIONPATH'] = array();
}
$SECTIONPATH = &$_SESSION['SECTIONPATH'];
// den Baugruppenpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION[SESSION_BAUGRUPPENPATH]) ){
$_SESSION[SESSION_BAUGRUPPENPATH] = array();
}
$BAUGRUPPENPATH = &$_SESSION[SESSION_BAUGRUPPENPATH];
// die Webisco-Action in der Session merken für Widgetübergreifende abänderung in doAction()
if ( !isset($_SESSION['WEBISCOACTION']) ){
$_SESSION['WEBISCOACTION'] = '';
}
$WEBISCOACTION = &$_SESSION['WEBISCOACTION'];
// die Webisco-Parameter auch in der Session merken
if ( !isset($_SESSION['WEBISCOPARAMS']) ){
$_SESSION['WEBISCOPARAMS'] = array();
}
$WEBISCOPARAMS = &$_SESSION['WEBISCOPARAMS'];
$unserialize_no_classes = array('allowed_classes' => false);
// jetzt die relevanten Webisco-Parameter aus den GET-
// und POST-Parametern wiederherstellen
$WEBISCOPARAMS = array();
if ( isset($_GET['webiscoparams']) ){
// wenns nicht base64 enkodiert is, muss man stripslashes(stripslashes($serialized)) machen!
$phpserialized = base64_decode($_GET['webiscoparams']);
$unzipped = @gzuncompress($phpserialized);
if ( $unzipped != false ){
$phpserialized = $unzipped;
}
$WEBISCOPARAMS = @unserialize($phpserialized, $unserialize_no_classes);
if ( !is_array($WEBISCOPARAMS) ) {
// dann ist was schief gegangen, wieder ein Array herstellen!
$WEBISCOPARAMS = array();
}
}
// Parameter von der webisco.inc, die mit "webisco..." beginnen
$durchschleif_parameter = array();
$durchschleif_parameter['webiscopermalogin'] = WEBISCOPARAM_PERMALOGIN;
$durchschleif_parameter['webiscopermapasswort'] = WEBISCOPARAM_PERMAPASSWORT;
$durchschleif_parameter['webiscosearch'] = WEBISCOPARAM_WEBISCOSEARCH;
$durchschleif_parameter['webiscosearchoption'] = WEBISCOPARAM_WEBISCOSEARCH_OPTION;
$durchschleif_parameter['webiscopaymentcheck'] = WEBISCOPARAM_PAYMENT_CHECK;
$durchschleif_parameter['webiscopaymentcancel'] = WEBISCOPARAM_PAYMENT_CANCEL;
$durchschleif_parameter['webiscopaymentsystem'] = WEBISCOPARAM_PAYMENT_SYSTEM;
$durchschleif_parameter['webiscoartikelid'] = WEBISCOPARAM_ARTIKELID;
$durchschleif_parameter['webiscopaypaltoken'] = WEBISCOPARAM_PAYPALTOKEN;
$durchschleif_parameter['webiscopaymentsessionid'] = WEBISCOPARAM_PAYMENTSESSIONID;
foreach ( $durchschleif_parameter as $getparameter => $webiscoparam ){
if ( isset($_GET[$getparameter]) && (strlen($_GET[$getparameter]) > 0 || $webiscoparam == WEBISCOPARAM_WEBISCOSEARCH )){
$WEBISCOPARAMS[$webiscoparam] = $_GET[$getparameter];
switch ( $webiscoparam ){
case WEBISCOPARAM_PAYMENT_CHECK:
case WEBISCOPARAM_PAYMENT_CANCEL:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_ZAHLUNG;
break;
case WEBISCOPARAM_ARTIKELID:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SHOW_ARTIKEL;
break;
case WEBISCOPARAM_WEBISCOSEARCH:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SEARCH;
break;
}
}
}
if ( !isset($_SESSION[SESSION_WEBISCOSTATISTIK]) ){
$_SESSION[SESSION_WEBISCOSTATISTIK] = false;
}
$WEBISCOSTATISTIK = &$_SESSION[SESSION_WEBISCOSTATISTIK];
if ( isset($_GET[WEBISCOPARAM_WEBISCOSTATISTIK]) ){
$WEBISCOSTATISTIK = ($_GET[WEBISCOPARAM_WEBISCOSTATISTIK] == 'true');
}
// und noch alle POST-Variablen in die Websico-Params reinkopieren
foreach($_POST as $name => $value){
$WEBISCOPARAMS[$name] = $value;
}
$REFERER = &$_SESSION['REFERER'];
// Die Zeiten in Sekunden (muss auch in artikelcsv.php inizialisiert werden!)
$ZEITEN['tecdoc'] = 0;
$ZEITEN['cache'] = 0;
$ZEITEN['daemon'] = 0;
// Die aktuelle Action holen
$WEBISCOACTION = @$WEBISCOPARAMS[WEBISCOPARAM_ACTION];
// jetzt die externen Webisco-Parameter wiederherstellen
$webiscoextparams = array();
if ( isset($_GET['webiscoextparams']) ){
$webiscoextparams = stripslashes(stripslashes($_GET['webiscoextparams']));
$webiscoextparams = unserialize($webiscoextparams, $unserialize_no_classes);
}
$webiscoextscriptname = @$_GET['webiscoextscriptname'];
// ist das BR-Debug-Flag gesetzt?
// bei getWebiscoWidget() kann man im get-parameter-Array 'brdebug' => true mitgeben!
if ( isset($webiscoextparams['brdebug']) ){
$brdebug = boolval($webiscoextparams['brdebug']);
}
if ( !isset($brdebug) ){
$brdebug = false;
}
//einen File erzeugen, der zeigt, was gerade von einem Client requested wurde
if ( isset($_REQUEST['webiscowidget']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_'.$_REQUEST['webiscowidget'].'_'.rand();
} else if ( isset($_REQUEST['webiscowidgets']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_webiscowidgets_'.rand();
} else {
print404();
die();
}
$filehandle = fopen($active_file, 'w');
fwrite($filehandle, "action: $WEBISCOACTION\n");
foreach ( $WEBISCOPARAMS as $key => $value ){
//error_log("$key: $value");
fwrite($filehandle, "$key: $value\n");
}
fclose($filehandle);
$serialize_output = false;
$webisco_widget_array = array();
$output_array = array();
// de Buffer-ethode um alle Widget-Anfragen in ein extra String-Array-Feld zu packen
function saveOutput($buffer) {
global $output_array;
// Strings haben oft seltsame UTF-8-Zeichen, denn bei komischen Binärdaten (komische Whitespaces z.B. von TecDoc) gehen die Strings im Array kaputt sowohl bei serialize() als auch bei json_encode()
// base64 ginge alternativ aber da wird ja alles länger
// Unnötige Whitespaces, Zeilenumbrüche und Tabs entfernen
$buffer = preg_replace(['/>\s+', '/\s{2,}/', '/\n|\r/'], ['><', ' ', ''], $buffer);
$output_array[] = $buffer;
return '';
}
class WebiscoWidget {
public $name = '';
public $parameter = array();
}
// wurde ein spezieller Widget angefragt?
if ( isset($_REQUEST['webiscowidget']) ){
$widget = new WebiscoWidget();
$widget->name = strtolower(stripslashes(stripslashes($_REQUEST['webiscowidget'])));
if ( isset($_REQUEST['webiscowidgetparams']) ){
$tmpwidgetparams = stripslashes(stripslashes($_REQUEST['webiscowidgetparams']));
$tmpwidgetparams = @unserialize($tmpwidgetparams, $unserialize_no_classes);
if ( is_array($tmpwidgetparams) ){
foreach($tmpwidgetparams as $name => $value){
if ( is_string($value) ){
$widget->parameter[strtolower($name)] = strtolower($value);
} else if ( is_array($value) ){
$widget->parameter[strtolower($name)] = $value;
} else if ( is_int($value) ){
$widget->parameter[strtolower($name)] = $value;
}
}
}
}
$webisco_widget_array[] = $widget;
} else if ( isset($_REQUEST['webiscowidgets']) ){
$serialize_output = true;
$tmp_array = @unserialize($_REQUEST['webiscowidgets'], array('allowed_classes' => array('WebiscoWidget')));
if ( is_array($tmp_array) ){
foreach ( $tmp_array as $widget ){
if ( !is_object($widget) || get_class($widget) != 'WebiscoWidget' ){
return 'Es muss ein Array von WebiscoWidget-Objekten übergeben werden.';
} else {
$webisco_widget_array[] = $widget;
}
}
}
}
// nun alle Widgets der Reihe nach generieren
foreach ( $webisco_widget_array as $widget ){
if ( $serialize_output ){
ob_start('saveOutput');
}
if ( strlen($widget->name) == 0 ){
print404();
}
// Tabellen als
oder ?
$divtables = false;
if ( isset($widget->parameter[WIDGETPARAM_GRIDELEMENT]) ){
$divtables = ($widget->parameter[WIDGETPARAM_GRIDELEMENT] == 'div');
}
// wurde schon ein Fahrzeug übergeben?
// Dann laden wir das von TecDoc, aber nur wenns
// ein anderes ist als das aktuelle
if ( isset($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]) && $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] > 0 && (!isset($FAHRZEUG) || $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] != $FAHRZEUG->getID()) ){
$MOTOR = new Motor();
$FAHRZEUG = $TECDOC->getFahrzeugFromCarID($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
/* else if ( isset($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]) && $WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE] != $MOTOR->getMotorCode() ){
$MOTOR = $TECDOC->getMotorFromMotorCode($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
*/
switch ( $widget->name ) {
case WIDGET_INIT:
doAction();
break;
case WIDGET_SUCHE:
$option_exaktsuche = false;
if ( isset($widget->parameter[WIDGETPARAM_SUCHE_OPTION]) ){
$option_exaktsuche = ($widget->parameter[WIDGETPARAM_SUCHE_OPTION] == WIDGETPARAM_SUCHE_OPTION_EXAKTSUCHE);
}
printSuche($option_exaktsuche);
break;
case WIDGET_FAHRZEUG:
$permanent = false;
$details = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGANZEIGE_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_DETAIL:
$details = true;
break;
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_NORMAL:
default:
$details = false;
break;
}
}
printFahrzeugInfo($permanent, $details);
break;
case WIDGET_FAHRZEUGAUSWAHL:
$permanent = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_PERMANENT:
$permanent = true;
break;
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_NORMAL:
default:
$permanent = false;
break;
}
}
printFahrzeugAuswahl($permanent);
break;
case WIDGET_LOGIN:
printKundenBox();
break;
case WIDGET_NAVIGATION:
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT]) ){
switch ( $widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT] ){
case WIDGETPARAM_NAVIGATION_LAYOUT_LINE:
printRootLine();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TREE:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printTreeNavigation($angebote, $baugruppen);
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_STEPUP:
printUpButton();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TEXTLINKS:
printTextLinks();
break;
}
}
break;
case WIDGET_LINK:
if ( isset($widget->parameter[WIDGETPARAM_LINK_TYP]) ){
$text = @$widget->parameter[WIDGETPARAM_LINK_TYP_TEXT]; // das ist der text, der im Link stehen soll
if ( is_string($text) || $text == '' ){
$text = trim(strval($text));
$linktyp = strval($widget->parameter[WIDGETPARAM_LINK_TYP]);
switch ( $linktyp ){
case WIDGETPARAM_LINK_TYP_AGB:
printAGBButton($text);
break;
case WIDGETPARAM_LINK_TYP_ARTIKEL:
printArtikelButton(intval($widget->parameter[WIDGETPARAM_LINK_TYP_ARTIKEL_ID]), $text);
break;
case WIDGETPARAM_LINK_TYP_ALTOELVERORDNUNG:
printAltoelverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_BARRIEREFREIHEIT:
printBarriereFreiheitButton($text);
break;
case WIDGETPARAM_LINK_TYP_BATTERIEVERORDNUNG:
printBatterieverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_DATENSCHUTZ:
printDatenschutzButton($text);
break;
case WIDGETPARAM_LINK_TYP_IMPRESSUM:
printImpressumButton($text);
break;
case WIDGETPARAM_LINK_TYP_VERSANDBEDINGUNGEN:
printVersandbedingungenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WIDERRUFSBELEHRUNG:
printWiderrufsbelehrungButton($text);
break;
case WIDGETPARAM_LINK_TYP_REKLAMATIONEN:
printReklamationenButton($text);
break;
case WIDGETPARAM_LINK_TYP_ALTTEILPFAND:
printAltteilpfandButton($text);
break;
case WIDGETPARAM_LINK_TYP_STARTSEITE:
printStartseitenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WARENKORB:
printWarenkorbButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEANLEGEN:
printKundeAnlegenButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEBEARBEITEN:
printKundeBearbeitenButton($text);
break;
default:
break;
}
}
}
break;
case WIDGET_WARENKORB:
printWarenkorbInfo();
break;
case WIDGET_COPYRIGHT:
printCopyright();
break;
case WIDGET_HAUPTBEREICH:
showAction();
break;
case WIDGET_ARTIKELDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleArtikelDaten($format);
break;
case WIDGET_FAHRZEUGDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleFahrzeugDaten($format);
break;
case WIDGET_KATEGORIEPFAD:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printKategoriePfad($format);
break;
case WIDGET_KATEGORIEBAUM:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printKategorieBaum($angebote,$baugruppen);
break;
case WIDGET_SPRACHWAHL:
if ( isset($widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN]) ){
$sprachen = $widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN];
if ( is_array($sprachen) ){
printSprachwahl($sprachen);
}
}
break;
case WIDGET_ARTIKEL:
if ( isset($widget->parameter[WIDGETPARAM_ARTIKEL_ID]) ){
$artikelid = intval($widget->parameter[WIDGETPARAM_ARTIKEL_ID]);
if ( $artikelid > 0 ){
printArtikelFromID($artikelid);
}
}
break;
case WIDGET_KUNDEBEARBEITEN:{
include(includeDir().'kunde.inc.php');
editKunde(true);
}
break;
case WIDGET_SHOP:
{
doAction();
?>
0 ){
//error_log("server count = ".count($output_array));
//error_log(serialize($output_array));
//print(serialize($output_array));
print(json_encode($output_array));
}
}
@unlink($active_file);
?>
0 ){
$_SESSION['REFERER'] = $_GET['referer'];
}
$REFERER = &$_SESSION['REFERER'];
// Die Session beenden, wenn sich die IP ändert oder
// wenn die Zeit der Session abgelaufen ist
//
if ( isset($_SESSION['IP']) && $_SESSION['IP'] != $_GET['webiscoip'] ){
$AUTOMATIC_LOGOUT = true;
session_regenerate_id();
} else if ( $KUNDE->exists() && isset($_SESSION['TIMEOUT']) && $_SESSION['TIMEOUT'] < time() ){
$AUTOMATIC_LOGOUT = true;
}
$_SESSION['IP'] = @$_GET['webiscoip'];
$_SESSION['TIMEOUT'] = time() + $session_timeout_minuten*60;
// Warenkorb inizialisieren
if ( !isset($_SESSION['WARENKORB']) || !is_object($_SESSION['WARENKORB']) ){
$WARENKORB = new Warenkorb();
$_SESSION['WARENKORB'] = $WARENKORB;
}
$WARENKORB = &$_SESSION['WARENKORB'];
// Konfiguration erzeugen
if ( !isset($_SESSION['CONFIG']) || !is_object($_SESSION['CONFIG']) || $AUTOMATIC_LOGOUT ){
$CONFIG = Config::getNewInstance();
$_SESSION['CONFIG'] = $CONFIG;
}
$CONFIG = &$_SESSION['CONFIG'];
//$CONFIG = Config::getNewInstance();
//$_SESSION['CONFIG'] = $CONFIG;
// Fahrzeug inizialisieren
if ( !isset($_SESSION['FAHRZEUG']) || !is_object($_SESSION['FAHRZEUG']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch das evtl. ausgewählte Fahrzeug löschen
$FAHRZEUG = new Fahrzeug();
$_SESSION['FAHRZEUG'] = $FAHRZEUG;
$FAHRZEUGE = array();
$_SESSION['FAHRZEUGE'] = $FAHRZEUGE;
}
$FAHRZEUG = &$_SESSION['FAHRZEUG'];
$FAHRZEUGE = &$_SESSION['FAHRZEUGE']; // wenns mehrere zur Auswahl gibt nach KBA-Nummer-Eingabe
// Motor inizialisieren
if ( !isset($_SESSION['MOTOR']) || !is_object($_SESSION['MOTOR']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch den evtl. ausgewählten Motor löschen
$MOTOR = new Motor();
$_SESSION['MOTOR'] = $MOTOR;
$MOTOREN = array();
$_SESSION['MOTOREN'] = $MOTOREN;
}
$MOTOR = &$_SESSION['MOTOR'];
$MOTOREN = &$_SESSION['MOTOREN']; // wenns mehrere zur Auswahl gibt nach Motorcode-Eingabe
// Artikelcache inizialisieren
if ( !isset($_SESSION['ARTIKELCACHE']) || !is_object($_SESSION['ARTIKELCACHE']) || $AUTOMATIC_LOGOUT ){
$ARTIKELCACHE = new ArtikelCache();
$_SESSION['ARTIKELCACHE'] = $ARTIKELCACHE;
}
$ARTIKELCACHE = &$_SESSION['ARTIKELCACHE'];
//$ARTIKELCACHE->clear(); // wenn der Cache sich immer wieder cleared, gehen keine CSGs, da die zwingend beim Klick im cache sein müssen!
// Artikelstamm erzeugen
if ( !isset($_SESSION['ARTIKELSTAMM']) || !is_object($_SESSION['ARTIKELSTAMM']) ){
$ARTIKELSTAMM = Artikelstamm::instance();
$_SESSION['ARTIKELSTAMM'] = $ARTIKELSTAMM;
}
$ARTIKELSTAMM = &$_SESSION['ARTIKELSTAMM'];
// TecDoc-Objekt erzeugen
if ( !isset($_SESSION['TECDOC']) || !is_object($_SESSION['TECDOC']) ){
$TECDOC = new TecDoc();
$_SESSION['TECDOC'] = $TECDOC;
}
$TECDOC = &$_SESSION['TECDOC'];
// das Bestellungsobjekt wenn es eins gibt
if ( !isset($_SESSION['BESTELLUNG']) ){
$_SESSION['BESTELLUNG'] = null;
}
$BESTELLUNG = &$_SESSION['BESTELLUNG'];
// den Sectionpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION['SECTIONPATH']) || !is_array($_SESSION['SECTIONPATH']) ){
$_SESSION['SECTIONPATH'] = array();
}
$SECTIONPATH = &$_SESSION['SECTIONPATH'];
// den Baugruppenpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION[SESSION_BAUGRUPPENPATH]) ){
$_SESSION[SESSION_BAUGRUPPENPATH] = array();
}
$BAUGRUPPENPATH = &$_SESSION[SESSION_BAUGRUPPENPATH];
// die Webisco-Action in der Session merken für Widgetübergreifende abänderung in doAction()
if ( !isset($_SESSION['WEBISCOACTION']) ){
$_SESSION['WEBISCOACTION'] = '';
}
$WEBISCOACTION = &$_SESSION['WEBISCOACTION'];
// die Webisco-Parameter auch in der Session merken
if ( !isset($_SESSION['WEBISCOPARAMS']) ){
$_SESSION['WEBISCOPARAMS'] = array();
}
$WEBISCOPARAMS = &$_SESSION['WEBISCOPARAMS'];
$unserialize_no_classes = array('allowed_classes' => false);
// jetzt die relevanten Webisco-Parameter aus den GET-
// und POST-Parametern wiederherstellen
$WEBISCOPARAMS = array();
if ( isset($_GET['webiscoparams']) ){
// wenns nicht base64 enkodiert is, muss man stripslashes(stripslashes($serialized)) machen!
$phpserialized = base64_decode($_GET['webiscoparams']);
$unzipped = @gzuncompress($phpserialized);
if ( $unzipped != false ){
$phpserialized = $unzipped;
}
$WEBISCOPARAMS = @unserialize($phpserialized, $unserialize_no_classes);
if ( !is_array($WEBISCOPARAMS) ) {
// dann ist was schief gegangen, wieder ein Array herstellen!
$WEBISCOPARAMS = array();
}
}
// Parameter von der webisco.inc, die mit "webisco..." beginnen
$durchschleif_parameter = array();
$durchschleif_parameter['webiscopermalogin'] = WEBISCOPARAM_PERMALOGIN;
$durchschleif_parameter['webiscopermapasswort'] = WEBISCOPARAM_PERMAPASSWORT;
$durchschleif_parameter['webiscosearch'] = WEBISCOPARAM_WEBISCOSEARCH;
$durchschleif_parameter['webiscosearchoption'] = WEBISCOPARAM_WEBISCOSEARCH_OPTION;
$durchschleif_parameter['webiscopaymentcheck'] = WEBISCOPARAM_PAYMENT_CHECK;
$durchschleif_parameter['webiscopaymentcancel'] = WEBISCOPARAM_PAYMENT_CANCEL;
$durchschleif_parameter['webiscopaymentsystem'] = WEBISCOPARAM_PAYMENT_SYSTEM;
$durchschleif_parameter['webiscoartikelid'] = WEBISCOPARAM_ARTIKELID;
$durchschleif_parameter['webiscopaypaltoken'] = WEBISCOPARAM_PAYPALTOKEN;
$durchschleif_parameter['webiscopaymentsessionid'] = WEBISCOPARAM_PAYMENTSESSIONID;
foreach ( $durchschleif_parameter as $getparameter => $webiscoparam ){
if ( isset($_GET[$getparameter]) && (strlen($_GET[$getparameter]) > 0 || $webiscoparam == WEBISCOPARAM_WEBISCOSEARCH )){
$WEBISCOPARAMS[$webiscoparam] = $_GET[$getparameter];
switch ( $webiscoparam ){
case WEBISCOPARAM_PAYMENT_CHECK:
case WEBISCOPARAM_PAYMENT_CANCEL:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_ZAHLUNG;
break;
case WEBISCOPARAM_ARTIKELID:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SHOW_ARTIKEL;
break;
case WEBISCOPARAM_WEBISCOSEARCH:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SEARCH;
break;
}
}
}
if ( !isset($_SESSION[SESSION_WEBISCOSTATISTIK]) ){
$_SESSION[SESSION_WEBISCOSTATISTIK] = false;
}
$WEBISCOSTATISTIK = &$_SESSION[SESSION_WEBISCOSTATISTIK];
if ( isset($_GET[WEBISCOPARAM_WEBISCOSTATISTIK]) ){
$WEBISCOSTATISTIK = ($_GET[WEBISCOPARAM_WEBISCOSTATISTIK] == 'true');
}
// und noch alle POST-Variablen in die Websico-Params reinkopieren
foreach($_POST as $name => $value){
$WEBISCOPARAMS[$name] = $value;
}
$REFERER = &$_SESSION['REFERER'];
// Die Zeiten in Sekunden (muss auch in artikelcsv.php inizialisiert werden!)
$ZEITEN['tecdoc'] = 0;
$ZEITEN['cache'] = 0;
$ZEITEN['daemon'] = 0;
// Die aktuelle Action holen
$WEBISCOACTION = @$WEBISCOPARAMS[WEBISCOPARAM_ACTION];
// jetzt die externen Webisco-Parameter wiederherstellen
$webiscoextparams = array();
if ( isset($_GET['webiscoextparams']) ){
$webiscoextparams = stripslashes(stripslashes($_GET['webiscoextparams']));
$webiscoextparams = unserialize($webiscoextparams, $unserialize_no_classes);
}
$webiscoextscriptname = @$_GET['webiscoextscriptname'];
// ist das BR-Debug-Flag gesetzt?
// bei getWebiscoWidget() kann man im get-parameter-Array 'brdebug' => true mitgeben!
if ( isset($webiscoextparams['brdebug']) ){
$brdebug = boolval($webiscoextparams['brdebug']);
}
if ( !isset($brdebug) ){
$brdebug = false;
}
//einen File erzeugen, der zeigt, was gerade von einem Client requested wurde
if ( isset($_REQUEST['webiscowidget']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_'.$_REQUEST['webiscowidget'].'_'.rand();
} else if ( isset($_REQUEST['webiscowidgets']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_webiscowidgets_'.rand();
} else {
print404();
die();
}
$filehandle = fopen($active_file, 'w');
fwrite($filehandle, "action: $WEBISCOACTION\n");
foreach ( $WEBISCOPARAMS as $key => $value ){
//error_log("$key: $value");
fwrite($filehandle, "$key: $value\n");
}
fclose($filehandle);
$serialize_output = false;
$webisco_widget_array = array();
$output_array = array();
// de Buffer-ethode um alle Widget-Anfragen in ein extra String-Array-Feld zu packen
function saveOutput($buffer) {
global $output_array;
// Strings haben oft seltsame UTF-8-Zeichen, denn bei komischen Binärdaten (komische Whitespaces z.B. von TecDoc) gehen die Strings im Array kaputt sowohl bei serialize() als auch bei json_encode()
// base64 ginge alternativ aber da wird ja alles länger
// Unnötige Whitespaces, Zeilenumbrüche und Tabs entfernen
$buffer = preg_replace(['/>\s+', '/\s{2,}/', '/\n|\r/'], ['><', ' ', ''], $buffer);
$output_array[] = $buffer;
return '';
}
class WebiscoWidget {
public $name = '';
public $parameter = array();
}
// wurde ein spezieller Widget angefragt?
if ( isset($_REQUEST['webiscowidget']) ){
$widget = new WebiscoWidget();
$widget->name = strtolower(stripslashes(stripslashes($_REQUEST['webiscowidget'])));
if ( isset($_REQUEST['webiscowidgetparams']) ){
$tmpwidgetparams = stripslashes(stripslashes($_REQUEST['webiscowidgetparams']));
$tmpwidgetparams = @unserialize($tmpwidgetparams, $unserialize_no_classes);
if ( is_array($tmpwidgetparams) ){
foreach($tmpwidgetparams as $name => $value){
if ( is_string($value) ){
$widget->parameter[strtolower($name)] = strtolower($value);
} else if ( is_array($value) ){
$widget->parameter[strtolower($name)] = $value;
} else if ( is_int($value) ){
$widget->parameter[strtolower($name)] = $value;
}
}
}
}
$webisco_widget_array[] = $widget;
} else if ( isset($_REQUEST['webiscowidgets']) ){
$serialize_output = true;
$tmp_array = @unserialize($_REQUEST['webiscowidgets'], array('allowed_classes' => array('WebiscoWidget')));
if ( is_array($tmp_array) ){
foreach ( $tmp_array as $widget ){
if ( !is_object($widget) || get_class($widget) != 'WebiscoWidget' ){
return 'Es muss ein Array von WebiscoWidget-Objekten übergeben werden.';
} else {
$webisco_widget_array[] = $widget;
}
}
}
}
// nun alle Widgets der Reihe nach generieren
foreach ( $webisco_widget_array as $widget ){
if ( $serialize_output ){
ob_start('saveOutput');
}
if ( strlen($widget->name) == 0 ){
print404();
}
// Tabellen als
oder ?
$divtables = false;
if ( isset($widget->parameter[WIDGETPARAM_GRIDELEMENT]) ){
$divtables = ($widget->parameter[WIDGETPARAM_GRIDELEMENT] == 'div');
}
// wurde schon ein Fahrzeug übergeben?
// Dann laden wir das von TecDoc, aber nur wenns
// ein anderes ist als das aktuelle
if ( isset($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]) && $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] > 0 && (!isset($FAHRZEUG) || $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] != $FAHRZEUG->getID()) ){
$MOTOR = new Motor();
$FAHRZEUG = $TECDOC->getFahrzeugFromCarID($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
/* else if ( isset($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]) && $WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE] != $MOTOR->getMotorCode() ){
$MOTOR = $TECDOC->getMotorFromMotorCode($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
*/
switch ( $widget->name ) {
case WIDGET_INIT:
doAction();
break;
case WIDGET_SUCHE:
$option_exaktsuche = false;
if ( isset($widget->parameter[WIDGETPARAM_SUCHE_OPTION]) ){
$option_exaktsuche = ($widget->parameter[WIDGETPARAM_SUCHE_OPTION] == WIDGETPARAM_SUCHE_OPTION_EXAKTSUCHE);
}
printSuche($option_exaktsuche);
break;
case WIDGET_FAHRZEUG:
$permanent = false;
$details = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGANZEIGE_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_DETAIL:
$details = true;
break;
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_NORMAL:
default:
$details = false;
break;
}
}
printFahrzeugInfo($permanent, $details);
break;
case WIDGET_FAHRZEUGAUSWAHL:
$permanent = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_PERMANENT:
$permanent = true;
break;
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_NORMAL:
default:
$permanent = false;
break;
}
}
printFahrzeugAuswahl($permanent);
break;
case WIDGET_LOGIN:
printKundenBox();
break;
case WIDGET_NAVIGATION:
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT]) ){
switch ( $widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT] ){
case WIDGETPARAM_NAVIGATION_LAYOUT_LINE:
printRootLine();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TREE:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printTreeNavigation($angebote, $baugruppen);
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_STEPUP:
printUpButton();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TEXTLINKS:
printTextLinks();
break;
}
}
break;
case WIDGET_LINK:
if ( isset($widget->parameter[WIDGETPARAM_LINK_TYP]) ){
$text = @$widget->parameter[WIDGETPARAM_LINK_TYP_TEXT]; // das ist der text, der im Link stehen soll
if ( is_string($text) || $text == '' ){
$text = trim(strval($text));
$linktyp = strval($widget->parameter[WIDGETPARAM_LINK_TYP]);
switch ( $linktyp ){
case WIDGETPARAM_LINK_TYP_AGB:
printAGBButton($text);
break;
case WIDGETPARAM_LINK_TYP_ARTIKEL:
printArtikelButton(intval($widget->parameter[WIDGETPARAM_LINK_TYP_ARTIKEL_ID]), $text);
break;
case WIDGETPARAM_LINK_TYP_ALTOELVERORDNUNG:
printAltoelverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_BARRIEREFREIHEIT:
printBarriereFreiheitButton($text);
break;
case WIDGETPARAM_LINK_TYP_BATTERIEVERORDNUNG:
printBatterieverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_DATENSCHUTZ:
printDatenschutzButton($text);
break;
case WIDGETPARAM_LINK_TYP_IMPRESSUM:
printImpressumButton($text);
break;
case WIDGETPARAM_LINK_TYP_VERSANDBEDINGUNGEN:
printVersandbedingungenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WIDERRUFSBELEHRUNG:
printWiderrufsbelehrungButton($text);
break;
case WIDGETPARAM_LINK_TYP_REKLAMATIONEN:
printReklamationenButton($text);
break;
case WIDGETPARAM_LINK_TYP_ALTTEILPFAND:
printAltteilpfandButton($text);
break;
case WIDGETPARAM_LINK_TYP_STARTSEITE:
printStartseitenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WARENKORB:
printWarenkorbButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEANLEGEN:
printKundeAnlegenButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEBEARBEITEN:
printKundeBearbeitenButton($text);
break;
default:
break;
}
}
}
break;
case WIDGET_WARENKORB:
printWarenkorbInfo();
break;
case WIDGET_COPYRIGHT:
printCopyright();
break;
case WIDGET_HAUPTBEREICH:
showAction();
break;
case WIDGET_ARTIKELDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleArtikelDaten($format);
break;
case WIDGET_FAHRZEUGDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleFahrzeugDaten($format);
break;
case WIDGET_KATEGORIEPFAD:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printKategoriePfad($format);
break;
case WIDGET_KATEGORIEBAUM:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printKategorieBaum($angebote,$baugruppen);
break;
case WIDGET_SPRACHWAHL:
if ( isset($widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN]) ){
$sprachen = $widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN];
if ( is_array($sprachen) ){
printSprachwahl($sprachen);
}
}
break;
case WIDGET_ARTIKEL:
if ( isset($widget->parameter[WIDGETPARAM_ARTIKEL_ID]) ){
$artikelid = intval($widget->parameter[WIDGETPARAM_ARTIKEL_ID]);
if ( $artikelid > 0 ){
printArtikelFromID($artikelid);
}
}
break;
case WIDGET_KUNDEBEARBEITEN:{
include(includeDir().'kunde.inc.php');
editKunde(true);
}
break;
case WIDGET_SHOP:
{
doAction();
?>
0 ){
//error_log("server count = ".count($output_array));
//error_log(serialize($output_array));
//print(serialize($output_array));
print(json_encode($output_array));
}
}
@unlink($active_file);
?>
Kontakt
Telefon
+49 (0) 3306 – 2121000
Mail
info@jt-technics.de
Anschrift
Am Gewerbepark 24
16775 Gransee
Links
0 ){
$_SESSION['REFERER'] = $_GET['referer'];
}
$REFERER = &$_SESSION['REFERER'];
// Die Session beenden, wenn sich die IP ändert oder
// wenn die Zeit der Session abgelaufen ist
//
if ( isset($_SESSION['IP']) && $_SESSION['IP'] != $_GET['webiscoip'] ){
$AUTOMATIC_LOGOUT = true;
session_regenerate_id();
} else if ( $KUNDE->exists() && isset($_SESSION['TIMEOUT']) && $_SESSION['TIMEOUT'] < time() ){
$AUTOMATIC_LOGOUT = true;
}
$_SESSION['IP'] = @$_GET['webiscoip'];
$_SESSION['TIMEOUT'] = time() + $session_timeout_minuten*60;
// Warenkorb inizialisieren
if ( !isset($_SESSION['WARENKORB']) || !is_object($_SESSION['WARENKORB']) ){
$WARENKORB = new Warenkorb();
$_SESSION['WARENKORB'] = $WARENKORB;
}
$WARENKORB = &$_SESSION['WARENKORB'];
// Konfiguration erzeugen
if ( !isset($_SESSION['CONFIG']) || !is_object($_SESSION['CONFIG']) || $AUTOMATIC_LOGOUT ){
$CONFIG = Config::getNewInstance();
$_SESSION['CONFIG'] = $CONFIG;
}
$CONFIG = &$_SESSION['CONFIG'];
//$CONFIG = Config::getNewInstance();
//$_SESSION['CONFIG'] = $CONFIG;
// Fahrzeug inizialisieren
if ( !isset($_SESSION['FAHRZEUG']) || !is_object($_SESSION['FAHRZEUG']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch das evtl. ausgewählte Fahrzeug löschen
$FAHRZEUG = new Fahrzeug();
$_SESSION['FAHRZEUG'] = $FAHRZEUG;
$FAHRZEUGE = array();
$_SESSION['FAHRZEUGE'] = $FAHRZEUGE;
}
$FAHRZEUG = &$_SESSION['FAHRZEUG'];
$FAHRZEUGE = &$_SESSION['FAHRZEUGE']; // wenns mehrere zur Auswahl gibt nach KBA-Nummer-Eingabe
// Motor inizialisieren
if ( !isset($_SESSION['MOTOR']) || !is_object($_SESSION['MOTOR']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch den evtl. ausgewählten Motor löschen
$MOTOR = new Motor();
$_SESSION['MOTOR'] = $MOTOR;
$MOTOREN = array();
$_SESSION['MOTOREN'] = $MOTOREN;
}
$MOTOR = &$_SESSION['MOTOR'];
$MOTOREN = &$_SESSION['MOTOREN']; // wenns mehrere zur Auswahl gibt nach Motorcode-Eingabe
// Artikelcache inizialisieren
if ( !isset($_SESSION['ARTIKELCACHE']) || !is_object($_SESSION['ARTIKELCACHE']) || $AUTOMATIC_LOGOUT ){
$ARTIKELCACHE = new ArtikelCache();
$_SESSION['ARTIKELCACHE'] = $ARTIKELCACHE;
}
$ARTIKELCACHE = &$_SESSION['ARTIKELCACHE'];
//$ARTIKELCACHE->clear(); // wenn der Cache sich immer wieder cleared, gehen keine CSGs, da die zwingend beim Klick im cache sein müssen!
// Artikelstamm erzeugen
if ( !isset($_SESSION['ARTIKELSTAMM']) || !is_object($_SESSION['ARTIKELSTAMM']) ){
$ARTIKELSTAMM = Artikelstamm::instance();
$_SESSION['ARTIKELSTAMM'] = $ARTIKELSTAMM;
}
$ARTIKELSTAMM = &$_SESSION['ARTIKELSTAMM'];
// TecDoc-Objekt erzeugen
if ( !isset($_SESSION['TECDOC']) || !is_object($_SESSION['TECDOC']) ){
$TECDOC = new TecDoc();
$_SESSION['TECDOC'] = $TECDOC;
}
$TECDOC = &$_SESSION['TECDOC'];
// das Bestellungsobjekt wenn es eins gibt
if ( !isset($_SESSION['BESTELLUNG']) ){
$_SESSION['BESTELLUNG'] = null;
}
$BESTELLUNG = &$_SESSION['BESTELLUNG'];
// den Sectionpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION['SECTIONPATH']) || !is_array($_SESSION['SECTIONPATH']) ){
$_SESSION['SECTIONPATH'] = array();
}
$SECTIONPATH = &$_SESSION['SECTIONPATH'];
// den Baugruppenpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION[SESSION_BAUGRUPPENPATH]) ){
$_SESSION[SESSION_BAUGRUPPENPATH] = array();
}
$BAUGRUPPENPATH = &$_SESSION[SESSION_BAUGRUPPENPATH];
// die Webisco-Action in der Session merken für Widgetübergreifende abänderung in doAction()
if ( !isset($_SESSION['WEBISCOACTION']) ){
$_SESSION['WEBISCOACTION'] = '';
}
$WEBISCOACTION = &$_SESSION['WEBISCOACTION'];
// die Webisco-Parameter auch in der Session merken
if ( !isset($_SESSION['WEBISCOPARAMS']) ){
$_SESSION['WEBISCOPARAMS'] = array();
}
$WEBISCOPARAMS = &$_SESSION['WEBISCOPARAMS'];
$unserialize_no_classes = array('allowed_classes' => false);
// jetzt die relevanten Webisco-Parameter aus den GET-
// und POST-Parametern wiederherstellen
$WEBISCOPARAMS = array();
if ( isset($_GET['webiscoparams']) ){
// wenns nicht base64 enkodiert is, muss man stripslashes(stripslashes($serialized)) machen!
$phpserialized = base64_decode($_GET['webiscoparams']);
$unzipped = @gzuncompress($phpserialized);
if ( $unzipped != false ){
$phpserialized = $unzipped;
}
$WEBISCOPARAMS = @unserialize($phpserialized, $unserialize_no_classes);
if ( !is_array($WEBISCOPARAMS) ) {
// dann ist was schief gegangen, wieder ein Array herstellen!
$WEBISCOPARAMS = array();
}
}
// Parameter von der webisco.inc, die mit "webisco..." beginnen
$durchschleif_parameter = array();
$durchschleif_parameter['webiscopermalogin'] = WEBISCOPARAM_PERMALOGIN;
$durchschleif_parameter['webiscopermapasswort'] = WEBISCOPARAM_PERMAPASSWORT;
$durchschleif_parameter['webiscosearch'] = WEBISCOPARAM_WEBISCOSEARCH;
$durchschleif_parameter['webiscosearchoption'] = WEBISCOPARAM_WEBISCOSEARCH_OPTION;
$durchschleif_parameter['webiscopaymentcheck'] = WEBISCOPARAM_PAYMENT_CHECK;
$durchschleif_parameter['webiscopaymentcancel'] = WEBISCOPARAM_PAYMENT_CANCEL;
$durchschleif_parameter['webiscopaymentsystem'] = WEBISCOPARAM_PAYMENT_SYSTEM;
$durchschleif_parameter['webiscoartikelid'] = WEBISCOPARAM_ARTIKELID;
$durchschleif_parameter['webiscopaypaltoken'] = WEBISCOPARAM_PAYPALTOKEN;
$durchschleif_parameter['webiscopaymentsessionid'] = WEBISCOPARAM_PAYMENTSESSIONID;
foreach ( $durchschleif_parameter as $getparameter => $webiscoparam ){
if ( isset($_GET[$getparameter]) && (strlen($_GET[$getparameter]) > 0 || $webiscoparam == WEBISCOPARAM_WEBISCOSEARCH )){
$WEBISCOPARAMS[$webiscoparam] = $_GET[$getparameter];
switch ( $webiscoparam ){
case WEBISCOPARAM_PAYMENT_CHECK:
case WEBISCOPARAM_PAYMENT_CANCEL:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_ZAHLUNG;
break;
case WEBISCOPARAM_ARTIKELID:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SHOW_ARTIKEL;
break;
case WEBISCOPARAM_WEBISCOSEARCH:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SEARCH;
break;
}
}
}
if ( !isset($_SESSION[SESSION_WEBISCOSTATISTIK]) ){
$_SESSION[SESSION_WEBISCOSTATISTIK] = false;
}
$WEBISCOSTATISTIK = &$_SESSION[SESSION_WEBISCOSTATISTIK];
if ( isset($_GET[WEBISCOPARAM_WEBISCOSTATISTIK]) ){
$WEBISCOSTATISTIK = ($_GET[WEBISCOPARAM_WEBISCOSTATISTIK] == 'true');
}
// und noch alle POST-Variablen in die Websico-Params reinkopieren
foreach($_POST as $name => $value){
$WEBISCOPARAMS[$name] = $value;
}
$REFERER = &$_SESSION['REFERER'];
// Die Zeiten in Sekunden (muss auch in artikelcsv.php inizialisiert werden!)
$ZEITEN['tecdoc'] = 0;
$ZEITEN['cache'] = 0;
$ZEITEN['daemon'] = 0;
// Die aktuelle Action holen
$WEBISCOACTION = @$WEBISCOPARAMS[WEBISCOPARAM_ACTION];
// jetzt die externen Webisco-Parameter wiederherstellen
$webiscoextparams = array();
if ( isset($_GET['webiscoextparams']) ){
$webiscoextparams = stripslashes(stripslashes($_GET['webiscoextparams']));
$webiscoextparams = unserialize($webiscoextparams, $unserialize_no_classes);
}
$webiscoextscriptname = @$_GET['webiscoextscriptname'];
// ist das BR-Debug-Flag gesetzt?
// bei getWebiscoWidget() kann man im get-parameter-Array 'brdebug' => true mitgeben!
if ( isset($webiscoextparams['brdebug']) ){
$brdebug = boolval($webiscoextparams['brdebug']);
}
if ( !isset($brdebug) ){
$brdebug = false;
}
//einen File erzeugen, der zeigt, was gerade von einem Client requested wurde
if ( isset($_REQUEST['webiscowidget']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_'.$_REQUEST['webiscowidget'].'_'.rand();
} else if ( isset($_REQUEST['webiscowidgets']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_webiscowidgets_'.rand();
} else {
print404();
die();
}
$filehandle = fopen($active_file, 'w');
fwrite($filehandle, "action: $WEBISCOACTION\n");
foreach ( $WEBISCOPARAMS as $key => $value ){
//error_log("$key: $value");
fwrite($filehandle, "$key: $value\n");
}
fclose($filehandle);
$serialize_output = false;
$webisco_widget_array = array();
$output_array = array();
// de Buffer-ethode um alle Widget-Anfragen in ein extra String-Array-Feld zu packen
function saveOutput($buffer) {
global $output_array;
// Strings haben oft seltsame UTF-8-Zeichen, denn bei komischen Binärdaten (komische Whitespaces z.B. von TecDoc) gehen die Strings im Array kaputt sowohl bei serialize() als auch bei json_encode()
// base64 ginge alternativ aber da wird ja alles länger
// Unnötige Whitespaces, Zeilenumbrüche und Tabs entfernen
$buffer = preg_replace(['/>\s+', '/\s{2,}/', '/\n|\r/'], ['><', ' ', ''], $buffer);
$output_array[] = $buffer;
return '';
}
class WebiscoWidget {
public $name = '';
public $parameter = array();
}
// wurde ein spezieller Widget angefragt?
if ( isset($_REQUEST['webiscowidget']) ){
$widget = new WebiscoWidget();
$widget->name = strtolower(stripslashes(stripslashes($_REQUEST['webiscowidget'])));
if ( isset($_REQUEST['webiscowidgetparams']) ){
$tmpwidgetparams = stripslashes(stripslashes($_REQUEST['webiscowidgetparams']));
$tmpwidgetparams = @unserialize($tmpwidgetparams, $unserialize_no_classes);
if ( is_array($tmpwidgetparams) ){
foreach($tmpwidgetparams as $name => $value){
if ( is_string($value) ){
$widget->parameter[strtolower($name)] = strtolower($value);
} else if ( is_array($value) ){
$widget->parameter[strtolower($name)] = $value;
} else if ( is_int($value) ){
$widget->parameter[strtolower($name)] = $value;
}
}
}
}
$webisco_widget_array[] = $widget;
} else if ( isset($_REQUEST['webiscowidgets']) ){
$serialize_output = true;
$tmp_array = @unserialize($_REQUEST['webiscowidgets'], array('allowed_classes' => array('WebiscoWidget')));
if ( is_array($tmp_array) ){
foreach ( $tmp_array as $widget ){
if ( !is_object($widget) || get_class($widget) != 'WebiscoWidget' ){
return 'Es muss ein Array von WebiscoWidget-Objekten übergeben werden.';
} else {
$webisco_widget_array[] = $widget;
}
}
}
}
// nun alle Widgets der Reihe nach generieren
foreach ( $webisco_widget_array as $widget ){
if ( $serialize_output ){
ob_start('saveOutput');
}
if ( strlen($widget->name) == 0 ){
print404();
}
// Tabellen als
oder ?
$divtables = false;
if ( isset($widget->parameter[WIDGETPARAM_GRIDELEMENT]) ){
$divtables = ($widget->parameter[WIDGETPARAM_GRIDELEMENT] == 'div');
}
// wurde schon ein Fahrzeug übergeben?
// Dann laden wir das von TecDoc, aber nur wenns
// ein anderes ist als das aktuelle
if ( isset($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]) && $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] > 0 && (!isset($FAHRZEUG) || $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] != $FAHRZEUG->getID()) ){
$MOTOR = new Motor();
$FAHRZEUG = $TECDOC->getFahrzeugFromCarID($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
/* else if ( isset($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]) && $WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE] != $MOTOR->getMotorCode() ){
$MOTOR = $TECDOC->getMotorFromMotorCode($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
*/
switch ( $widget->name ) {
case WIDGET_INIT:
doAction();
break;
case WIDGET_SUCHE:
$option_exaktsuche = false;
if ( isset($widget->parameter[WIDGETPARAM_SUCHE_OPTION]) ){
$option_exaktsuche = ($widget->parameter[WIDGETPARAM_SUCHE_OPTION] == WIDGETPARAM_SUCHE_OPTION_EXAKTSUCHE);
}
printSuche($option_exaktsuche);
break;
case WIDGET_FAHRZEUG:
$permanent = false;
$details = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGANZEIGE_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_DETAIL:
$details = true;
break;
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_NORMAL:
default:
$details = false;
break;
}
}
printFahrzeugInfo($permanent, $details);
break;
case WIDGET_FAHRZEUGAUSWAHL:
$permanent = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_PERMANENT:
$permanent = true;
break;
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_NORMAL:
default:
$permanent = false;
break;
}
}
printFahrzeugAuswahl($permanent);
break;
case WIDGET_LOGIN:
printKundenBox();
break;
case WIDGET_NAVIGATION:
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT]) ){
switch ( $widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT] ){
case WIDGETPARAM_NAVIGATION_LAYOUT_LINE:
printRootLine();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TREE:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printTreeNavigation($angebote, $baugruppen);
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_STEPUP:
printUpButton();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TEXTLINKS:
printTextLinks();
break;
}
}
break;
case WIDGET_LINK:
if ( isset($widget->parameter[WIDGETPARAM_LINK_TYP]) ){
$text = @$widget->parameter[WIDGETPARAM_LINK_TYP_TEXT]; // das ist der text, der im Link stehen soll
if ( is_string($text) || $text == '' ){
$text = trim(strval($text));
$linktyp = strval($widget->parameter[WIDGETPARAM_LINK_TYP]);
switch ( $linktyp ){
case WIDGETPARAM_LINK_TYP_AGB:
printAGBButton($text);
break;
case WIDGETPARAM_LINK_TYP_ARTIKEL:
printArtikelButton(intval($widget->parameter[WIDGETPARAM_LINK_TYP_ARTIKEL_ID]), $text);
break;
case WIDGETPARAM_LINK_TYP_ALTOELVERORDNUNG:
printAltoelverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_BARRIEREFREIHEIT:
printBarriereFreiheitButton($text);
break;
case WIDGETPARAM_LINK_TYP_BATTERIEVERORDNUNG:
printBatterieverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_DATENSCHUTZ:
printDatenschutzButton($text);
break;
case WIDGETPARAM_LINK_TYP_IMPRESSUM:
printImpressumButton($text);
break;
case WIDGETPARAM_LINK_TYP_VERSANDBEDINGUNGEN:
printVersandbedingungenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WIDERRUFSBELEHRUNG:
printWiderrufsbelehrungButton($text);
break;
case WIDGETPARAM_LINK_TYP_REKLAMATIONEN:
printReklamationenButton($text);
break;
case WIDGETPARAM_LINK_TYP_ALTTEILPFAND:
printAltteilpfandButton($text);
break;
case WIDGETPARAM_LINK_TYP_STARTSEITE:
printStartseitenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WARENKORB:
printWarenkorbButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEANLEGEN:
printKundeAnlegenButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEBEARBEITEN:
printKundeBearbeitenButton($text);
break;
default:
break;
}
}
}
break;
case WIDGET_WARENKORB:
printWarenkorbInfo();
break;
case WIDGET_COPYRIGHT:
printCopyright();
break;
case WIDGET_HAUPTBEREICH:
showAction();
break;
case WIDGET_ARTIKELDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleArtikelDaten($format);
break;
case WIDGET_FAHRZEUGDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleFahrzeugDaten($format);
break;
case WIDGET_KATEGORIEPFAD:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printKategoriePfad($format);
break;
case WIDGET_KATEGORIEBAUM:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printKategorieBaum($angebote,$baugruppen);
break;
case WIDGET_SPRACHWAHL:
if ( isset($widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN]) ){
$sprachen = $widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN];
if ( is_array($sprachen) ){
printSprachwahl($sprachen);
}
}
break;
case WIDGET_ARTIKEL:
if ( isset($widget->parameter[WIDGETPARAM_ARTIKEL_ID]) ){
$artikelid = intval($widget->parameter[WIDGETPARAM_ARTIKEL_ID]);
if ( $artikelid > 0 ){
printArtikelFromID($artikelid);
}
}
break;
case WIDGET_KUNDEBEARBEITEN:{
include(includeDir().'kunde.inc.php');
editKunde(true);
}
break;
case WIDGET_SHOP:
{
doAction();
?>
0 ){
//error_log("server count = ".count($output_array));
//error_log(serialize($output_array));
//print(serialize($output_array));
print(json_encode($output_array));
}
}
@unlink($active_file);
?>
Sicher einkaufen
Bequemes Bezahlen
Sicherer Versand
Info
0 ){
$_SESSION['REFERER'] = $_GET['referer'];
}
$REFERER = &$_SESSION['REFERER'];
// Die Session beenden, wenn sich die IP ändert oder
// wenn die Zeit der Session abgelaufen ist
//
if ( isset($_SESSION['IP']) && $_SESSION['IP'] != $_GET['webiscoip'] ){
$AUTOMATIC_LOGOUT = true;
session_regenerate_id();
} else if ( $KUNDE->exists() && isset($_SESSION['TIMEOUT']) && $_SESSION['TIMEOUT'] < time() ){
$AUTOMATIC_LOGOUT = true;
}
$_SESSION['IP'] = @$_GET['webiscoip'];
$_SESSION['TIMEOUT'] = time() + $session_timeout_minuten*60;
// Warenkorb inizialisieren
if ( !isset($_SESSION['WARENKORB']) || !is_object($_SESSION['WARENKORB']) ){
$WARENKORB = new Warenkorb();
$_SESSION['WARENKORB'] = $WARENKORB;
}
$WARENKORB = &$_SESSION['WARENKORB'];
// Konfiguration erzeugen
if ( !isset($_SESSION['CONFIG']) || !is_object($_SESSION['CONFIG']) || $AUTOMATIC_LOGOUT ){
$CONFIG = Config::getNewInstance();
$_SESSION['CONFIG'] = $CONFIG;
}
$CONFIG = &$_SESSION['CONFIG'];
//$CONFIG = Config::getNewInstance();
//$_SESSION['CONFIG'] = $CONFIG;
// Fahrzeug inizialisieren
if ( !isset($_SESSION['FAHRZEUG']) || !is_object($_SESSION['FAHRZEUG']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch das evtl. ausgewählte Fahrzeug löschen
$FAHRZEUG = new Fahrzeug();
$_SESSION['FAHRZEUG'] = $FAHRZEUG;
$FAHRZEUGE = array();
$_SESSION['FAHRZEUGE'] = $FAHRZEUGE;
}
$FAHRZEUG = &$_SESSION['FAHRZEUG'];
$FAHRZEUGE = &$_SESSION['FAHRZEUGE']; // wenns mehrere zur Auswahl gibt nach KBA-Nummer-Eingabe
// Motor inizialisieren
if ( !isset($_SESSION['MOTOR']) || !is_object($_SESSION['MOTOR']) || !$CONFIG->isTecDoc() ){
// wenns kein TecDoc gibt, dann auch den evtl. ausgewählten Motor löschen
$MOTOR = new Motor();
$_SESSION['MOTOR'] = $MOTOR;
$MOTOREN = array();
$_SESSION['MOTOREN'] = $MOTOREN;
}
$MOTOR = &$_SESSION['MOTOR'];
$MOTOREN = &$_SESSION['MOTOREN']; // wenns mehrere zur Auswahl gibt nach Motorcode-Eingabe
// Artikelcache inizialisieren
if ( !isset($_SESSION['ARTIKELCACHE']) || !is_object($_SESSION['ARTIKELCACHE']) || $AUTOMATIC_LOGOUT ){
$ARTIKELCACHE = new ArtikelCache();
$_SESSION['ARTIKELCACHE'] = $ARTIKELCACHE;
}
$ARTIKELCACHE = &$_SESSION['ARTIKELCACHE'];
//$ARTIKELCACHE->clear(); // wenn der Cache sich immer wieder cleared, gehen keine CSGs, da die zwingend beim Klick im cache sein müssen!
// Artikelstamm erzeugen
if ( !isset($_SESSION['ARTIKELSTAMM']) || !is_object($_SESSION['ARTIKELSTAMM']) ){
$ARTIKELSTAMM = Artikelstamm::instance();
$_SESSION['ARTIKELSTAMM'] = $ARTIKELSTAMM;
}
$ARTIKELSTAMM = &$_SESSION['ARTIKELSTAMM'];
// TecDoc-Objekt erzeugen
if ( !isset($_SESSION['TECDOC']) || !is_object($_SESSION['TECDOC']) ){
$TECDOC = new TecDoc();
$_SESSION['TECDOC'] = $TECDOC;
}
$TECDOC = &$_SESSION['TECDOC'];
// das Bestellungsobjekt wenn es eins gibt
if ( !isset($_SESSION['BESTELLUNG']) ){
$_SESSION['BESTELLUNG'] = null;
}
$BESTELLUNG = &$_SESSION['BESTELLUNG'];
// den Sectionpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION['SECTIONPATH']) || !is_array($_SESSION['SECTIONPATH']) ){
$_SESSION['SECTIONPATH'] = array();
}
$SECTIONPATH = &$_SESSION['SECTIONPATH'];
// den Baugruppenpfad wenns einen gibt, wird in doAction() evtl. neu gesetzt
if ( !isset($_SESSION[SESSION_BAUGRUPPENPATH]) ){
$_SESSION[SESSION_BAUGRUPPENPATH] = array();
}
$BAUGRUPPENPATH = &$_SESSION[SESSION_BAUGRUPPENPATH];
// die Webisco-Action in der Session merken für Widgetübergreifende abänderung in doAction()
if ( !isset($_SESSION['WEBISCOACTION']) ){
$_SESSION['WEBISCOACTION'] = '';
}
$WEBISCOACTION = &$_SESSION['WEBISCOACTION'];
// die Webisco-Parameter auch in der Session merken
if ( !isset($_SESSION['WEBISCOPARAMS']) ){
$_SESSION['WEBISCOPARAMS'] = array();
}
$WEBISCOPARAMS = &$_SESSION['WEBISCOPARAMS'];
$unserialize_no_classes = array('allowed_classes' => false);
// jetzt die relevanten Webisco-Parameter aus den GET-
// und POST-Parametern wiederherstellen
$WEBISCOPARAMS = array();
if ( isset($_GET['webiscoparams']) ){
// wenns nicht base64 enkodiert is, muss man stripslashes(stripslashes($serialized)) machen!
$phpserialized = base64_decode($_GET['webiscoparams']);
$unzipped = @gzuncompress($phpserialized);
if ( $unzipped != false ){
$phpserialized = $unzipped;
}
$WEBISCOPARAMS = @unserialize($phpserialized, $unserialize_no_classes);
if ( !is_array($WEBISCOPARAMS) ) {
// dann ist was schief gegangen, wieder ein Array herstellen!
$WEBISCOPARAMS = array();
}
}
// Parameter von der webisco.inc, die mit "webisco..." beginnen
$durchschleif_parameter = array();
$durchschleif_parameter['webiscopermalogin'] = WEBISCOPARAM_PERMALOGIN;
$durchschleif_parameter['webiscopermapasswort'] = WEBISCOPARAM_PERMAPASSWORT;
$durchschleif_parameter['webiscosearch'] = WEBISCOPARAM_WEBISCOSEARCH;
$durchschleif_parameter['webiscosearchoption'] = WEBISCOPARAM_WEBISCOSEARCH_OPTION;
$durchschleif_parameter['webiscopaymentcheck'] = WEBISCOPARAM_PAYMENT_CHECK;
$durchschleif_parameter['webiscopaymentcancel'] = WEBISCOPARAM_PAYMENT_CANCEL;
$durchschleif_parameter['webiscopaymentsystem'] = WEBISCOPARAM_PAYMENT_SYSTEM;
$durchschleif_parameter['webiscoartikelid'] = WEBISCOPARAM_ARTIKELID;
$durchschleif_parameter['webiscopaypaltoken'] = WEBISCOPARAM_PAYPALTOKEN;
$durchschleif_parameter['webiscopaymentsessionid'] = WEBISCOPARAM_PAYMENTSESSIONID;
foreach ( $durchschleif_parameter as $getparameter => $webiscoparam ){
if ( isset($_GET[$getparameter]) && (strlen($_GET[$getparameter]) > 0 || $webiscoparam == WEBISCOPARAM_WEBISCOSEARCH )){
$WEBISCOPARAMS[$webiscoparam] = $_GET[$getparameter];
switch ( $webiscoparam ){
case WEBISCOPARAM_PAYMENT_CHECK:
case WEBISCOPARAM_PAYMENT_CANCEL:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_ZAHLUNG;
break;
case WEBISCOPARAM_ARTIKELID:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SHOW_ARTIKEL;
break;
case WEBISCOPARAM_WEBISCOSEARCH:
$WEBISCOPARAMS[WEBISCOPARAM_ACTION] = ACTION_SEARCH;
break;
}
}
}
if ( !isset($_SESSION[SESSION_WEBISCOSTATISTIK]) ){
$_SESSION[SESSION_WEBISCOSTATISTIK] = false;
}
$WEBISCOSTATISTIK = &$_SESSION[SESSION_WEBISCOSTATISTIK];
if ( isset($_GET[WEBISCOPARAM_WEBISCOSTATISTIK]) ){
$WEBISCOSTATISTIK = ($_GET[WEBISCOPARAM_WEBISCOSTATISTIK] == 'true');
}
// und noch alle POST-Variablen in die Websico-Params reinkopieren
foreach($_POST as $name => $value){
$WEBISCOPARAMS[$name] = $value;
}
$REFERER = &$_SESSION['REFERER'];
// Die Zeiten in Sekunden (muss auch in artikelcsv.php inizialisiert werden!)
$ZEITEN['tecdoc'] = 0;
$ZEITEN['cache'] = 0;
$ZEITEN['daemon'] = 0;
// Die aktuelle Action holen
$WEBISCOACTION = @$WEBISCOPARAMS[WEBISCOPARAM_ACTION];
// jetzt die externen Webisco-Parameter wiederherstellen
$webiscoextparams = array();
if ( isset($_GET['webiscoextparams']) ){
$webiscoextparams = stripslashes(stripslashes($_GET['webiscoextparams']));
$webiscoextparams = unserialize($webiscoextparams, $unserialize_no_classes);
}
$webiscoextscriptname = @$_GET['webiscoextscriptname'];
// ist das BR-Debug-Flag gesetzt?
// bei getWebiscoWidget() kann man im get-parameter-Array 'brdebug' => true mitgeben!
if ( isset($webiscoextparams['brdebug']) ){
$brdebug = boolval($webiscoextparams['brdebug']);
}
if ( !isset($brdebug) ){
$brdebug = false;
}
//einen File erzeugen, der zeigt, was gerade von einem Client requested wurde
if ( isset($_REQUEST['webiscowidget']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_'.$_REQUEST['webiscowidget'].'_'.rand();
} else if ( isset($_REQUEST['webiscowidgets']) ){
$active_file = '/tmp/webisco_request_'.date('Y-m-d_H-i-s').'_'.$_SERVER['REMOTE_ADDR'].'_'.$kundennummer.'_webiscowidgets_'.rand();
} else {
print404();
die();
}
$filehandle = fopen($active_file, 'w');
fwrite($filehandle, "action: $WEBISCOACTION\n");
foreach ( $WEBISCOPARAMS as $key => $value ){
//error_log("$key: $value");
fwrite($filehandle, "$key: $value\n");
}
fclose($filehandle);
$serialize_output = false;
$webisco_widget_array = array();
$output_array = array();
// de Buffer-ethode um alle Widget-Anfragen in ein extra String-Array-Feld zu packen
function saveOutput($buffer) {
global $output_array;
// Strings haben oft seltsame UTF-8-Zeichen, denn bei komischen Binärdaten (komische Whitespaces z.B. von TecDoc) gehen die Strings im Array kaputt sowohl bei serialize() als auch bei json_encode()
// base64 ginge alternativ aber da wird ja alles länger
// Unnötige Whitespaces, Zeilenumbrüche und Tabs entfernen
$buffer = preg_replace(['/>\s+', '/\s{2,}/', '/\n|\r/'], ['><', ' ', ''], $buffer);
$output_array[] = $buffer;
return '';
}
class WebiscoWidget {
public $name = '';
public $parameter = array();
}
// wurde ein spezieller Widget angefragt?
if ( isset($_REQUEST['webiscowidget']) ){
$widget = new WebiscoWidget();
$widget->name = strtolower(stripslashes(stripslashes($_REQUEST['webiscowidget'])));
if ( isset($_REQUEST['webiscowidgetparams']) ){
$tmpwidgetparams = stripslashes(stripslashes($_REQUEST['webiscowidgetparams']));
$tmpwidgetparams = @unserialize($tmpwidgetparams, $unserialize_no_classes);
if ( is_array($tmpwidgetparams) ){
foreach($tmpwidgetparams as $name => $value){
if ( is_string($value) ){
$widget->parameter[strtolower($name)] = strtolower($value);
} else if ( is_array($value) ){
$widget->parameter[strtolower($name)] = $value;
} else if ( is_int($value) ){
$widget->parameter[strtolower($name)] = $value;
}
}
}
}
$webisco_widget_array[] = $widget;
} else if ( isset($_REQUEST['webiscowidgets']) ){
$serialize_output = true;
$tmp_array = @unserialize($_REQUEST['webiscowidgets'], array('allowed_classes' => array('WebiscoWidget')));
if ( is_array($tmp_array) ){
foreach ( $tmp_array as $widget ){
if ( !is_object($widget) || get_class($widget) != 'WebiscoWidget' ){
return 'Es muss ein Array von WebiscoWidget-Objekten übergeben werden.';
} else {
$webisco_widget_array[] = $widget;
}
}
}
}
// nun alle Widgets der Reihe nach generieren
foreach ( $webisco_widget_array as $widget ){
if ( $serialize_output ){
ob_start('saveOutput');
}
if ( strlen($widget->name) == 0 ){
print404();
}
// Tabellen als
oder ?
$divtables = false;
if ( isset($widget->parameter[WIDGETPARAM_GRIDELEMENT]) ){
$divtables = ($widget->parameter[WIDGETPARAM_GRIDELEMENT] == 'div');
}
// wurde schon ein Fahrzeug übergeben?
// Dann laden wir das von TecDoc, aber nur wenns
// ein anderes ist als das aktuelle
if ( isset($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]) && $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] > 0 && (!isset($FAHRZEUG) || $WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID] != $FAHRZEUG->getID()) ){
$MOTOR = new Motor();
$FAHRZEUG = $TECDOC->getFahrzeugFromCarID($WEBISCOPARAMS[WEBISCOPARAM_FAHRZEUGID]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
/* else if ( isset($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]) && $WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE] != $MOTOR->getMotorCode() ){
$MOTOR = $TECDOC->getMotorFromMotorCode($WEBISCOPARAMS[WEBISCOPARAM_MOTORCODE]);
// dann stimmen eventuell die ArtikelZusätze nicht mehr -> Zusätze im Cache leeren
}
*/
switch ( $widget->name ) {
case WIDGET_INIT:
doAction();
break;
case WIDGET_SUCHE:
$option_exaktsuche = false;
if ( isset($widget->parameter[WIDGETPARAM_SUCHE_OPTION]) ){
$option_exaktsuche = ($widget->parameter[WIDGETPARAM_SUCHE_OPTION] == WIDGETPARAM_SUCHE_OPTION_EXAKTSUCHE);
}
printSuche($option_exaktsuche);
break;
case WIDGET_FAHRZEUG:
$permanent = false;
$details = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGANZEIGE_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_DETAIL:
$details = true;
break;
case WIDGETPARAM_FAHRZEUGANZEIGE_TYP_NORMAL:
default:
$details = false;
break;
}
}
printFahrzeugInfo($permanent, $details);
break;
case WIDGET_FAHRZEUGAUSWAHL:
$permanent = false;
if ( isset($widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP]) ){
switch ( $widget->parameter[WIDGETPARAM_FAHRZEUGAUSWAHL_TYP] ){
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_PERMANENT:
$permanent = true;
break;
case WIDGETPARAM_FAHRZEUGAUSWAHL_TYP_NORMAL:
default:
$permanent = false;
break;
}
}
printFahrzeugAuswahl($permanent);
break;
case WIDGET_LOGIN:
printKundenBox();
break;
case WIDGET_NAVIGATION:
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT]) ){
switch ( $widget->parameter[WIDGETPARAM_NAVIGATION_LAYOUT] ){
case WIDGETPARAM_NAVIGATION_LAYOUT_LINE:
printRootLine();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TREE:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printTreeNavigation($angebote, $baugruppen);
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_STEPUP:
printUpButton();
break;
case WIDGETPARAM_NAVIGATION_LAYOUT_TEXTLINKS:
printTextLinks();
break;
}
}
break;
case WIDGET_LINK:
if ( isset($widget->parameter[WIDGETPARAM_LINK_TYP]) ){
$text = @$widget->parameter[WIDGETPARAM_LINK_TYP_TEXT]; // das ist der text, der im Link stehen soll
if ( is_string($text) || $text == '' ){
$text = trim(strval($text));
$linktyp = strval($widget->parameter[WIDGETPARAM_LINK_TYP]);
switch ( $linktyp ){
case WIDGETPARAM_LINK_TYP_AGB:
printAGBButton($text);
break;
case WIDGETPARAM_LINK_TYP_ARTIKEL:
printArtikelButton(intval($widget->parameter[WIDGETPARAM_LINK_TYP_ARTIKEL_ID]), $text);
break;
case WIDGETPARAM_LINK_TYP_ALTOELVERORDNUNG:
printAltoelverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_BARRIEREFREIHEIT:
printBarriereFreiheitButton($text);
break;
case WIDGETPARAM_LINK_TYP_BATTERIEVERORDNUNG:
printBatterieverordnungButton($text);
break;
case WIDGETPARAM_LINK_TYP_DATENSCHUTZ:
printDatenschutzButton($text);
break;
case WIDGETPARAM_LINK_TYP_IMPRESSUM:
printImpressumButton($text);
break;
case WIDGETPARAM_LINK_TYP_VERSANDBEDINGUNGEN:
printVersandbedingungenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WIDERRUFSBELEHRUNG:
printWiderrufsbelehrungButton($text);
break;
case WIDGETPARAM_LINK_TYP_REKLAMATIONEN:
printReklamationenButton($text);
break;
case WIDGETPARAM_LINK_TYP_ALTTEILPFAND:
printAltteilpfandButton($text);
break;
case WIDGETPARAM_LINK_TYP_STARTSEITE:
printStartseitenButton($text);
break;
case WIDGETPARAM_LINK_TYP_WARENKORB:
printWarenkorbButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEANLEGEN:
printKundeAnlegenButton($text);
break;
case WIDGETPARAM_LINK_TYP_KUNDEBEARBEITEN:
printKundeBearbeitenButton($text);
break;
default:
break;
}
}
}
break;
case WIDGET_WARENKORB:
printWarenkorbInfo();
break;
case WIDGET_COPYRIGHT:
printCopyright();
break;
case WIDGET_HAUPTBEREICH:
showAction();
break;
case WIDGET_ARTIKELDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleArtikelDaten($format);
break;
case WIDGET_FAHRZEUGDATEN:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printAktuelleFahrzeugDaten($format);
break;
case WIDGET_KATEGORIEPFAD:
$format = WIDGETPARAM_FORMAT_TEXT;
if ( isset($widget->parameter[WIDGETPARAM_FORMAT]) && $widget->parameter[WIDGETPARAM_FORMAT] == WIDGETPARAM_FORMAT_JSON ){
$format = WIDGETPARAM_FORMAT_JSON;
}
printKategoriePfad($format);
break;
case WIDGET_KATEGORIEBAUM:
$angebote = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE]) ){
$angebote = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_ANGEBOTE] == 'true');
}
$baugruppen = true;
if ( isset($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN]) ){
$baugruppen = ($widget->parameter[WIDGETPARAM_NAVIGATION_TREE_BAUGRUPPEN] == 'true');
}
printKategorieBaum($angebote,$baugruppen);
break;
case WIDGET_SPRACHWAHL:
if ( isset($widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN]) ){
$sprachen = $widget->parameter[WIDGETPARAM_SPRACHWAHL_SPRACHEN];
if ( is_array($sprachen) ){
printSprachwahl($sprachen);
}
}
break;
case WIDGET_ARTIKEL:
if ( isset($widget->parameter[WIDGETPARAM_ARTIKEL_ID]) ){
$artikelid = intval($widget->parameter[WIDGETPARAM_ARTIKEL_ID]);
if ( $artikelid > 0 ){
printArtikelFromID($artikelid);
}
}
break;
case WIDGET_KUNDEBEARBEITEN:{
include(includeDir().'kunde.inc.php');
editKunde(true);
}
break;
case WIDGET_SHOP:
{
doAction();
?>
0 ){
//error_log("server count = ".count($output_array));
//error_log(serialize($output_array));
//print(serialize($output_array));
print(json_encode($output_array));
}
}
@unlink($active_file);
?>