function requirement_get_children($parent)
{
    global $db;
    $tbl_req = REQ_TBL;
    $f_req_id = REQ_ID;
    $f_req_filename = REQ_FILENAME;
    $f_req_parent = REQ_PARENT;
    $children = array();
    # retrieve all children of $parent
    $q = "\tSELECT {$f_req_id}, {$f_req_filename}\n\t\t\tFROM {$tbl_req}\n\t\t\tWHERE {$f_req_parent} = {$parent}";
    $result = db_query($db, $q);
    # display each child
    while ($row = db_fetch_row($db, $result)) {
        # call this function again to display this
        # child's children
        # we don't need the child's children in this function
        # for display on the req detail page, we only need immediate children
        # not sub-children.  We'll need sub-children for the tree view
        $children[] = array("uid" => $row[REQ_ID], "name" => $row[REQ_FILENAME], "children" => requirement_get_children($row[REQ_ID]));
    }
    return $children;
}
$filter_priority = "";
$order_by = REQ_FILENAME;
$order_dir = "ASC";
$page_number = 1;
util_set_filter('per_page', $filter_per_page, $_POST);
util_set_filter('doc_type', $filter_doc_type, $_POST);
util_set_filter('status', $filter_status, $_POST);
util_set_filter('area_covered', $filter_area_covered, $_POST);
util_set_filter('functionality', $filter_functionality, $_POST);
util_set_filter('assign_release', $filter_assign_release, $_POST);
util_set_filter('requirement_search', $filter_search, $_POST);
util_set_filter('priority', $filter_priority, $_POST);
util_set_order_by($order_by, $_POST);
util_set_order_dir($order_dir, $_POST);
util_set_page_number($page_number, $_POST);
$rows_children = requirement_get_children($s_req_id);
$selected_rows = array();
foreach ($rows_children as $row_child) {
    $selected_rows[$row_child["uid"]] = "";
}
session_records("requirement_requirement_assoc", $selected_rows);
html_window_title();
html_print_body();
html_page_title($project_name . " - " . lang_get("req_req_assoc_page"));
html_page_header($db, $project_name);
html_print_menu();
requirement_menu_print($page);
error_report_check($_GET);
$row_requirement = requirement_get_detail($project_id, $s_req_id, $s_req_version_id);
foreach ($row_requirement as $row_detail) {
    $req_name = $row_detail[REQ_FILENAME];
print "<div align=center>" . NEWLINE;
html_print_requirements_filter($project_id, $filter_doc_type, $filter_status, $filter_area_covered, $filter_functionality, $filter_assign_release, $filter_per_page = null, $filter_show_versions = null, $filter_search, $filter_priority);
print "<br>" . NEWLINE;
print "</div>";
print "</form>";
$rows_top_level_requirements = requirement_get($project_id, $page_number = 0, $order_by = REQ_FILENAME, $order_dir = "ASC", $filter_doc_type, $filter_status, $filter_area_covered, $filter_functionality, $filter_assign_release, $filter_show_versions = 'latest', $filter_per_page, $filter_search, $filter_priority, $csv_name = null, $root_node = true);
# tree array
$tree = array();
if ($rows_top_level_requirements) {
    # get the children of the top level requirements
    foreach ($rows_top_level_requirements as $row_req) {
        $root_node = $row_req[REQ_ID];
        $req_version = $row_req[REQ_VERS_VERSION];
        $root_node_name = $row_req[REQ_FILENAME];
        # build the tree array
        $tree[] = array("uid" => $root_node, "name" => $root_node_name, "children" => requirement_get_children($root_node));
    }
    # print the tree array as html
    html_dynamic_tree("requirements", $tree, $root_node = true);
} else {
    html_no_records_found_message(lang_get("no_requirements"));
}
html_print_footer();
# ---------------------------------------------------------------------
# $Log: requirement_associations_page.php,v $
# Revision 1.6  2007/02/03 10:25:53  gth2
# no message
#
# Revision 1.5  2006/08/05 22:08:37  gth2
# adding NEWLINE constant to support multiple OS newline chars - gth
#