isotope / core

Core repository of Isotope eCommerce, an eCommerce extension for Contao Open Source CMS
https://isotopeecommerce.org
135 stars 107 forks source link

DC_ProductData::reviseTable can delete all products #2448

Closed aschempp closed 6 months ago

aschempp commented 1 year ago

Also in der DC_ProductData.php neu eingefügten Funktion reviseTable wird zuerst ptable gesetzt und dann parent::reviseTable aufgerufen. Dadurch sollte meinem Verständnis nach reviseTable von DC_Table aufgerufen werden. Und dort wurde mit Version 4.9.17 was bei der Abfrage von ptable verändert. Es wurde dann folgendes hinzugefügt:

elseif ($ptable == $this->strTable) { $objIds = $this->Database->execute('SELECT c.id FROM ' . $this->strTable . ' c LEFT JOIN ' . $ptable . ' p ON c.pid=p.id WHERE p.id IS NULL AND c.pid > 0'); }

davor gab es nur den else-Zweig:

else { $objIds = $this->Database->execute("SELECT c.id FROM " . $this->strTable . " c LEFT JOIN " . $ptable . " p ON c.pid=p.id WHERE p.id IS NULL"); }

Die Variante vor 4.9.17 sorgt aber dafür, dass bei pid=0 aber auch die ID von dem Produkt ohne Variante zurückgegeben wird. Und dann wurden bei mir immer alle Produkte gelöscht. Aufgefallen ist es mir, da auch Einträge die ich direkt in der DB gemacht hatte, wieder gelöscht wurden.

Originally posted by @C-H-R-I-S-U in https://github.com/isotope/core/issues/2187#issuecomment-1488041687

aschempp commented 6 months ago

Da wir ab Version 2.9 nur noch Contao 4.13 unterstützen, sollte dieses Problem erledigt sein.