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;
}
Esempio n. 2
0
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;
}