Chyba ve vyhledávání

Logo Opencart
Logo Opencart

E-shop opencart obsahuje (obsahoval) drobnou chybu ve vyhledávání. Jde o to že při pokusu vyhledat produkt který není aktivní dojde i tak k jeho nalezení. Naštěstí produkt nejde dále zobrazit, tzn. ani objednat.

Chyba je v modulu /catalog/controller/search.php, řádek 48:
select * from product p left join product_description pd on (p.product_id = pd.product_id) left join image i on (p.image_id = i.image_id) where pd.language_id = '?' and pd.name like '?' or pd.description like '?' and p.date_available < now() and p.status = '1'.

Chyba není na první pohled vidět, ale chybí zde závorky okolo vyhledávací formulace, tedy:
select * from product p left join product_description pd on (p.product_id = pd.product_id) left join image i on (p.image_id = i.image_id) where pd.language_id = '?' and (pd.name like '?' or pd.description like '?') and p.date_available < now() and p.status = '1'.

Bez závorek SQL bere příkaz OR jako vyznamější takže dojde k vynechání části and p.status = '1'