function parentNeeded($parent, $netID, $area, $level)
{
    $linkCount = 0;
    try {
        $query = $db->prepare("SELECT * FROM links WHERE area=:area AND level=:level AND parent=:parent ORDER BY level ASC");
        $query->execute(array(':area' => $area, ':level' => $level, ':parent' => $parent));
    } catch (PDOException $e) {
        exit("error in query");
    }
    while ($links = $query->fetch(PDO::FETCH_ASSOC)) {
        if ($links['permission'] == NULL || checkLinkPermission($links['permission'])) {
            return true;
        }
    }
    return false;
}
function linkIsVisible($index, &$permissions, $admin, $su)
{
    if (linkHasChild($index)) {
        $children = linkPullChildrenIndex($index);
        foreach ($children as $child) {
            if (linkHasChild($child)) {
                $grandchildren = linkPullChildrenIndex($child);
                foreach ($grandchildren as $grandchild) {
                    $link = linkPullInfo($grandchild);
                    if ($link["resource"] == NULL) {
                        return true;
                    }
                    if ($link["resource"] != NULL && checkLinkPermission($permissions, $link["verb"], $link["resource"], $admin, $su)) {
                        return true;
                    }
                }
            } else {
                $link = linkPullInfo($child);
                if ($link["resource"] == NULL) {
                    return true;
                }
                if ($link["resource"] != NULL && checkLinkPermission($permissions, $link["verb"], $link["resource"], $admin, $su)) {
                    return true;
                }
            }
        }
    } else {
        $link = linkPullInfo($index);
        if ($link["resource"] == NULL) {
            return true;
        }
        if ($link["resource"] != NULL && checkLinkPermission($permissions, $link["verb"], $link["resource"], $admin, $su)) {
            return true;
        }
    }
    return false;
}