Betrifft:
Ist-Zustand:
Es wird
Soll-Zustand
Es wird
Hintergrund
Wir nutzen diese Methode und haben festgestellt, dass unter bestimmten Bedingungen, in der oben dargestellten Schleife, statt die betreffende Warenkorb-Position zu überspringen, gleich direkt aus der gesamten Funktion gesprungen wird und somit weitere zu löschende Warenkorbpositionen ignoriert werden.
Wir haben das jetzt, wie im Soll-Zustand für uns erstmal gefixt, würden hierzu Eurerseits aber noch Feedback bekommen wollen, warum da return statt continue genutzt wird (kann ja sein, dass dies einen driftigen Grund hat).
Freundliche Grüße
Hape
4.06 (Build: 17)[ICODE] - [ICODE]includes/warenkorb_inc.php
- loescheWarenkorbPositionen()
:Ist-Zustand:
Es wird
return
benutzt.
PHP:
foreach ($nPos_arr as $nPos) {
//Kupons bearbeiten
if (!isset($_SESSION['Warenkorb']->PositionenArr[$nPos])) {
return;
}
if ($_SESSION['Warenkorb']->PositionenArr[$nPos]->nPosTyp != C_WARENKORBPOS_TYP_ARTIKEL &&
$_SESSION['Warenkorb']->PositionenArr[$nPos]->nPosTyp != C_WARENKORBPOS_TYP_GRATISGESCHENK
) {
return;
}
$cUnique = $_SESSION['Warenkorb']->PositionenArr[$nPos]->cUnique;
// Kindartikel?
if (strlen($cUnique) > 0 && $_SESSION['Warenkorb']->PositionenArr[$nPos]->kKonfigitem > 0) {
return;
}
executeHook(HOOK_WARENKORB_LOESCHE_POSITION, [
'nPos' => $nPos,
'position' => &$_SESSION['Warenkorb']->PositionenArr[$nPos]
]);
if (class_exists('Upload')) {
Upload::deleteArtikelUploads($_SESSION['Warenkorb']->PositionenArr[$nPos]->kArtikel);
}
$cUnique_arr[] = $cUnique;
unset($_SESSION['Warenkorb']->PositionenArr[$nPos]);
}
Soll-Zustand
Es wird
continue
benutzt.
PHP:
foreach ($nPos_arr as $nPos) {
//Kupons bearbeiten
if (!isset($_SESSION['Warenkorb']->PositionenArr[$nPos])) {
continue;
}
if ($_SESSION['Warenkorb']->PositionenArr[$nPos]->nPosTyp != C_WARENKORBPOS_TYP_ARTIKEL &&
$_SESSION['Warenkorb']->PositionenArr[$nPos]->nPosTyp != C_WARENKORBPOS_TYP_GRATISGESCHENK
) {
continue;
}
$cUnique = $_SESSION['Warenkorb']->PositionenArr[$nPos]->cUnique;
// Kindartikel?
if (strlen($cUnique) > 0 && $_SESSION['Warenkorb']->PositionenArr[$nPos]->kKonfigitem > 0) {
continue;
}
executeHook(HOOK_WARENKORB_LOESCHE_POSITION, [
'nPos' => $nPos,
'position' => &$_SESSION['Warenkorb']->PositionenArr[$nPos]
]);
if (class_exists('Upload')) {
Upload::deleteArtikelUploads($_SESSION['Warenkorb']->PositionenArr[$nPos]->kArtikel);
}
$cUnique_arr[] = $cUnique;
unset($_SESSION['Warenkorb']->PositionenArr[$nPos]);
}
Hintergrund
Wir nutzen diese Methode und haben festgestellt, dass unter bestimmten Bedingungen, in der oben dargestellten Schleife, statt die betreffende Warenkorb-Position zu überspringen, gleich direkt aus der gesamten Funktion gesprungen wird und somit weitere zu löschende Warenkorbpositionen ignoriert werden.
Wir haben das jetzt, wie im Soll-Zustand für uns erstmal gefixt, würden hierzu Eurerseits aber noch Feedback bekommen wollen, warum da return statt continue genutzt wird (kann ja sein, dass dies einen driftigen Grund hat).
Freundliche Grüße
Hape