public function getMenu($root=1) { // linken und rechten wert von $root holen $result = $this->db->query("SELECT l, r FROM ".DB_PREFIX."menutree WHERE id='".$root."'"); $row = $this->db->fetchAssoc($result); // wenn der knoten keine kinder hat, abbrechen // vielleicht doch nicht null returnen und einfach weitermachen?! if(($row['r']-$row['l']-1)/2 === 0) {return null;} // stack für rechte werte initialisieren $right = array(); // alle nachfolger von $root holen $result = $this->db->query("SELECT id, parent, title, l, r, level FROM ".DB_PREFIX."menutree WHERE l BETWEEN ".$row['l']." AND ".$row['r']." ORDER BY l ASC"); $output=null; while ($row = $this->db->fetchAssoc($result)) { // stack bearbeien, wenn er nicht leer ist if (count($right)>0) { // schauen, ob wir nodes vom stack entfernen müssen while ($right[count($right)-1]<$row['r']) { array_pop($right); } } if ($row['level'] != 0) { $output .= ''; $output .= str_repeat('     ',count($right)-1).$row['title']."
"; $output .= ''; $output .= ''; $output .= ''; } // knoten auf den stack legen $right[] = $row['r']; } return ''.$output.'
'; }