function guifi_cnml_tree($zid) { $result = db_query(' SELECT z.id, z.master parent_id, z.title, z.nick, z.time_zone, z.ntp_servers, z.dns_servers, z.graph_server, z.homepage, z.minx, z.miny, z.maxx, z.maxy,z.timestamp_created, z.timestamp_changed, r.body FROM {guifi_zone} z, {node} n, {node_revisions} r WHERE z.id=n.nid AND n.vid=r.vid ORDER BY z.title'); while ($zone = db_fetch_object($result)) { $zones[$zone->id] = $zone; } $result = db_query(' SELECT l.*, r.body FROM {guifi_location} l, {node} n, {node_revisions} r WHERE l.id=n.nid AND n.vid=r.vid ORDER BY l.nick'); while ($node = db_fetch_object($result)) { $zones[$node->zone_id]->nodes[] = $node; } $childs = array(); $children = array(); foreach ($zones as $zoneid => $zone) { if (!$children[$zone->parent_id]) { $children[$zone->parent_id][$zoneid] = $zone; } $children[$zone->parent_id][$zoneid] = $zone; if ($zoneid == $zid) { $childs[$zid] = $zone; } } $childs[$zid]->childs = guifi_zone_tree_recurse($zid, $children); return $childs; }
function guifi_zone_tree_recurse($zid, $children) { $childs = array(); if ($children[$zid]) { foreach ($children[$zid] as $id => $zone) { $childs[$id] = $zone; $childs[$id]->childs = guifi_zone_tree_recurse($id, $children); } } return $childs; }