GX-Bug #55691
geschlossenDas Löschen von Kategorien und Artikeln sendet irreführende Daten
100%
Beschreibung
Step 1. Erstelle eine Kategorie.
Step 2. Erstelle einen Artikel welcher zur neuen Katogorie und zur Kategorie Top gehört.
Step 3. Nun lösche den Artikel und die neue Kategorie.
In diesem Fall passiert folgendes in categories.php:
$_POST['multi_categories'] wird mit der KategorieID gefüllt.
$_POST['multi_products'] wird mit dem zu löschenden Artikel gefüllt.
$_POST['multi_products_categories'] wird mit den Kategorien der jeweiligen zu löschenden Artikeln gefüllt.
Was schließlich passiert:
Step 1: Die Kategorie wird gelöscht. Dabei wird der Artikel übersprungen, da er in der Kategorie Top auch existiert.
Step 2: Der Artikel wird gelöscht. Dabei kommt es zu einem Fehler, denn ursprünglich würde hier als Referenz $_POST['multi_products_categories'] übergeben.
Es kommt zum Fehler, weil der zu löschende Code des Artikels glaubt, das dieser Artikel in 2 Kategorien zu finden ist und nicht in 1.
(Das findest du in ProductWriteService.inc.php -> Zeile 246. Die If Bedingung)
Um diesen Fehler zu beheben, habe ich nun Code geschrieben, welcher durch die "multi_products_categories" iteriert und alle gelöschten Kategorien aus diesem Array entfernt. Diesen findest du in categories.php auf Zeile 464ff.
Dieser Code ist nicht unbedingt die beste Lösung. Es gilt hier herauszufinden warum wir überhaupt die Kategorien von Artikeln beim Aufruf von Löschen bereits mitübergeben, statt diese aus der Datenbank zu holen und zu schauen ob dieser Teil refactored werden könnte.
Wenn dies nicht möglich ist, wäre es auch interessant zu schauen ob mein Code verbessert werden könnte.
Bei Fragen einfach an mich wenden.
Zugehörige Tickets