PageRenderTime 55ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/toolsajax.server.php

https://bitbucket.org/photografixgit/all4sps-git
PHP | 1698 lines | 1243 code | 287 blank | 168 comment | 223 complexity | 78628cdc041003f849a25c0b9ea922cf MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. /**
  3. * copyright (c) 2006-2010 JTL-Software-GmbH, all rights reserved
  4. *
  5. * this file may not be redistributed in whole or significant part
  6. * and is subject to the JTL-Software-GmbH license.
  7. *
  8. * license: http://jtl-software.de/jtlshop3license.html
  9. */
  10. require_once("includes/globalinclude.php");
  11. $session = new Session();
  12. require_once(PFAD_ROOT . PFAD_INCLUDES . "smartyInlcude.php");
  13. require_once("toolsajax.common.php");
  14. $cAktuelleSeite = substr(strrchr($_SERVER['HTTP_REFERER'], "/"), 1, strlen(strrchr($_SERVER['HTTP_REFERER'], "/")));
  15. if($cAktuelleSeite == "ajaxcheckout.php?" || $cAktuelleSeite == "warenkorb.php?" || substr(strrchr($_SERVER['PHP_SELF'], "/"), 1, strlen(strrchr($_SERVER['PHP_SELF'], "/"))) == "ajaxcheckout.php")
  16. {
  17. $Einstellungen = getEinstellungen(array(CONF_GLOBAL,CONF_NAVIGATIONSFILTER,CONF_RSS,CONF_KUNDEN,CONF_KAUFABWICKLUNG,CONF_KUNDENFELD,CONF_KUNDENWERBENKUNDEN,CONF_TRUSTEDSHOPS,CONF_AUSWAHLASSISTENT,CONF_METAANGABEN));
  18. $GlobaleEinstellungen = $Einstellungen['global'];
  19. }
  20. function gibFinanzierungInfo($kArtikel, $fPreis)
  21. {
  22. global $smarty;
  23. require_once(PFAD_ROOT . PFAD_INCLUDES_EXT . 'finanzierung_inc.php');
  24. $oArtikel = new stdClass;
  25. $objResponse = new xajaxResponse();
  26. $oArtikel->Preise = new stdClass;
  27. $oArtikel->kArtikel = $kArtikel;
  28. $oArtikel->Preise->fVK = array($fPreis);
  29. gibFinanzierung($oArtikel);
  30. if (isset($oArtikel->oRateMin))
  31. {
  32. $smarty->assign('Artikel', $oArtikel);
  33. $smarty->assign('Einstellungen', getEinstellungen(array(CONF_ARTIKELDETAILS)));
  34. $cText = $smarty->fetch('tpl_inc/artikel_finanzierung.tpl');
  35. $cTable = $smarty->fetch('tpl_inc/artikel_finanzierung_popup.tpl');
  36. $objResponse->assign("commerz_financing", "innerHTML", $cText);
  37. $objResponse->assign("popupf" . $kArtikel, "innerHTML", $cTable);
  38. }
  39. $objResponse->assign("commerz_financing", "style.display", isset($oArtikel->oRateMin) ? "block" : "none");
  40. return $objResponse;
  41. }
  42. function billpayRates()
  43. {
  44. global $smarty;
  45. require_once(PFAD_ROOT . PFAD_INCLUDES_MODULES . 'PaymentMethod.class.php');
  46. $oAjax = new xajaxResponse();
  47. $oResponse = new stdClass;
  48. $oResponse->nType = 0;
  49. $oBillpay = PaymentMethod::create('za_billpay_jtl');
  50. if ($oBillpay)
  51. {
  52. $oRates = $oBillpay->calculateRates($_SESSION['Warenkorb']);
  53. if (is_object($oRates))
  54. {
  55. $oResponse->nType = 2;
  56. $oResponse->cRateHTML_arr = array();
  57. $oResponse->nRates_arr = $oRates->nAvailable_arr;
  58. // special link
  59. $cPortalHash = md5($oBillpay->getSetting('pid'));
  60. $cBillpayTermsURL = BILLPAY_TERMS_RATE;
  61. $cBillpayTermsURL = str_replace('%pidhash%', $cPortalHash, $cBillpayTermsURL);
  62. foreach ($oRates->aRates_arr as $oRate)
  63. {
  64. // rate
  65. $smarty->assign('oRate', $oRate);
  66. $smarty->assign('nRate_arr', $oRates->nAvailable_arr);
  67. // links
  68. $smarty->assign('cBillpayTermsURL', $cBillpayTermsURL);
  69. $smarty->assign('cBillpayPrivacyURL', BILLPAY_PRIVACY);
  70. $smarty->assign('cBillpayTermsPaymentURL', BILLPAY_TERMS_PAYMENT);
  71. $oResponse->cRateHTML_arr[$oRate->nRate] = utf8_encode($smarty->fetch('tpl_inc/modules/billpay/raten.tpl'));
  72. }
  73. }
  74. else
  75. {
  76. $oResponse->nType = 1;
  77. }
  78. }
  79. $oAjax->script("this.response = " . json_encode($oResponse) . ";");
  80. return $oAjax;
  81. }
  82. function gibVergleichsliste($nVLKeys = 0, $bWarenkorb = true)
  83. {
  84. global $smarty;
  85. require_once("includes/vergleichsliste_inc.php");
  86. $objResponse = new xajaxResponse();
  87. //session starten
  88. $session = new Session();
  89. $Einstellungen_Vergleichsliste = getEinstellungen(array(CONF_VERGLEICHSLISTE,CONF_ARTIKELDETAILS));
  90. //url
  91. $requestURL = baueURL($Link,URLART_SEITE);
  92. $sprachURL = baueSprachURLS($Link,URLART_SEITE);
  93. $oVergleichsliste = new Vergleichsliste();
  94. // Falls $nVLKeys 1 ist, nimm die kArtikel von $_SESSION['nArtikelUebersichtVLKey_arr'] und baue eine neue TMP Vergleichsliste
  95. if($nVLKeys == 1 && isset($_SESSION['nArtikelUebersichtVLKey_arr']) && is_array($_SESSION['nArtikelUebersichtVLKey_arr']) && count($_SESSION['nArtikelUebersichtVLKey_arr']) > 0)
  96. {
  97. $oVergleichsliste->oArtikel_arr = array();
  98. foreach($_SESSION['nArtikelUebersichtVLKey_arr'] as $nArtikelUebersichtVLKey)
  99. $oVergleichsliste->fuegeEin($nArtikelUebersichtVLKey, false);
  100. // Laufe erneut die fertigen Artikel durch lösche Vaterartikel von der Vergleichsliste, da diese nicht verglichen werden dürfen
  101. /*
  102. if(count($oVergleichsliste->oArtikel_arr) > 0)
  103. {
  104. $nCount = count($oVergleichsliste->oArtikel_arr);
  105. for($i = 0; $i < $nCount; $i++)
  106. {
  107. if($oVergleichsliste->oArtikel_arr[$i]->nIstVater == 1)
  108. unset($oVergleichsliste->oArtikel_arr[$i]);
  109. }
  110. $oVergleichsliste->oArtikel_arr = array_merge($oVergleichsliste->oArtikel_arr);
  111. }
  112. */
  113. }
  114. elseif ($nVLKeys != 0 && strlen($nVLKeys) > 0)
  115. {
  116. $nVLKey_arr = explode(';', $nVLKeys);
  117. if (is_array($nVLKey_arr))
  118. {
  119. for ($i = 0; $i < count($nVLKey_arr); $i+=2)
  120. {
  121. $oVergleichsliste->fuegeEin($nVLKey_arr[$i], false, $nVLKey_arr[$i+1]);
  122. }
  123. }
  124. }
  125. $oMerkVaria_arr = baueMerkmalundVariation($oVergleichsliste);
  126. // Füge den Vergleich für Statistikzwecke in die DB ein
  127. setzeVergleich($oVergleichsliste);
  128. $cExclude = array();
  129. for($i=0; $i<8; $i++)
  130. {
  131. $cElement = gibMaxPrioSpalteV($cExclude, $Einstellungen_Vergleichsliste);
  132. if(strlen($cElement) > 1)
  133. {
  134. array_push($cExclude, $cElement);
  135. }
  136. }
  137. // Spaltenbreite
  138. $nBreiteAttribut = 100;
  139. if(intval($Einstellungen_Vergleichsliste['vergleichsliste']['vergleichsliste_spaltengroesseattribut']) > 0)
  140. $nBreiteAttribut = intval($Einstellungen_Vergleichsliste['vergleichsliste']['vergleichsliste_spaltengroesseattribut']);
  141. $nBreiteArtikel = 200;
  142. if(intval($Einstellungen_Vergleichsliste['vergleichsliste']['vergleichsliste_spaltengroesse']) > 0)
  143. $nBreiteArtikel = intval($Einstellungen_Vergleichsliste['vergleichsliste']['vergleichsliste_spaltengroesse']);
  144. $nBreiteTabelle = $nBreiteArtikel * count($oVergleichsliste->oArtikel_arr) + $nBreiteAttribut;
  145. //spezifische assigns
  146. $smarty->assign('nBreiteTabelle', $nBreiteTabelle);
  147. $smarty->assign('cPrioSpalten_arr', $cExclude);
  148. $smarty->assign('oMerkmale_arr', $oMerkVaria_arr[0]);
  149. $smarty->assign('oVariationen_arr', $oMerkVaria_arr[1]);
  150. $smarty->assign('oVergleichsliste', $oVergleichsliste);
  151. $smarty->assign('Navigation',createNavigation($AktuelleSeite, 0, 0));
  152. $smarty->assign('Einstellungen',$GLOBALS['GlobaleEinstellungen']);
  153. $smarty->assign('Einstellungen_Vergleichsliste', $Einstellungen_Vergleichsliste);
  154. $smarty->assign("NettoPreise", $_SESSION['Kundengruppe']->nNettoPreise);
  155. $smarty->assign('bAjax', true);
  156. $smarty->assign('bWarenkorb', $bWarenkorb);
  157. // Hook
  158. executeHook(HOOK_VERGLEICHSLISTE_PAGE);
  159. $cHTML = $smarty->fetch('vergleichsliste.tpl');
  160. $cHTML = utf8_encode($cHTML); // FIX!!!
  161. $cHTML = json_encode($cHTML);
  162. //$objResponse->assign('compare_list_wrapper_ajax', 'innerHTML', $cHTML);
  163. $objResponse->script("this.compareHTML = ".$cHTML.";");
  164. return $objResponse;
  165. }
  166. function ermittleVersandkostenAjax($oArtikel_arr)
  167. {
  168. $objResponse = new xajaxResponse();
  169. $oResponse = new stdClass();
  170. $oResponse->cText = utf8_encode(ermittleVersandkostenExt($oArtikel_arr));
  171. $oResponse->cText .= ' (' . $_SESSION['shipping_count']++ . ')';
  172. $objResponse->script("this.response = " . json_encode($oResponse).";");
  173. return $objResponse;
  174. }
  175. function loescheWarenkorbPosAjax($nPos)
  176. {
  177. $objResponse = new xajaxResponse();
  178. require_once("classes/class.JTL-Shop.Artikel.php");
  179. //wurden Positionen gelöscht?
  180. if ($_SESSION["Warenkorb"]->PositionenArr[intval($nPos)]->nPosTyp == 1)
  181. {
  182. unset($_SESSION["Warenkorb"]->PositionenArr[intval($nPos)]);
  183. $_SESSION["Warenkorb"]->PositionenArr = array_merge($_SESSION["Warenkorb"]->PositionenArr);
  184. loescheAlleSpezialPos();
  185. if(!$_SESSION["Warenkorb"]->enthaltenSpezialPos(C_WARENKORBPOS_TYP_ARTIKEL))
  186. $_SESSION["Warenkorb"] = new Warenkorb();
  187. // Lösche Position aus dem WarenkorbPersPos
  188. if($_SESSION['Kunde']->kKunde > 0)
  189. {
  190. $oWarenkorbPers = new WarenkorbPers($_SESSION['Kunde']->kKunde);
  191. $oWarenkorbPers->entferneAlles();
  192. $oWarenkorbPers->bauePersVonSession();
  193. }
  194. }
  195. return $objResponse;
  196. }
  197. function fuegeEinInWarenkorbAjax($kArtikel, $anzahl, $oEigenschaftwerte_arr = "")
  198. {
  199. global $Einstellungen, $Kunde, $smarty;
  200. require_once("classes/class.JTL-Shop.Artikel.php");
  201. require_once("classes/class.JTL-Shop.Sprache.php");
  202. require_once('includes/boxen.php');
  203. require_once('includes/artikel_inc.php');
  204. require_once('includes/sprachfunktionen.php');
  205. $oResponse = new stdClass;
  206. $objResponse = new xajaxResponse();
  207. $GLOBALS['oSprache'] = new Sprache(false);
  208. $GLOBALS['oSprache']->autoload();
  209. $kArtikel = intval($kArtikel);
  210. if ($anzahl>0 && $kArtikel>0)
  211. {
  212. $redirectParam = array();
  213. $Artikel = new Artikel();
  214. unset($oArtikelOptionen);
  215. $oArtikelOptionen->nMerkmale = 0;
  216. $oArtikelOptionen->nAttribute = 0;
  217. $oArtikelOptionen->nArtikelAttribute = 0;
  218. $oArtikelOptionen->nDownload = 1;
  219. $Artikel->fuelleArtikel($kArtikel, $oArtikelOptionen);
  220. $Artikel->holArtikelAttribute();
  221. // Falls der Artikel ein Variationskombikind ist, hole direkt seine Eigenschaften
  222. if(isset($Artikel->kEigenschaftKombi) && $Artikel->kEigenschaftKombi > 0)
  223. $oEigenschaftwerte_arr = gibVarKombiEigenschaftsWerte($Artikel->kArtikel);
  224. if (intval($anzahl)!=$anzahl && $Artikel->cTeilbar!="Y")
  225. $anzahl = max(intval($anzahl), 1);
  226. // Prüfung
  227. $redirectParam = pruefeFuegeEinInWarenkorb($Artikel, $anzahl, $oEigenschaftwerte_arr);
  228. if (count($redirectParam)>0)
  229. {
  230. /*
  231. if(isset($_SESSION['variBoxAnzahl_arr']))
  232. {
  233. $oResponse->nType = 0;
  234. $oResponse->cNachricht = "Weiterleitung erfolgt";
  235. $objResponse->script("this.response = ".json_encode($oResponse).";");
  236. return $objResponse;
  237. }
  238. */
  239. $add = "&".SID;
  240. $location = "";
  241. $cRedirectParam = implode(',', $redirectParam);
  242. baueArtikelhinweise($cRedirectParam);
  243. $smarty->assign('cHinweis_arr', $GLOBALS['Artikelhinweise']);
  244. $oResponse->cPopup = utf8_encode($smarty->fetch('tpl_inc/artikel_weiterleitung.tpl'));
  245. //redirekt zum artikel, um variation/en zu wählen / MBM beachten
  246. if($Artikel->nIstVater == 1)
  247. $location = 'navi.php?a='.$Artikel->kArtikel."&n=".$anzahl."&r=".implode(",",$redirectParam).$add;
  248. else if($Artikel->kEigenschaftKombi > 0)
  249. $location = 'navi.php?a=' . $Artikel->kVaterArtikel . '&a2='.$Artikel->kArtikel."&n=".$anzahl."&r=".implode(",",$redirectParam).$add;
  250. else
  251. $location = 'index.php?a='.$Artikel->kArtikel."&n=".$anzahl."&r=".implode(",",$redirectParam).$add;
  252. $oResponse->nType = 1;
  253. $oResponse->cLocation = $location;
  254. $oResponse->oArtikel = $Artikel;
  255. $objResponse->script("this.response = ".json_encode($oResponse).";");
  256. return $objResponse;
  257. }
  258. $_SESSION["Warenkorb"]->fuegeEin($kArtikel, $anzahl, $oEigenschaftwerte_arr);
  259. $_SESSION['Warenkorb']->loescheSpezialPos(C_WARENKORBPOS_TYP_VERSANDPOS);
  260. $_SESSION['Warenkorb']->loescheSpezialPos(C_WARENKORBPOS_TYP_VERSANDZUSCHLAG);
  261. $_SESSION['Warenkorb']->loescheSpezialPos(C_WARENKORBPOS_TYP_VERSAND_ARTIKELABHAENGIG);
  262. $_SESSION['Warenkorb']->loescheSpezialPos(C_WARENKORBPOS_TYP_ZAHLUNGSART);
  263. $_SESSION['Warenkorb']->loescheSpezialPos(C_WARENKORBPOS_TYP_ZINSAUFSCHLAG);
  264. $_SESSION['Warenkorb']->loescheSpezialPos(C_WARENKORBPOS_TYP_BEARBEITUNGSGEBUEHR);
  265. $_SESSION['Warenkorb']->loescheSpezialPos(C_WARENKORBPOS_TYP_NEUKUNDENKUPON);
  266. $_SESSION['Warenkorb']->loescheSpezialPos(C_WARENKORBPOS_TYP_NACHNAHMEGEBUEHR);
  267. $_SESSION['Warenkorb']->loescheSpezialPos(C_WARENKORBPOS_TYP_TRUSTEDSHOPS);
  268. unset($_SESSION['VersandKupon']);
  269. unset($_SESSION['NeukundenKupon']);
  270. unset($_SESSION['Versandart']);
  271. unset($_SESSION['Zahlungsart']);
  272. unset($_SESSION['TrustedShops']);
  273. // Wenn Kupon vorhanden und prozentual auf ganzen Warenkorb,
  274. // dann verwerfen und neu anlegen
  275. altenKuponNeuBerechnen();
  276. setzeLinks();
  277. // Persistenter Warenkorb
  278. if(!isset($_POST["login"]))
  279. fuegeEinInWarenkorbPers($kArtikel, $anzahl, $oEigenschaftwerte_arr, $add);
  280. $smarty->assign('Boxen', $GLOBALS['Boxen']);
  281. $warensumme[0]=gibPreisStringLocalized($_SESSION["Warenkorb"]->gibGesamtsummeWarenExt(array(C_WARENKORBPOS_TYP_ARTIKEL),1));
  282. $warensumme[1]=gibPreisStringLocalized($_SESSION["Warenkorb"]->gibGesamtsummeWarenExt(array(C_WARENKORBPOS_TYP_ARTIKEL),0));
  283. $smarty->assign('WarenkorbWarensumme', $warensumme);
  284. $kKundengruppe = $_SESSION['Kundengruppe']->kKundengruppe;
  285. if(isset($_SESSION['Kunde']->kKundengruppe) && $_SESSION['Kunde']->kKundengruppe > 0)
  286. $kKundengruppe = $_SESSION['Kunde']->kKundengruppe;
  287. $smarty->assign('WarenkorbVersandkostenfreiHinweis', baueVersandkostenfreiString(gibVersandkostenfreiAb($kKundengruppe), $_SESSION["Warenkorb"]->gibGesamtsummeWaren(1,1)));
  288. $smarty->assign('WarenkorbVersandkostenfreiLaenderHinweis', baueVersandkostenfreiLaenderString(gibVersandkostenfreiAb($kKundengruppe), $_SESSION["Warenkorb"]->gibGesamtsummeWaren(1,1)));
  289. $smarty->assign('oArtikel', $Artikel); // deprecated 3.12
  290. $smarty->assign('zuletztInWarenkorbGelegterArtikel', $Artikel);
  291. $smarty->assign('fAnzahl', $anzahl);
  292. $smarty->assign("NettoPreise", $_SESSION['Kundengruppe']->nNettoPreise);
  293. $oXSelling = gibArtikelXSelling($kArtikel);
  294. $smarty->assign('Xselling', $oXSelling);
  295. $oResponse->nType = 2;
  296. $oResponse->cWarenkorbText = utf8_encode(lang_warenkorb_warenkorbEnthaeltXArtikel($_SESSION["Warenkorb"]));
  297. $oResponse->cWarenkorbLabel = utf8_encode(lang_warenkorb_warenkorbLabel($_SESSION["Warenkorb"]));
  298. //$oResponse->cNachricht = utf8_encode(sprintf($GLOBALS['oSprache']->gibWert('basketAjaxAdded', 'messages'), $Artikel->cName, $anzahl));
  299. $oResponse->cPopup = utf8_encode($smarty->fetch('tpl_inc/artikel_hinzugefuegt.tpl'));
  300. $oResponse->cWarenkorbMini = utf8_encode($smarty->fetch('tpl_inc/warenkorb_mini.tpl'));
  301. $oResponse->oArtikel = utf8_convert_recursive($Artikel, true);
  302. $objResponse->script("this.response = ".json_encode($oResponse).";");
  303. // Kampagne
  304. if(isset($_SESSION['Kampagnenbesucher']))
  305. setzeKampagnenVorgang(KAMPAGNE_DEF_WARENKORB, $kArtikel, $anzahl); // Warenkorb
  306. if ($GLOBALS['GlobaleEinstellungen']['global']['global_warenkorb_weiterleitung'] == "Y" && $nWeiterleitung == 0)
  307. {
  308. $add="?".SID;
  309. $oResponse->nType = 1;
  310. $oResponse->cLocation = 'warenkorb.php' . $add;
  311. $objResponse->script("this.response = ".json_encode($oResponse).";");
  312. return $objResponse;
  313. }
  314. }
  315. return $objResponse;
  316. }
  317. function setzeErweiterteDarstellung($nED)
  318. {
  319. global $Einstellungen;
  320. $objResponse = new xajaxResponse();
  321. require_once("includes/filter_inc.php");
  322. // Hole alle aktiven Sprachen
  323. if (isset($NaviFilter->oSprache_arr))
  324. unset($NaviFilter->oSprache_arr);
  325. if (!isset($NaviFilter))
  326. $NaviFilter = new stdClass;
  327. $NaviFilter->oSprache_arr = new stdClass;
  328. $NaviFilter->oSprache_arr = $GLOBALS['DB']->executeQuery("SELECT kSprache FROM tsprache", 2);
  329. $NaviFilter = baueNaviFilter($NaviFilter, array());
  330. gibErweiterteDarstellung($Einstellungen, $NaviFilter, $nED);
  331. return $objResponse;
  332. }
  333. // Kundenformular Ajax PLZ
  334. /*
  335. Params:
  336. $cFormValue => Textfeld Wert vom Kundenfomular input Feldes
  337. $cLandISO => Ausgewähltes Land in der DropDown Box
  338. */
  339. function gibPLZInfo($cFormValue, $cLandISO)
  340. {
  341. $objResponse = new xajaxResponse();
  342. $oPlz_arr = array();
  343. if (strlen($cFormValue) >= 4)
  344. {
  345. $oPlz_arr = $GLOBALS['DB']->executeQuery("SELECT cOrt
  346. FROM tplz
  347. WHERE cPLZ='" . StringHandler::htmlentities(filterXSS($cFormValue)) . "'
  348. AND cLandISO='" . StringHandler::htmlentities(filterXSS($cLandISO)) . "'", 2);
  349. }
  350. foreach ($oPlz_arr as $i => $oPlz)
  351. $oPlz_arr[$i]->cOrt = utf8_encode($oPlz->cOrt);
  352. $objResponse->script("this.plz_data = ".json_encode($oPlz_arr).";");
  353. // Hook
  354. executeHook(HOOK_TOOLSAJAXSERVER_PAGE_KUNDENFORMULARPLZ);
  355. return $objResponse;
  356. }
  357. // Kundenformular Ajax PLZ
  358. /*
  359. Params:
  360. $cFormValue => Textfeld Wert vom Kundenfomular input Feldes
  361. $cLandISO => Ausgewähltes Land in der DropDown Box
  362. */
  363. function aenderKundenformularPLZ($cFormValue, $cLandISO)
  364. {
  365. $objResponse = new xajaxResponse();
  366. if(strlen($cFormValue) >= 4)
  367. {
  368. $oPlz = $GLOBALS['DB']->executeQuery("SELECT cOrt
  369. FROM tplz
  370. WHERE cPLZ='" . StringHandler::htmlentities(filterXSS($cFormValue)) . "'
  371. AND cLandISO='" . StringHandler::htmlentities(filterXSS($cLandISO)) . "'", 1);
  372. if(strlen($oPlz->cOrt) > 0)
  373. $objResponse->assign("kundenformular_ort", "value", $oPlz->cOrt);
  374. }
  375. // Hook
  376. executeHook(HOOK_TOOLSAJAXSERVER_PAGE_KUNDENFORMULARPLZ);
  377. return $objResponse;
  378. }
  379. function gibRegionzuLand($cLandIso)
  380. {
  381. $objResponse = new xajaxResponse();
  382. if (strlen($cLandIso) == 2) {
  383. $cRegion_arr = Staat::getRegions($cLandIso);
  384. $cRegion_arr = utf8_convert_recursive($cRegion_arr);
  385. $objResponse->script("this.response = " . json_encode($cRegion_arr) . ";");
  386. }
  387. return $objResponse;
  388. }
  389. // Textfeld Ajax Suche
  390. /*
  391. Params:
  392. $cValue => Textfeld Wert (input) des Suchfeldes
  393. $nkeyCode => Geklickter Tastenwert
  394. $cElemSearchID => Suchfeld (input)
  395. $cElemSuggestID => DIV an dem die Suchvorschläge angegeben werden
  396. $cElemSubmitID => Form die abgeschickt werden soll
  397. */
  398. function suchVorschlag($cValue, $nkeyCode, $cElemSearchID, $cElemSuggestID, $cElemSubmitID)
  399. {
  400. $nkeyCode = intval($nkeyCode);
  401. $cValue = StringHandler::htmlentities(filterXSS($cValue));
  402. $cElemSearchID = StringHandler::htmlentities(filterXSS($cElemSearchID));
  403. $cElemSuggestID = StringHandler::htmlentities(filterXSS($cElemSuggestID));
  404. $cElemSubmitID = StringHandler::htmlentities(filterXSS($cElemSubmitID));
  405. global $Einstellungen;
  406. // Maximale Suchvorschläge
  407. $nMaxAnzahl = 10;
  408. if(intval($Einstellungen['artikeluebersicht']['suche_ajax_anzahl']) > 0)
  409. $nMaxAnzahl = intval($Einstellungen['artikeluebersicht']['suche_ajax_anzahl']);
  410. $objResponse = new xajaxResponse();
  411. $objResponse->assign($cElemSuggestID, "innerHTML", '');
  412. if(strlen($cValue) >= 3)
  413. {
  414. $oSuchanfrage_arr = $GLOBALS["DB"]->executeQuery("SELECT cSuche, nAnzahlTreffer
  415. FROM tsuchanfrage
  416. WHERE cSuche LIKE '" . $cValue . "%'
  417. AND nAktiv=1
  418. AND kSprache = " . $_SESSION['kSprache'] . "
  419. ORDER BY nAnzahlGesuche DESC, cSuche
  420. LIMIT " . $nMaxAnzahl, 2);
  421. if(is_array($oSuchanfrage_arr) && count($oSuchanfrage_arr) > 0)
  422. {
  423. $cSuche = "";
  424. foreach($oSuchanfrage_arr as $i => $oSuchanfrage)
  425. {
  426. $onClick = 'document.getElementById("' . $cElemSearchID . '").value = "' . $oSuchanfrage->cSuche . '"; document.' . $cElemSubmitID . '.submit();';
  427. $cSuchwort = str_replace($cValue, '<b>' .$cValue. '</b>', $oSuchanfrage->cSuche);
  428. $cSuche .= "<div class='suggestions' id='" . $cElemSuggestID . $i . "' onclick='" . $onClick . "'>" . $cSuchwort . " <span class='suggestion_count'>(" . $oSuchanfrage->nAnzahlTreffer . ")</span></div>";
  429. $cSuche .= "<input id='" . $cElemSuggestID . "value" . $i . "' name='" . $cElemSuggestID . "value" . $i . "' type='hidden' value='" . $oSuchanfrage->cSuche . "'>";
  430. }
  431. $objResponse->assign($cElemSuggestID, "innerHTML", $cSuche);
  432. $objResponse->script("
  433. resizeContainer('" . $cElemSearchID . "', '" . $cElemSuggestID . "');
  434. nAnzahlSuggests = " . (count($oSuchanfrage_arr)-1) . ";");
  435. }
  436. }
  437. // Hook
  438. executeHook(HOOK_TOOLSAJAXSERVER_PAGE_SUCHVORSCHLAG, array("cValue" => &$cValue, "nkeyCode" => &$nkeyCode, "cElemSearchID" => &$cElemSearchID, "cElemSuggestID" => &$cElemSuggestID, "cElemSubmitID" => &$cElemSubmitID, "objResponse" => &$objResponse));
  439. return $objResponse;
  440. }
  441. function suggestions($cValue)
  442. {
  443. global $Einstellungen;
  444. $cSuch_arr = array();
  445. $cValue = filterXSS($cValue);
  446. // Maximale Suchvorschläge
  447. $nMaxAnzahl = 10;
  448. if (intval($Einstellungen['artikeluebersicht']['suche_ajax_anzahl']) > 0)
  449. $nMaxAnzahl = intval($Einstellungen['artikeluebersicht']['suche_ajax_anzahl']);
  450. $objResponse = new xajaxResponse();
  451. if(strlen($cValue) >= 3)
  452. {
  453. $oSuchanfrage_arr = $GLOBALS["DB"]->executeQuery("SELECT cSuche, nAnzahlTreffer
  454. FROM tsuchanfrage
  455. WHERE cSuche LIKE '" . $cValue . "%'
  456. AND nAktiv=1
  457. AND kSprache = " . $_SESSION['kSprache'] . "
  458. ORDER BY nAnzahlGesuche DESC, cSuche
  459. LIMIT " . $nMaxAnzahl, 2);
  460. if(is_array($oSuchanfrage_arr) && count($oSuchanfrage_arr) > 0)
  461. {
  462. foreach($oSuchanfrage_arr as $i => $oSuchanfrage)
  463. {
  464. $cSuche = utf8_encode($oSuchanfrage->cSuche);
  465. $i = count($cSuch_arr);
  466. $cSuch_arr[$i]['value'] = $cSuche . ' <span class="ac_resultcount">' . $oSuchanfrage->nAnzahlTreffer . ' ' . StringHandler::htmlentities( $GLOBALS['oSprache']->gibWert('matches', 'global') ) . ' </span>';
  467. $cSuch_arr[$i]['result'] = $cSuche;
  468. }
  469. }
  470. }
  471. // Hook
  472. executeHook(HOOK_TOOLSAJAXSERVER_PAGE_SUCHVORSCHLAG, array("cValue" => &$cValue, "objResponse" => &$objResponse, "cSuch_arr" => &$cSuch_arr));
  473. $objResponse->script("this.ac_data = ".json_encode($cSuch_arr).";");
  474. return $objResponse;
  475. }
  476. function loescheStepAjax($nStep)
  477. {
  478. loescheSession($nStep);
  479. }
  480. // Main Handler
  481. function Handler($aFormValues)
  482. {
  483. global $Kunde, $step, $smarty, $hinweis, $Einstellungen;
  484. $hinweis = "";
  485. $step = 'accountwahl';
  486. $objResponse = new xajaxResponse();
  487. // Login
  488. if (intval($aFormValues["login"])==1)
  489. {
  490. globaleAssigns();
  491. loescheSession(0);
  492. $nLoginStatus = plausiAccountwahlLogin($aFormValues["userLogin"], $aFormValues["passLogin"]);
  493. if($nLoginStatus == 10)
  494. {
  495. loescheSession(1);
  496. setzeSesssionAccountwahlLogin($Kunde);
  497. if($Einstellungen['kaufabwicklung']['bestellvorgang_kaufabwicklungsmethode'] == "O" || $Einstellungen['kaufabwicklung']['bestellvorgang_kaufabwicklungsmethode'] == "A")
  498. {
  499. // Ajax EinKlick prüfen
  500. $nAjaxEinKlickStatus = pruefeAjaxEinKlick();
  501. if($nAjaxEinKlickStatus > 0 && $Einstellungen['kaufabwicklung']['bestellvorgang_kaufabwicklungsmethode'] == "O")
  502. {
  503. $objResponse->script("nEnabled = " . $nAjaxEinKlickStatus . ";");
  504. $_SESSION['ajaxcheckout']->nEnabled = $nAjaxEinKlickStatus;
  505. ladeAjaxEinKlick();
  506. setzeSmartyAccountwahl();
  507. setzeSmartyRechnungsadresse(0);
  508. $objResponse->assign("1-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_registrieren.tpl"));
  509. $objResponse->assign("2-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_lieferadresse.tpl"));
  510. $objResponse->assign("div_boxRechnungsadresse", "style.display", "block");
  511. $objResponse->assign("div_rechnungsadresse_box", "innerHTML", $smarty->fetch("tpl_inc/inc_rechnungsadresse.tpl"));
  512. $objResponse->script("aendereStatus();");
  513. if($nAjaxEinKlickStatus >= 3)
  514. {
  515. setzeSmartyLieferadresse();
  516. setzeSmartyVersandart();
  517. $objResponse->assign("2-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_lieferadresse.tpl"));
  518. $objResponse->assign("div_boxLieferadresse", "style.display", "block");
  519. $objResponse->assign("div_lieferadresse_box", "innerHTML", $smarty->fetch("tpl_inc/inc_lieferadresse.tpl"));
  520. $objResponse->assign("div_boxVersandart", "style.display", "block");
  521. }
  522. if($nAjaxEinKlickStatus >= 4)
  523. {
  524. setzeSmartyZahlungsart();
  525. $objResponse->assign("3-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_versandart.tpl"));
  526. $objResponse->assign("div_boxVersandart", "style.display", "block");
  527. $objResponse->assign("div_versandart_box", "innerHTML", $_SESSION['Versandart']->angezeigterName[$_SESSION['cISOSprache']]);
  528. $objResponse->assign("4-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_zahlung.tpl"));
  529. }
  530. if($nAjaxEinKlickStatus == 5)
  531. {
  532. setzeSmartyBestaetigung();
  533. $objResponse->assign("5-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_bestaetigung.tpl"));
  534. $objResponse->assign("div_boxZahlungsart", "style.display", "block");
  535. $objResponse->assign("div_zahlungsart_box", "innerHTML", $_SESSION['Zahlungsart']->angezeigterName[$_SESSION['cISOSprache']]);
  536. }
  537. }
  538. else
  539. {
  540. $objResponse->script("nEnabled = 2;");
  541. $_SESSION['ajaxcheckout']->nEnabled = 2;
  542. loescheSession(2);
  543. setzeSmartyAccountwahl();
  544. setzeSmartyRechnungsadresse(0);
  545. setzeSmartyLieferadresse();
  546. $objResponse->assign("1-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_registrieren.tpl"));
  547. $objResponse->assign("2-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_lieferadresse.tpl"));
  548. $objResponse->assign("div_boxRechnungsadresse", "style.display", "block");
  549. $objResponse->assign("div_rechnungsadresse_box", "innerHTML", $smarty->fetch("tpl_inc/inc_rechnungsadresse.tpl"));
  550. $objResponse->script("aendereStatus();");
  551. }
  552. }
  553. }
  554. else
  555. {
  556. setzeFehlerSmartyAccountwahl($GLOBALS['oSprache']->gibWert('incorrectLogin', 'global'));
  557. $objResponse->script("nEnabled = 0;");
  558. $_SESSION['ajaxcheckout']->nEnabled = 0;
  559. $objResponse->assign("0-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_accountwahl.tpl"));
  560. }
  561. }
  562. // Kundenkonto erstellen
  563. else if(intval($aFormValues["neueskundenkonto"]) == 1)
  564. {
  565. globaleAssigns();
  566. $step = "neueskundenkonto";
  567. $objResponse->script("nEnabled = 1;");
  568. $_SESSION['ajaxcheckout']->nEnabled = 1;
  569. loescheSession(0);
  570. setzeSmartyRechnungsadresse(1);
  571. $objResponse->assign("1-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_registrieren.tpl"));
  572. }
  573. // Kundenkonto eintragen
  574. else if(intval($aFormValues["neukundeEintragen"]) == 1)
  575. {
  576. globaleAssigns();
  577. // NeuKunde will unregistiert bestellen ohne seinen Account zu speichern (!isset(ajaxeueskontoPassCheck))
  578. if(!$aFormValues['editRechnungsadresse'] && !$aFormValues['ajaxeueskontoPassCheck'] && $Einstellungen['kaufabwicklung']['bestellvorgang_unregistriert'] == "Y")
  579. {
  580. $cFehlendeEingaben_arr = plausiRechnungsadresse($aFormValues, 1); // Plausibilitätsprüfung
  581. if(is_array($cFehlendeEingaben_arr) && count($cFehlendeEingaben_arr) == 0)
  582. {
  583. $objResponse->script("nEnabled = 2;");
  584. $_SESSION['ajaxcheckout']->nEnabled = 2;
  585. setzeSessionRechnungsadresse($aFormValues, $cFehlendeEingaben_arr);
  586. setzeSmartyRechnungsadresse(1);
  587. setzeSmartyLieferadresse();
  588. $objResponse->assign("2-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_lieferadresse.tpl"));
  589. $objResponse->assign("div_boxRechnungsadresse", "style.display", "block");
  590. $objResponse->assign("div_rechnungsadresse_box", "innerHTML", $smarty->fetch("tpl_inc/inc_rechnungsadresse.tpl"));
  591. $objResponse->script("aendereStatus();");
  592. }
  593. else
  594. {
  595. $objResponse->script("nEnabled = 1;");
  596. $_SESSION['ajaxcheckout']->nEnabled = 1;
  597. loescheSession(1);
  598. setzeFehlerSmartyRechnungsadresse($cFehlendeEingaben_arr, 1, $aFormValues);
  599. $objResponse->assign("1-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_registrieren.tpl"));
  600. }
  601. }
  602. else // Neukundenregistrierung mit Speicherung des Accounts
  603. {
  604. $aFormValues['ajaxcheckout_return'] = 1;
  605. $editRechnungsadresse = $aFormValues['editRechnungsadresse'];
  606. $cFehlendeEingaben_arr = kundeSpeichern($aFormValues); // Kundenaccount speichern
  607. if(!is_array($cFehlendeEingaben_arr) && $cFehlendeEingaben_arr) // Alles OK
  608. {
  609. $objResponse->script("nEnabled = 2;");
  610. $_SESSION['ajaxcheckout']->nEnabled = 2;
  611. setzeSessionRechnungsadresse($aFormValues, $cFehlendeEingaben_arr);
  612. setzeSmartyRechnungsadresse(0);
  613. setzeSmartyLieferadresse();
  614. $objResponse->assign("2-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_lieferadresse.tpl"));
  615. $objResponse->assign("div_boxRechnungsadresse", "style.display", "block");
  616. $objResponse->assign("div_rechnungsadresse_box", "innerHTML", $smarty->fetch("tpl_inc/inc_rechnungsadresse.tpl"));
  617. $objResponse->script("aendereStatus();");
  618. }
  619. else
  620. {
  621. $objResponse->script("nEnabled = 1;");
  622. $_SESSION['ajaxcheckout']->nEnabled = 1;
  623. loescheSession(1);
  624. if($editRechnungsadresse)
  625. {
  626. $smarty->assign("step", "rechnungsdaten");
  627. setzeFehlerSmartyRechnungsadresse($cFehlendeEingaben_arr, 0, $aFormValues);
  628. }
  629. else
  630. {
  631. $smarty->assign("step", "formular");
  632. setzeFehlerSmartyRechnungsadresse($cFehlendeEingaben_arr, 1, $aFormValues);
  633. }
  634. $objResponse->assign("1-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_registrieren.tpl"));
  635. }
  636. }
  637. }
  638. // Rechnungsadresse editieren
  639. else if(intval($aFormValues['editRechnungsadresse']) == 1)
  640. {
  641. globaleAssigns();
  642. $objResponse->script("nEnabled = 1;");
  643. $_SESSION['ajaxcheckout']->nEnabled = 1;
  644. loescheSession(1);
  645. setzeSmartyRechnungsadresse(0);
  646. $objResponse->assign("1-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_registrieren.tpl"));
  647. }
  648. // Liederadresse editieren
  649. else if(intval($aFormValues['editLieferadresse']) == 1)
  650. {
  651. globaleAssigns();
  652. $objResponse->script("nEnabled = 2;");
  653. $_SESSION['ajaxcheckout']->nEnabled = 2;
  654. loescheSession(2);
  655. setzeSmartyRechnungsadresse(0);
  656. setzeSmartyLieferadresse();
  657. $objResponse->assign("2-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_lieferadresse.tpl"));
  658. }
  659. // Versandart abgeschickt
  660. else if (intval($aFormValues['versandartwahl'])==1)
  661. {
  662. globaleAssigns();
  663. if(plausiVersandart($aFormValues['Versandart'], $aFormValues))
  664. {
  665. $objResponse->script("nEnabled = 4;");
  666. $_SESSION['ajaxcheckout']->nEnabled = 4;
  667. loescheSession(4);
  668. setzeSmartyVersandart();
  669. setzeSmartyZahlungsart();
  670. $objResponse->assign("4-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_zahlung.tpl"));
  671. $objResponse->assign("div_boxVersandart", "style.display", "block");
  672. $objResponse->assign("div_versandart_box", "innerHTML", $_SESSION['Versandart']->angezeigterName[$_SESSION['cISOSprache']]);
  673. }
  674. else
  675. {
  676. loescheSession(3);
  677. $objResponse->script("nEnabled = 3;");
  678. $_SESSION['ajaxcheckout']->nEnabled = 3;
  679. setzeSmartyLieferadresse();
  680. setzeSmartyVersandart();
  681. setzeFehlerSmartyVersandart();
  682. $objResponse->assign("3-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_versandart.tpl"));
  683. }
  684. }
  685. // Lieferadresse abgeschickt
  686. else if (intval($aFormValues['lieferdaten']) == 1)
  687. {
  688. globaleAssigns();
  689. $cFehlendeEingaben_arr = plausiLieferadresse($aFormValues);
  690. if(is_array($cFehlendeEingaben_arr) && count($cFehlendeEingaben_arr) == 0)
  691. {
  692. loescheSession(3);
  693. $objResponse->script("nEnabled = 3;");
  694. $_SESSION['ajaxcheckout']->nEnabled = 3;
  695. setzeSessionLieferadresse($aFormValues);
  696. setzeSmartyLieferadresse();
  697. setzeSmartyVersandart();
  698. pruefeVersandkostenfreiKuponVorgemerkt();
  699. $objResponse->assign("3-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_versandart.tpl"));
  700. $objResponse->assign("div_boxLieferadresse", "style.display", "block");
  701. $objResponse->assign("div_lieferadresse_box", "innerHTML", $smarty->fetch("tpl_inc/inc_lieferadresse.tpl"));
  702. }
  703. else
  704. {
  705. $objResponse->script("nEnabled = 2;");
  706. $_SESSION['ajaxcheckout']->nEnabled = 2;
  707. loescheSession(2);
  708. setzeFehlerSmartyLieferadresse($cFehlendeEingaben_arr, $aFormValues);
  709. $objResponse->assign("2-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_lieferadresse.tpl"));
  710. $objResponse->script("aendereStatus(true);");
  711. }
  712. }
  713. // Zahlungsart abgeschickt
  714. else if(intval($aFormValues['zahlungsartwahl']) == 1)
  715. {
  716. globaleAssigns();
  717. if(intval($aFormValues['zahlungsartzusatzschritt']) == 1)
  718. {
  719. $oZahlungsart = gibZahlungsart(intval($aFormValues['Zahlungsart']));
  720. $cFehlendeEingaben_arr = plausiZahlungsartZusatz($oZahlungsart, $aFormValues);
  721. if(is_array($cFehlendeEingaben_arr) && count($cFehlendeEingaben_arr) == 0)
  722. {
  723. setzeSmartyLieferadresse();
  724. setzeSmartyVersandart();
  725. setzeSmartyZahlungsart();
  726. setzeSmartyBestaetigung();
  727. setzeSmartyZahlungsart();
  728. setzeSmartyBestaetigung();
  729. $objResponse->script("nEnabled = 5;");
  730. $_SESSION['ajaxcheckout']->nEnabled = 5;
  731. //evtl genutztes guthaben anpassen
  732. pruefeGuthabenNutzen();
  733. $objResponse->assign("5-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_bestaetigung.tpl"));
  734. $objResponse->assign("div_boxZahlungsart", "style.display", "block");
  735. $objResponse->assign("div_zahlungsart_box", "innerHTML", $_SESSION['Zahlungsart']->angezeigterName[$_SESSION['cISOSprache']]);
  736. }
  737. else
  738. {
  739. setzeSmartyZahlungsartZusatz($aFormValues, $cFehlendeEingaben_arr);
  740. $objResponse->assign("4-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_zahlung_zusatzschritt.tpl"));
  741. }
  742. }
  743. else
  744. {
  745. // Zusatzschritt?
  746. switch(plausiZahlungsart($aFormValues))
  747. {
  748. case 0:
  749. setzeSmartyZahlungsart();
  750. setzeFehlerSmartyZahlungsart();
  751. loescheSession(4);
  752. $objResponse->assign("4-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_zahlung.tpl"));
  753. break;
  754. case 1:
  755. setzeSmartyZahlungsartZusatz($aFormValues);
  756. $objResponse->assign("4-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_zahlung_zusatzschritt.tpl"));
  757. break;
  758. case 2:
  759. $_SESSION['ajaxcheckout']->nEnabled = 5;
  760. setzeSmartyLieferadresse();
  761. setzeSmartyVersandart();
  762. setzeSmartyZahlungsart();
  763. setzeSmartyBestaetigung();
  764. $objResponse->script("nEnabled = 5;");
  765. $_SESSION['ajaxcheckout']->nEnabled = 5;
  766. //evtl genutztes guthaben anpassen
  767. pruefeGuthabenNutzen();
  768. $objResponse->assign("5-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_bestaetigung.tpl"));
  769. $objResponse->assign("div_boxZahlungsart", "style.display", "block");
  770. $objResponse->assign("div_zahlungsart_box", "innerHTML", $_SESSION['Zahlungsart']->angezeigterName[$_SESSION['cISOSprache']]);
  771. break;
  772. }
  773. }
  774. }
  775. // Kupon eingegeben
  776. else if (intval($aFormValues['pruefekupon']) == 1 || intval($aFormValues['guthaben']) == 1)
  777. {
  778. globaleAssigns();
  779. if(intval($aFormValues['pruefekupon']) == 1)
  780. $smarty->assign("cKuponfehler_arr", plausiKupon($aFormValues));
  781. else if(intval($aFormValues['guthaben']) == 1)
  782. plausiGuthaben($aFormValues);
  783. //evtl genutztes guthaben anpassen
  784. pruefeGuthabenNutzen();
  785. setzeSmartyLieferadresse();
  786. setzeSmartyVersandart();
  787. setzeSmartyZahlungsart();
  788. setzeSmartyBestaetigung();
  789. $objResponse->script("nEnabled = 5;");
  790. $_SESSION['ajaxcheckout']->nEnabled = 5;
  791. $objResponse->assign("5-content", "innerHTML", $smarty->fetch("tpl_inc/ajaxcheckout_bestaetigung.tpl"));
  792. $objResponse->assign("div_boxZahlungsart", "style.display", "block");
  793. $objResponse->assign("div_zahlungsart_box", "innerHTML", $_SESSION['Zahlungsart']->angezeigterName[$_SESSION['cISOSprache']]);
  794. }
  795. $objResponse->assign("div_rechnungsadresse_box", "innerHTML", $smarty->fetch("tpl_inc/inc_rechnungsadresse.tpl") . "<br><input type='submit' value='" .$GLOBALS['oSprache']->gibWert('ajaxcheckoutChangemethode', 'global') . "' class='button' onclick='nEnabled=1; toggleState(); xajax_loescheStepAjax(1);'>");
  796. $objResponse->assign("div_lieferadresse_box", "innerHTML", $smarty->fetch("tpl_inc/inc_lieferadresse.tpl") . "<br><input type='button' value='" .$GLOBALS['oSprache']->gibWert('ajaxcheckoutChangemethode', 'global') . "' class='button' onclick='nEnabled=2; toggleState(); xajax_loescheStepAjax(2);'>");
  797. $objResponse->assign("div_versandart_box", "innerHTML", $_SESSION['Versandart']->angezeigterName[$_SESSION['cISOSprache']] . "<br><input type='button' value='" .$GLOBALS['oSprache']->gibWert('ajaxcheckoutChangemethode', 'global') . "' class='button' onclick='nEnabled=3; toggleState(); xajax_loescheStepAjax(3);'>");
  798. $objResponse->assign("div_zahlungsart_box", "innerHTML", $_SESSION['Zahlungsart']->angezeigterName[$_SESSION['cISOSprache']] . "<br><input type='button' value='" .$GLOBALS['oSprache']->gibWert('ajaxcheckoutChangemethode', 'global') . "' class='button' onclick='nEnabled=4; toggleState(); xajax_loescheStepAjax(4);'>");
  799. $objResponse->script("toggleState();");
  800. return $objResponse;
  801. }
  802. function tauscheVariationKombi($aFormValues, $nVater=0, $kEigenschaft=0, $kEigenschaftWert=0, $bSpeichern = false)
  803. {
  804. require_once(PFAD_ROOT . PFAD_INCLUDES . "artikel_inc.php");
  805. global $smarty;
  806. $GLOBALS['AktuelleSeite'] = "ARTIKEL";
  807. $GLOBALS['nSeitenTyp'] = PAGE_ARTIKEL;
  808. $objResponse = new xajaxResponse();
  809. $cVariationKombiKind = "";
  810. $Einstellungen = "";
  811. $Einstellungen = getEinstellungen(array(CONF_GLOBAL,CONF_NAVIGATIONSFILTER,CONF_RSS,CONF_ARTIKELDETAILS,CONF_PREISVERLAUF,CONF_BEWERTUNG,CONF_BOXEN,CONF_PREISVERLAUF,CONF_METAANGABEN));
  812. $GLOBALS['Einstellungen'] = $Einstellungen;
  813. //hole aktuellen Vater Artikel
  814. if($aFormValues['a'] > 0)
  815. {
  816. unset($oVaterArtikel);
  817. $oVaterArtikel = new Artikel();
  818. unset($oArtikelOptionen);
  819. if($nVater)
  820. {
  821. $oArtikelOptionen->nMerkmale = 1;
  822. $oArtikelOptionen->nAttribute = 1;
  823. $oArtikelOptionen->nArtikelAttribute = 1;
  824. $oArtikelOptionen->nMedienDatei = 1;
  825. }
  826. $oArtikelOptionen->nVariationKombi = 1;
  827. $oArtikelOptionen->nVariationKombiKinder = 1;
  828. $oArtikelOptionen->nDownload = 1;
  829. $oArtikelOptionen->nKonfig = 1;
  830. $oArtikelOptionen->nMain = 1;
  831. $oArtikelOptionen->nWarenlager = 1;
  832. //if(intval($Einstellungen['artikeldetails']['artikeldetails_varikombi_anzahl']) > 0)
  833. $oArtikelOptionen->nVariationDetailPreis = 1;
  834. if($Einstellungen['artikeldetails']['artikeldetails_warenkorbmatrix_anzeige'] == "Y") // Warenkorbmatrix nötig? => Varikinder mit Preisen holen
  835. $oArtikelOptionen->nWarenkorbmatrix = 1;
  836. if($Einstellungen['artikeldetails']['artikeldetails_stueckliste_anzeigen'] == "Y") // Stückliste nötig? => Stücklistenkomponenten holen
  837. $oArtikelOptionen->nStueckliste = 1;
  838. if($Einstellungen['artikeldetails']['artikeldetails_produktbundle_nutzen'] == "Y")
  839. $oArtikelOptionen->nProductBundle = 1;
  840. $oArtikelOptionen->nFinanzierung = 1;
  841. $oVaterArtikel->fuelleArtikel(intval($aFormValues['a']), $oArtikelOptionen, intval($aFormValues['kKundengruppe']), intval($aFormValues['kSprache']));
  842. $oVaterArtikel->holeBewertungDurchschnitt(1);
  843. $bKindVorhanden = false;
  844. if(!$nVater)
  845. {
  846. if(is_array($oVaterArtikel->Variationen) && count($oVaterArtikel->Variationen) > 0)
  847. {
  848. $nGueltig = 1;
  849. $kVariationKombi_arr = array();
  850. foreach($oVaterArtikel->Variationen as $oVariation)
  851. {
  852. if($oVariation->cTyp != "FREIFELD" && $oVariation->cTyp != "PFLICHT-FREIFELD")
  853. {
  854. if(intval($aFormValues['eigenschaftwert_' . $oVariation->kEigenschaft]) > 0)
  855. $kVariationKombi_arr[$oVariation->kEigenschaft] = intval($aFormValues['eigenschaftwert_' . $oVariation->kEigenschaft]);
  856. }
  857. }
  858. if ($bSpeichern)
  859. $_SESSION['oVarkombiAuswahl']->kGesetzteEigeschaftWert_arr = $kVariationKombi_arr;
  860. $oArtikelTMP = gibArtikelByVariationen($oVaterArtikel->kArtikel, $kVariationKombi_arr);
  861. if($oArtikelTMP->kArtikel > 0)
  862. {
  863. require_once(PFAD_INCLUDES."artikel_inc.php");
  864. require_once(PFAD_ROOT.PFAD_CLASSES_CORE."class.core.NiceMail.php");
  865. $AktuelleSeite = "ARTIKEL";
  866. $bKindVorhanden = true;
  867. // Bewertungsguthaben
  868. $fBelohnung = 0.0;
  869. if($GLOBALS['Einstellungen']['bewertung']['bewertung_guthaben_nutzen'] == "Y")
  870. {
  871. if($GLOBALS['Einstellungen']['bewertung']['bewertung_stufe2_anzahlzeichen'] <= $_GET['strl'])
  872. $fBelohnung = $GLOBALS['Einstellungen']['bewertung']['bewertung_stufe2_guthaben'];
  873. else
  874. $fBelohnung = $GLOBALS['Einstellungen']['bewertung']['bewertung_stufe1_guthaben'];
  875. }
  876. // Hinweise und Fehler sammeln
  877. $cHinweis = mappingFehlerCode(verifyGPDataString('cHinweis'), $fBelohnung);
  878. $cFehler = mappingFehlerCode(verifyGPDataString('cFehler'));
  879. unset($oArtikel);
  880. unset($oArtikelOptionen);
  881. $oArtikel = new Artikel();
  882. $oArtikelOptionen->nMerkmale = 1;
  883. $oArtikelOptionen->nAttribute = 1;
  884. $oArtikelOptionen->nArtikelAttribute = 1;
  885. $oArtikelOptionen->nMedienDatei = 1;
  886. $oArtikelOptionen->nVariationKombi = 1;
  887. $oArtikelOptionen->nKeinLagerbestandBeachten = 1;
  888. $oArtikelOptionen->nKonfig = 1;
  889. $oArtikelOptionen->nDownload = 1;
  890. $oArtikelOptionen->nFinanzierung = 1;
  891. $oArtikelOptionen->nMain = 1;
  892. $oArtikelOptionen->nWarenlager = 1;
  893. if($Einstellungen['artikeldetails']['artikeldetails_produktbundle_nutzen'] == "Y")
  894. $oArtikelOptionen->nProductBundle = 1;
  895. $oArtikel->fuelleArtikel($oArtikelTMP->kArtikel, $oArtikelOptionen, $aFormValues['kKundengruppe'], $aFormValues['kSprache']);
  896. $oArtikel->kArtikelVariKombi = $oArtikel->kArtikel;
  897. // Hole EigenschaftWerte zur gewählten VariationKombi
  898. $oVariationKombiKind_arr = $GLOBALS['DB']->executeQuery("SELECT teigenschaftkombiwert.kEigenschaftWert, teigenschaftkombiwert.kEigenschaft
  899. FROM teigenschaftkombiwert
  900. JOIN tartikel ON tartikel.kEigenschaftKombi = teigenschaftkombiwert.kEigenschaftKombi
  901. AND tartikel.kVaterArtikel = " . $oVaterArtikel->kArtikel . "
  902. AND tartikel.kArtikel = " . $oArtikel->kArtikelVariKombi . "
  903. LEFT JOIN tartikelsichtbarkeit ON tartikel.kArtikel = tartikelsichtbarkeit.kArtikel
  904. AND tartikelsichtbarkeit.kKundengruppe=" . $_SESSION['Kundengruppe']->kKundengruppe . "
  905. WHERE tartikelsichtbarkeit.kArtikel IS NULL
  906. ORDER BY tartikel.kArtikel", 2);
  907. $kVariationKombiKind_arr = array();
  908. if(is_array($oVariationKombiKind_arr) && count($oVariationKombiKind_arr) > 0)
  909. {
  910. foreach($oVariationKombiKind_arr as $f => $oVariationKombiKind)
  911. {
  912. if($f > 0)
  913. $cVariationKombiKind .= ";" . $oVariationKombiKind->kEigenschaft . "_" . $oVariationKombiKind->kEigenschaftWert;
  914. else
  915. $cVariationKombiKind .= $oVariationKombiKind->kEigenschaft . "_" . $oVariationKombiKind->kEigenschaftWert;
  916. }
  917. }
  918. $oArtikel->kArtikel = $oVaterArtikel->kArtikel;
  919. $oArtikel->cVaterVKLocalized = $oVaterArtikel->Preise->cVKLocalized;
  920. $oArtikel->nIstVater = $oVaterArtikel->nIstVater;
  921. //$oArtikel->Variationen = $oVaterArtikel->Variationen;
  922. $oArtikel->fDurchschnittsBewertung = $oVaterArtikel->fDurchschnittsBewertung;
  923. $oArtikel->Bewertungen = $oVaterArtikel->Bewertungen;
  924. $oArtikel->HilfreichsteBewertung = $oVaterArtikel->HilfreichsteBewertung;
  925. $oArtikel->oVariationKombiVorschau_arr = $oVaterArtikel->oVariationKombiVorschau_arr;
  926. $oArtikel->oVariationDetailPreis_arr = $oVaterArtikel->oVariationDetailPreis_arr;
  927. $oArtikel->nVariationKombiNichtMoeglich_arr = $oVaterArtikel->nVariationKombiNichtMoeglich_arr;
  928. $oArtikel->oVariationKombiVorschauText = $oVaterArtikel->oVariationKombiVorschauText;
  929. $oArtikel->cVaterURL = $oVaterArtikel->cURL;
  930. $oArtikel->VaterFunktionsAttribute = $oVaterArtikel->FunktionsAttribute;
  931. // Kind mit uebergeben
  932. $oArtikel->kVariKindArtikel = $oArtikel->kArtikelVariKombi;
  933. $xPost_arr = $_POST;
  934. baueArtikelDetail($oArtikel, $xPost_arr);
  935. if (isset($aFormValues['kEditKonfig']))
  936. $smarty->assign('kEditKonfig', $aFormValues['kEditKonfig']);
  937. $cArtikelTemplate = 'artikel_inc.tpl';
  938. if (isset($oArtikel->FunktionsAttribute[FKT_ATTRIBUT_ARTIKELDETAILS_TPL]))
  939. $cArtikelTemplate = $oArtikel->FunktionsAttribute[FKT_ATTRIBUT_ARTIKELDETAILS_TPL];
  940. $objResponse->assign("contentmid", "innerHTML", $smarty->fetch("tpl_inc/" . $cArtikelTemplate));
  941. $objResponse->assign("popUps", "innerHTML", $smarty->fetch("tpl_inc/artikel_popups.tpl"));
  942. if(isset($_SESSION['oVarkombiAuswahl']) && getTemplateVersion() > 311)
  943. {
  944. $objResponse->script("setzeEigenschaftWerte('" . $cVariationKombiKind . "');");
  945. }
  946. // Hole alle Eigenschaften des Artikels
  947. $oEigenschaft_arr = $GLOBALS['DB']->executeQuery("SELECT * FROM teigenschaft WHERE kArtikel='{$oVaterArtikel->kArtikel}' AND (cTyp = 'RADIO' OR cTyp = 'SELECTBOX') ORDER BY nSort ASC, cName ASC", 2);
  948. // Durchlaufe alle Eigenschaften
  949. $oEigenschaftWert_arr = array();
  950. foreach ($oEigenschaft_arr as $i => $oEigenschaft)
  951. $oEigenschaftWert_arr[$i] = $GLOBALS['DB']->executeQuery("SELECT * FROM teigenschaftwert WHERE kEigenschaft='{$oEigenschaft->kEigenschaft}'", 2);
  952. // Baue mögliche Kindartikel
  953. $oKombiFilter_arr = gibMoeglicheVariationen($oVaterArtikel->kArtikel, $oEigenschaftWert_arr, $_SESSION['oVarkombiAuswahl']->kGesetzteEigeschaftWert_arr);
  954. if(is_array($oKombiFilter_arr) && count($oKombiFilter_arr) > 0)
  955. {
  956. $objResponse->script("schliesseAlleEigenschaftFelder();");
  957. foreach ($oKombiFilter_arr as $oKombiFilter)
  958. $objResponse->script("aVC(" . $oKombiFilter->kEigenschaftWert . ");");
  959. }
  960. $objResponse->script('setBindingsArtikel();');
  961. if ($oArtikel->bHasKonfig && count($oArtikel->oKonfig_arr) > 0)
  962. {
  963. $cArtikelJSTemplate = 'artikel_konfigurator_js.tpl';
  964. if (isset($oArtikel->FunktionsAttribute[FKT_ATTRIBUT_ARTIKELKONFIG_TPL_JS]))
  965. $cArtikelJSTemplate = $oArtikel->FunktionsAttribute[FKT_ATTRIBUT_ARTIKELKONFIG_TPL_JS];
  966. $cKonfigJS = $smarty->fetch("tpl_inc/" . $cArtikelJSTemplate);
  967. // remove script header
  968. $cKonfigJS = str_replace('<script type="text/javascript">', '', $cKonfigJS);
  969. $cKonfigJS = str_replace('</script>', '', $cKonfigJS);
  970. $objResponse->script($cKonfigJS);
  971. }
  972. foreach($oVariationKombiKind_arr as $f => $oVariationKombiKind)
  973. {
  974. $kNichtGesetzteEigenschaft = $oVariationKombiKind->kEigenschaft;
  975. // hole eigenschaftswerte
  976. $kBereitsGesetzt = array();
  977. $oEigenschaftWert_arr = $GLOBALS['DB']->executeQuery("SELECT * FROM teigenschaftwert WHERE kEigenschaft='{$kNichtGesetzteEigenschaft}'", 2);
  978. foreach ($oEigenschaftWert_arr as $oEigenschaftWert)
  979. {
  980. $kMoeglicheEigenschaftWert_arr = $_SESSION['oVarkombiAuswahl']->kGesetzteEigeschaftWert_arr;
  981. $kMoeglicheEigenschaftWert_arr[$kNichtGesetzteEigenschaft] = $oEigenschaftWert->kEigenschaftWert;
  982. $oTMPArtikel = gibArtikelByVariationen($oVaterArtikel->kArtikel, $kMoeglicheEigenschaftWert_arr);
  983. if ($oTMPArtikel && $oTMPArtikel->kArtikel > 0)
  984. {
  985. if (in_array($oTMPArtikel->kArtikel, $kBereitsGesetzt))
  986. continue;
  987. $kBereitsGesetzt[] = $oTMPArtikel->kArtikel;
  988. $oTestArtikel = new Artikel();
  989. $oArtikelOptionen->nMerkmale = 0;
  990. $oArtikelOptionen->nAttribute = 0;
  991. $oArtikelOptionen->nArtikelAttribute = 0;
  992. $oArtikelOptionen->nMedienDatei = 0;
  993. $oArtikelOptionen->nVariationKombi = 0;
  994. $oArtikelOptionen->nKeinLagerbestandBeachten = 1;
  995. $oArtikelOptionen->nKonfig = 0;
  996. $oArtikelOptionen->nDownload = 0;
  997. $oArtikelOptionen->nFinanzierung = 0;
  998. $oArtikelOptionen->nMain = 0;
  999. $oArtikelOptionen->nWarenlager = 0;
  1000. $oTestArtikel->fuelleArtikel($oTMPArtikel->kArtikel, $oArtikelOptionen, gibAktuelleKundengruppe(), $_SESSION['kSprache']);
  1001. if ($oTestArtikel->cLagerBeachten == 'Y' && $oTestArtikel->cLagerKleinerNull != 'Y' && $oTestArtikel->fLagerbestand == 0)
  1002. $objResponse->script("setzeVarInfo({$oEigenschaftWert->kEigenschaftWert}, '{$oTestArtikel->Lageranzeige->AmpelText}', '{$oTestArtikel->Lageranzeige->nStatus}');");
  1003. }
  1004. }
  1005. }
  1006. }
  1007. }
  1008. }
  1009. if(!$bKindVorhanden)
  1010. {
  1011. $xPost_arr = $_POST;
  1012. baueArtikelDetail($oVaterArtikel, $xPost_ar

Large files files are truncated, but you can click here to view the full file