﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	blockedby	blocking
1977	xtc_get_categories() und xtc_get_subcategories() optimieren	noRiddle	somebody	"In der Funktion ''xtc_get_categories()'' sollte
{{{
AND trim(cd.categories_name) != ''
}}}

eingefügt werden. Das wird dort nicht geprüft, in beispielsweise der Search-Box aber schon.


In selbiger Funktion ist diese Zeile überflüssig (warum stipslashes hier ?):
{{{
$parent_id = xtc_db_prepare_input($parent_id)
}}}


Weiterhin ist die Condition für die Rekursion
{{{
if ($categories['categories_id'] != $parent_id) {
}}}

nicht sinnig weil sie immer zutrifft. Im Ergebnis kann ja nie eine ''categories_id'' sein die gleichzeitig die ''parent_id'' ist nach der gefiltert wurde (okay, theoretisch möglich wenn jemand an der DB gefummelt und dort Mist gebaut hat). 

Dasselbe gilt für
{{{
if ($subcategories['categories_id'] != $parent_id) {
}}}

in der Fumktion ''xtc_get_subcategories()''.

Evtl. könnte man mittels ''xtc_has_category_subcategories()'' abfragen wenn das nicht zu ressourcen-aufwändig ist (ich vermute jedoch es ist besser als eine unnötige Query mit JOINs).

Jedenfalls sollte man die while-Schleife mit dieser Abfrage umgeben:
{{{
if(xtc_db_num_rows($categories_query) > 0) {
    while(...
}
}}}

Ananalog dazu mit ''$subcategories_query''.

Eigentlich könnte man sogar der Funktion einen weiteren Parameter hinzufügen welcher bestimmt ob überhaupt alle Kats geholt werden sollen und davon die Rekursion abhängig machen. Dann könnte man  nämlich für z.B. das Kategoriedropdown in der Search-Box (''/templates/DEFAULT_TEMPLATE/source/boxes/search.php'') die Funktion ''xtc_get_categories()'' nutzen.

Es wäre ebenfalls zu bedenken ob man sich die Rekursion nicht sparen kann wenn man ohnehin alle Kats holen möchte, wie z.B. in der ''/advanced_search.php'', wo bislang die Funktion auch ausschließlich benutzt wird. Ohne Rekursion und Einschränkung auf 
{{{
WHERE parent_id =
}}}

dürfte das Bilden des benötigten Arrays schneller gehen.

Gruß,
noRiddle"	Aufgabe	closed	normal	modified-shop-2.0.6.0	Shop	2.0.5.1	fixed				
