Tree Module is evil !?!

Phoca Gallery modules - modules for Phoca Gallery extension
Shuairan
Phoca Newbie
Phoca Newbie
Posts: 3
Joined: 15 Jun 2008, 21:53

Tree Module is evil !?!

Post by Shuairan »

Hi,

erstmal Danke für die Phoca Gallerie und alles was so dazugehört, ist echt eine der besten Erweiterung für Joomla :)

Weswegen ich hier poste ist ein Problem über das ich beim Tree Modul gestolpert bin:
Die Funktion categoryTree in mod_phocagallery_tree.php ist anscheinend ineffiziener als es sein müsste, diese 'rekursiven' Aufrufe verursachen einen quadratischen Aufwand ( n+n^2 )

Schuld daran ist wie gesagt der rekursive Aufruf, der imho garnicht benötigt wird:

Code: Select all

line 114
if ($value->parentid == $id)
{	
	$tree[$value->id] = $showText;
	$tree = categoryTree($data, $tree, $value->id, '', $treeId);	
}	
was bezweckt dieser Code genau? das ganze funktioniert nämlich auch wenn man ihn mit folgendem Code ersetzt:

Code: Select all

$tree[$value->id] = $showText;
Also die jeweilge Zeile für dtree direkt in den Array schreibt, und nicht erst wenn $value->parentid == $id

Vielleicht hab ich auch was übersehen, kannst es ja mal bei dir ausprobieren.

MfG, Shuairan
Shuairan
Phoca Newbie
Phoca Newbie
Posts: 3
Joined: 15 Jun 2008, 21:53

Re: Tree Module is evil !?!

Post by Shuairan »

Ah hab noch was dazu rausgefungen: Also zufälligerweise sind meine Testgallerien schon hierarchisch sortiert, deswegen hat bei mir alles funktioniert.

dTree braucht logischerweise für die Erzeugung die Parent-Elemente vor den Child-Elementen, das was da gemacht wird ist also eine Topologische Sortierung.

Glaube kaum das es in dem Fall eine Optimierung vom Algorithmus gibt, das einzige was man wohl verbessern kann ist wenn man die getLink Funktion nur aufruft wenn auch was mit dem Ergebnis angefangen wird, d.h. die zwei Zeilen

Code: Select all

      $link = getLink ( $value->id );
      $showText =[...]
noch mit in die if-Abfrage zu schieben.
Dann werden doch einige unnötigen Abfragen ans Menü weggelassen 8)
User avatar
Jan
Phoca Hero
Phoca Hero
Posts: 48402
Joined: 10 Nov 2007, 18:23
Location: Czech Republic
Contact:

Re: Tree Module is evil !?!

Post by Jan »

Hallo, be dem ersten geht es um die Sub Kategorien und verschiedenen Levelen. Bei dem zweiten geht us um Finden von Itemid, wenn es gibt... Leider haben module keine Itemid, so die brauchen es von Komponent übernehmen...

$value->parentid == $id

das heisst, dass es noch Subkategorien geben, so die Funktion mus rekursiv noch eingerufen werden (für die nächsten Levelen von Kategorien)

Jan
If you find Phoca extensions useful, please support the project
Post Reply