/**
 * Compare if in $nodes array exists some qname with prefix $prefix.
 * Using the $node['text'] attribute because the $node['id'] attr changes sometimes
 * @param unknown_type $prefix
 * @param array $nodes
 * @return unknown_type
 */
function _neologism_gateway_in_nodes($prefix, array $nodes)
{
    $result = false;
    foreach ($nodes as $node) {
        $qterm_splited = explode(':', $node['text']);
        if ($prefix == $qterm_splited[0]) {
            $result = true;
        } elseif (!empty($node['children'])) {
            $result = _neologism_gateway_in_nodes($prefix, $node['children']);
        }
    }
    return $result;
}
/**
 * This recurive function search for chindren of $node return class from the same $voc. 
 * If the parent does not belong to the $voc but has children that does, this parent is added as well.
 * @param object $node
 * @param object $voc
 * @param object $add_checkbox [optional]
 * @return 
 */
function neologism_gateway_get_class_children_old($node, $voc = NULL, $add_checkbox = FALSE, array &$disjointwith_array = NULL)
{
    $nodes = array();
    static $array_of_id = array();
    $children = db_query('select prefix, reference from {evoc_rdf_superclasses} where superclass = "' . $node . '"');
    while ($child = db_fetch_object($children)) {
        $class = db_fetch_object(db_query('select * from evoc_rdf_classes where prefix = "' . $child->prefix . '" and id = "' . $child->reference . '" '));
        if ($class) {
            $class->prefix = trim($class->prefix);
            $class->id = trim($class->id);
            $qname = $class->prefix . ':' . $class->id;
            // extra information needed by the treeview
            $extra_information = true;
            $realId = '';
            if (isset($array_of_id[$qname])) {
                $modified_id = $array_of_id[$qname] . '_' . $qname;
                $array_of_id[$qname] += 1;
                $realId = $qname;
            } else {
                $array_of_id[$qname] = 1;
                $extra_information = false;
            }
            //-----------------------------------------
            // fetch extra information
            // fetch the disjointwith
            $disjointwith = array();
            if ($class->ndisjointwith > 0) {
                $result = db_query('select disjointwith from {evoc_rdf_disjointwith} where prefix = "' . $class->prefix . '" and reference = "' . $class->id . '" ');
                while ($c = db_fetch_object($result)) {
                    $disjointwith[] = $c->disjointwith;
                }
                if (isset($disjointwith_array) && is_array($disjointwith_array)) {
                    $disjointwith_array[$qname] = $disjointwith;
                }
            }
            // fetch the superclasses
            $superclasses = array();
            if ($class->superclasses > 0) {
                $result = db_query('select superclass from {evoc_rdf_superclasses} where prefix = "' . $class->prefix . '" and reference = "' . $class->id . '" ');
                while ($s = db_fetch_object($result)) {
                    $superclasses[] = $s->superclass;
                }
            }
            $children_nodes = neologism_gateway_get_class_children($qname, $voc, $add_checkbox, $disjointwith_array);
            if ($voc) {
                if ($class->prefix == $voc || _neologism_gateway_in_nodes($voc, $children_nodes)) {
                    $leaf = count($children_nodes) == 0;
                    $qtip = '<b>' . $class->label . '</b><br/>' . $class->comment;
                    $nodes[] = array('text' => $qname, 'id' => !$extra_information ? $qname : $modified_id, 'leaf' => $leaf, 'iconCls' => $class->prefix == $voc ? 'class-samevoc' : 'class-diffvoc', 'cls' => $class->prefix == $voc ? 'currentvoc' : '', 'children' => $children_nodes, 'qtip' => $qtip, 'disjointwith' => $disjointwith, 'superclasses' => $superclasses, 'nodeStatus' => 0);
                    if ($extra_information) {
                        $nodes[count($nodes) - 1]['realid'] = $qname;
                    }
                    if ($add_checkbox) {
                        $nodes[count($nodes) - 1]['checked'] = false;
                    }
                }
            } else {
                $leaf = count($children_nodes) == 0;
                $qtip = '<b>' . $class->label . '</b><br/>' . $class->comment;
                $nodes[] = array('text' => $qname, 'id' => !$extra_information ? $qname : $modified_id, 'leaf' => $leaf, 'iconCls' => 'class-samevoc', 'children' => $children_nodes, 'qtip' => $qtip, 'disjointwith' => $disjointwith, 'superclasses' => $superclasses, 'nodeStatus' => 0);
                if ($extra_information) {
                    $nodes[count($nodes) - 1]['realid'] = $qname;
                }
                if ($add_checkbox) {
                    $nodes[count($nodes) - 1]['checked'] = false;
                }
            }
        }
    }
    return $nodes;
}