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