function check_tftpip_in_mipb($tftpserverip)
{
    global $ds, $suffix, $auDN, $rootAU, $ldapError;
    // 		echo " $auDN == $rootAU <br><br>";
    if ($auDN == $rootAU) {
        return 1;
    } else {
        $mipb_array = get_maxipblocks_au($auDN);
        if ($mipb_array[0] != "") {
            $new_tftpip = $tftpserverip . '_' . $tftpserverip;
            for ($i = 0; $i < count($mipb_array); $i++) {
                if (split_iprange($new_tftpip, $mipb_array[$i]) != 0) {
                    return 1;
                    break;
                }
            }
        }
    }
    return 0;
}
function createComputersMenu($rollen, $mnr, $auDN, $sbmnr, $mcnr)
{
    global $template, $ds, $suffix, $START_PATH;
    $mipb_array = get_maxipblocks_au($auDN);
    #print_r($mipb_array);
    if ($mipb_array[0] == "") {
        $iprechnerlink = "no_ip.php?mnr=2";
    } else {
        $iprechnerlink = "ip_rechner.php?sort=ipaddress";
    }
    # Struktur der Registerkartenleiste
    # Hauptmenu
    $hauptmenu = array(array("link" => "hostoverview.php?sort=hostname", "text" => "&Uuml;bersicht Clients", "zugriff" => array("MainAdmin", "HostAdmin", "DhcpAdmin")), array("link" => $iprechnerlink, "text" => "IP Adressen / Dienste", "zugriff" => array("MainAdmin", "DhcpAdmin", "HostAdmin")));
    # Submenus
    /*$computers_array = get_hosts($auDN,array("dn","hostname","ou"));
     	for($n=0;$n<count($computers_array);$n++){
     		
     		$comps[] = array("link" => "host.php?dn=".$computers_array[$n]['dn']."&sbmnr=".$n,
     							"text" => $computers_array[$n]['hostname'],
                       	"zugriff" => array("MainAdmin","HostAdmin","DhcpAdmin"));
         # print_r($comps); echo "<br>";
     	}*/
    $comps[] = array("link" => "new_host.php?sbmnr=0", "text" => "Neuen Client anlegen", "zugriff" => array("MainAdmin", "DhcpAdmin", "HostAdmin"));
    /*
      	$groups_array = get_groups($auDN,array("dn","cn"));
      	for($n=0;$n<count($groups_array);$n++){
      		
      		$groups = array();
      		$groups[] = array("link" => "group.php?dn=".$groups_array[$n]['dn']."&sbmnr=".$n,
      								"text" => $groups_array[$n]['cn'],
       	              	"zugriff" => array("MainAdmin","DhcpAdmin","HostAdmin"));
       	              	
      	}
      	$groups[] = array("link" => "new_group.php?sbmnr=".$n,
                      "text" => "Neue Gruppe anlegen",
                      "zugriff" => array("MainAdmin","DhcpAdmin","HostAdmin"));
    */
    # default machine-configs
    #$mcdef_array = get_machineconfigs("cn=computers,".$auDN,array("dn","cn","timerange"));
    #for($n=0;$n<count($mcdef_array);$n++){
    #	$defmc [] = array("link" => "mcdef.php?dn=".$mcdef_array[$n]['dn']."&mnr=3&sbmnr=".$n,
    #							"text" => $mcdef_array[$n]['cn'],
    #   	              	"zugriff" => array("MainAdmin","DhcpAdmin","HostAdmin"));
    #}
    $newpxe[] = array("link" => "new_pxe.php", "text" => "Neue PXE Config", "zugriff" => array("MainAdmin", "DhcpAdmin"));
    $submenu = array($comps, array(), $newpxe);
    #echo "submenu: ";print_r($submenu);echo "<br><br>";
    # Zusammenstellen der Menuleiste
    $template->define_dynamic("Hauptmenu", "Menu");
    $template->define_dynamic("Submenu", "Menu");
    $i = 0;
    $maxmenu = count($hauptmenu);
    foreach ($hauptmenu as $item) {
        $template->clear_parse("SUBMENU_LIST");
        if ($item['zugriff'] === "alle" || vergleicheArrays($rollen, $item['zugriff'])) {
            #########################################################################
            # SUBMENU
            $subempty = 0;
            $j = 0;
            $maxsub = count($submenu[$mnr]);
            #echo "_"; print_r($maxsub); echo "_";
            if ($maxsub > 0) {
                foreach ($submenu[$mnr] as $item2) {
                    if ($item2['zugriff'] === "alle" || vergleicheArrays($rollen, $item2['zugriff'])) {
                        if ($i != $mnr) {
                            $template->assign(array("SUB" => ""));
                            # 								"LINK_S" => "",
                            #                       "TEXT_S" => ""));
                            $template->parse("SUBMENU_LIST", ".Submenu");
                            $template->clear_dynamic("Submenu");
                        } else {
                            if ($j == 0) {
                                if ($sbmnr == 0) {
                                    if ($maxsub == 1) {
                                        $zwisch2 = "branchbottom2";
                                    } else {
                                        $zwisch2 = "branch2";
                                    }
                                    $lastaktive = true;
                                    $farb = "#505050";
                                } else {
                                    if ($maxsub == 1) {
                                        $zwisch2 = "branchbottom2";
                                    } else {
                                        $zwisch2 = "branch2";
                                    }
                                    $farb = "#A0A0A0";
                                    $lastaktive = false;
                                }
                            } else {
                                if ($sbmnr == $j) {
                                    if ($maxsub == $j + 1) {
                                        $zwisch2 = "branchbottom2";
                                    } else {
                                        $zwisch2 = "branch2";
                                    }
                                    $lastaktive = true;
                                    $farb = "#505050";
                                } else {
                                    if ($maxsub == $j + 1) {
                                        $zwisch2 = "branchbottom2";
                                    } else {
                                        $zwisch2 = "branch2";
                                    }
                                    $farb = "#A0A0A0";
                                    $lastaktive = false;
                                }
                            }
                            $htmlcode = "\n\t\t   \t\t<tr height='2'>\n\t\t\t\t\t\t<td></td><td align='right'><img src='../pics/line2.gif' height='2'></td><td></td><td></td>\n\t\t   \t\t</tr>\n\t\t   \t\t<tr>\n\t\t\t\t\t\t<td width='8%'>&nbsp;</td>\n\t\t\t\t\t\t<td width='5%' align='right'><img src='../pics/" . $zwisch2 . ".gif'></td>\n \t\t\t\t\t\t<td width='5%' align='left' style='border-width:1 0 1 1;border-color:#000000;border-style:solid;padding:4;background-color:{FARBE_S}'>&nbsp;</td>\n\t\t     \t\t\t<td width='74%' align='left' style='border-width:1 1 1 0;border-color:#000000;border-style:solid;padding:4;padding-left:12px;background-color:{FARBE_S}'> \n\t\t     \t\t\t<a href='" . $item2['link'] . "' style='text-decoration:none'><code class='submenue_schrift'>" . $item2['text'] . "</code></a></td>\n\t\t\t\t\t\t<td width='8%'>&nbsp;</td> \t\t\t\t\t\t\n\t\t\t\t\t</tr>\n\t\t\t\t\t";
                            $template->assign(array("SUB" => $htmlcode));
                            $template->assign(array("FARBE_S" => $farb));
                            $template->parse("SUBMENU_LIST", ".Submenu");
                            $template->clear_dynamic("Submenu");
                        }
                    } else {
                        $subempty++;
                    }
                    $j = $j + 1;
                }
            }
            if ($subempty == count($submenu[$mnr])) {
                $template->assign(array("SUB" => ""));
                #							  "LINK_S" => "",
                #                       "TEXT_S" => ""));
                $template->parse("SUBMENU_LIST", ".Submenu");
                $template->clear_dynamic("Submenu");
            }
            # SUBMENU
            #####################################################################
            if ($i == 0) {
                if ($mnr == 0) {
                    if (count($submenu[$i][0]) != 0) {
                        if ($maxmenu == 1) {
                            $zwisch = "";
                        } else {
                            $zwisch = "";
                        }
                    } else {
                        $zwisch = "";
                    }
                    $lastaktive = true;
                    $farb = "#505050";
                } else {
                    if (count($submenu[$i][0]) != 0) {
                        if ($maxmenu == 1) {
                            $zwisch = "<a href='{LINK_M}' style='border-style=none;text-decoration:none'>\n               \t<img style='border-width:0;border-style=none;' src='../pics/plus3.gif'></a>";
                        } else {
                            $zwisch = "<a href='{LINK_M}' style='border-style=none;text-decoration:none'>\n               \t<img style='border-width:0;border-style=none;' src='../pics/plus3.gif'></a>";
                        }
                    } else {
                        $zwisch = "";
                    }
                    $farb = "#A0A0A0";
                    $lastaktive = false;
                }
            } else {
                if ($mnr == $i) {
                    if (count($submenu[$mnr][0]) != 0) {
                        if ($maxmenu == $i + 1) {
                            $zwisch = "";
                        } else {
                            $zwisch = "";
                        }
                    } else {
                        $zwisch = "";
                    }
                    $lastaktive = true;
                    $farb = "#505050";
                } else {
                    if (count($submenu[$i][0]) != 0) {
                        if ($maxmenu == $i + 1) {
                            $zwisch = "<a href='{LINK_M}' style='border-style=none;text-decoration:none'>\n               \t<img style='border-width:0;border-style=none;' src='../pics/plus3.gif'></a>";
                        } else {
                            $zwisch = "<a href='{LINK_M}' style='border-style=none;text-decoration:none'>\n               \t<img style='border-width:0;border-style=none;' src='../pics/plus3.gif'></a>";
                        }
                    } else {
                        $zwisch = "";
                    }
                    $farb = "#A0A0A0";
                    $lastaktive = false;
                }
            }
            $template->assign(array("ICON" => $zwisch, "FARBE" => $farb, "LINK_M" => $item["link"], "TEXT_M" => $item["text"]));
            $template->parse("HAUPTMENU_LIST", ".Hauptmenu");
            $template->clear_dynamic("Hauptmenu");
        }
        $i = $i + 1;
    }
    if ($lastaktive) {
        $template->assign(array("ENDE" => ""));
    } else {
        $template->assign(array("ENDE" => ""));
    }
}
/**
* reduce_ip_delegation($oldmipb,$newmipb,$childauDN,$auDN)  
* Einen an eine untergeordnete AU delegierten IP Bereich verkleinern. Diese Funktion wird rekursiv fuer
* alle weiter-delegierten Teilbereiche abgearbeitet. FreeIPBlocks der AU und Child-AU, sowie MaxIPBlocks
* der Child-AU werden angepasst.
*
* @param string oldmipb delegierter maximaler IP Bereich, der verkleinert werden soll
* @param string newmipb delegierter maximaler IP Bereich nach der Verkleinerung
* @param string childauDN Distinguished Name des untergeordneten (Child) LDAP AU-Objektes
* @param string auDN Distinguished Name des LDAP AU-Objektes
*
* @return boolean 1 bei Erfolg bzw. 0 bei Misserfolg
*
* @author Tarik Gasmi
*/
function reduce_ip_delegation($oldmipb, $newmipb, $childauDN, $auDN)
{
    global $ds, $suffix, $ldapError;
    # Durch Reduzierung zu loeschende IP Ranges (Array)
    $delip = split_iprange($newmipb, $oldmipb);
    #print_r($delip);printf("<br><br>");
    # Finde unter allen Child-AUs diejenigen, die von Reduzierung betroffene Child-Child-AUs haben
    # Diese sind werden rekursiv abgearbeitet
    $cchild_array = get_childau($childauDN, array("dn", "maxipblock"));
    $cchild_todo = array();
    foreach ($delip as $delipitem) {
        foreach ($cchild_array as $item) {
            if (count($item['maxipblock']) > 1) {
                foreach ($item['maxipblock'] as $item2) {
                    if (intersect_ipranges($delipitem, $item2) != false) {
                        $cchild_todo[] = array('coldmipb' => $item2, 'cnewmipb' => intersect_ipranges($newmipb, $item2), 'ccauDN' => $item['dn'], 'childauDN' => $childauDN);
                    }
                }
            } elseif (count($item['maxipblock']) == 1) {
                if (intersect_ipranges($delipitem, $item['maxipblock']) != false) {
                    $cchild_todo[] = array('coldmipb' => $item['maxipblock'], 'cnewmipb' => intersect_ipranges($newmipb, $item['maxipblock']), 'ccauDN' => $item['dn'], 'childauDN' => $childauDN);
                }
            }
        }
    }
    #print_r($cchild_todo);printf("<br><br>");
    ######################
    # Rekursionsaufruf (für jede Child-AU, die betroffene Child-Child-AU hat)
    foreach ($cchild_todo as $item) {
        if ($item['cnewmipb'] == false) {
            delete_ip_delegation($item['coldmipb'], $item['ccauDN'], $item['childauDN']);
        } else {
            reduce_ip_delegation($item['coldmipb'], $item['cnewmipb'], $item['ccauDN'], $item['childauDN']);
        }
    }
    ######################
    # Ab hier: alles was bei jedem Fkt.Aufruf zu machen ist (auf Ebene AU und Child-AU)
    # in CAU Check ob RechnerIPs oder DhcpIPs betroffen:
    # - falls ja: nochmals Abfrage (Hammermethode: diese auch loeschen) ob diese zu loeschen sind
    #   -> ja, betreffende IPs loeschen
    #   -> nein, Abbruch.
    # - falls nein: fuer jedes FIPB in CAU intersect(FIPB,newmipb)-> Schnittmengen bilden die neuen FIPB
    $del_objects = objects_to_adjust($newmipb, $delip, $childauDN, $cchild_array);
    # print_r($del_objects);printf("<br><br>");
    if (count($del_objects['hostips']) != 0) {
        printf("<br>Host IP Addresses that will be deleted: <br>");
        foreach ($del_objects['hostips'] as $item) {
            printf("HostDN: %s &nbsp;&nbsp; IP Address: %s <br>", $item['dn'], $item['ip']);
        }
    }
    if (count($del_objects['dhcpranges']) != 0) {
        printf("<br>Subnet IP Ranges that will be adjusted: <br>");
        foreach ($del_objects['dhcpranges'] as $item) {
            printf("DhcpObjectDN: %s &nbsp;&nbsp; New IP Range: %s <br>", $item['dn'], $item['newrange']);
        }
    }
    # momentan wird einfach geloescht:
    if (count($del_objects['hostips']) != 0) {
        foreach ($del_objects['hostips'] as $item) {
            delete_ip_host($item['dn'], $item['auDN']);
        }
    }
    if (count($del_objects['dhcpranges']) != 0) {
        foreach ($del_objects['dhcpranges'] as $item) {
            if (count($item['newrange']) >= 1) {
                modify_ip_dhcprange($item['newrange'], $item['dn'], $item['auDN']);
            } else {
                delete_ip_dhcprange($item['dn'], $item['auDN']);
            }
        }
    }
    # in Child-AU: oldmipb -> newmipb
    $mipb_array = get_maxipblocks_au($childauDN);
    # print_r($mipb_array);printf("<br><br>");
    foreach ($delip as $delipitem) {
        for ($i = 0; $i < count($mipb_array); $i++) {
            if (intersect_ipranges($delipitem, $mipb_array[$i]) != 0) {
                $ipranges = intersect_ipranges($newmipb, $mipb_array[$i]);
                array_splice($mipb_array, $i, 1, $ipranges);
            }
        }
    }
    # print_r($mipb_array);printf("<br><br>");
    for ($i = 0; $i < count($mipb_array); $i++) {
        if ($mipb_array[$i] == false) {
            array_splice($mipb_array, $i, 1);
        }
    }
    #print_r($mipb_array);printf("<br><br>");
    if (count($mipb_array) == 0) {
        $entry['MaxIPBlock'] = array();
        #print_r($entry);printf("<br><br>");
        $results = ldap_mod_del($ds, $childauDN, $entry);
    } else {
        foreach ($mipb_array as $item) {
            $entry['MaxIPBlock'][] = $item;
        }
        #print_r($entry);printf("<br><br>");
        $results = ldap_mod_replace($ds, $childauDN, $entry);
    }
    if ($results) {
        echo "<br>MIPBs in Child-AU erfolgreich aktualisiert!<br>";
        # in Child-AU: FIPBs anpassen
        $fipb_array = get_freeipblocks_au($childauDN);
        #print_r($fipb_array);printf("<br><br>");
        foreach ($delip as $delipitem) {
            for ($i = 0; $i < count($fipb_array); $i++) {
                if (intersect_ipranges($delipitem, $fipb_array[$i]) != 0) {
                    $ipranges = intersect_ipranges($newmipb, $fipb_array[$i]);
                    array_splice($fipb_array, $i, 1, $ipranges);
                }
            }
        }
        # print_r($fipb_array);printf("<br><br>");
        for ($i = 0; $i < count($fipb_array); $i++) {
            if ($fipb_array[$i] == false) {
                array_splice($fipb_array, $i, 1);
            }
        }
        #print_r($fipb_array);printf("<br><br>");
        if (count($fipb_array) == 0) {
            $entry1['FreeIPBlock'] = array();
            #print_r($entry1);printf("<br><br>");
            $results = ldap_mod_del($ds, $childauDN, $entry1);
        } else {
            foreach ($fipb_array as $item) {
                $entry1['FreeIPBlock'][] = $item;
            }
            #print_r($entry1);printf("<br><br>");
            $results = ldap_mod_replace($ds, $childauDN, $entry1);
        }
        if ($results) {
            echo "FIPBs in Child-AU erfolgreich aktualisiert!<br>";
            # in AU: Geloeschte IP Bereiche als neue FIPBs aufnehmen
            foreach ($delip as $item) {
                $entry2['FreeIPBlock'][] = $item;
            }
            #print_r($entry2);printf("<br><br>");
            $results = ldap_mod_add($ds, $auDN, $entry2);
            if ($results) {
                echo "FIPBs in AU erfolgreich aktualisiert!<br>";
                # IP Bloecke aufraeumen in Child-AU und AU (Merging)
                merge_ipranges($auDN);
                merge_ipranges($childauDN);
                return 1;
            } else {
                echo "Fehler beim aktualisieren der FIPBs in AU!<br>";
                return 0;
            }
        } else {
            echo "Fehler beim aktualisieren der FIPBs in Child-AU!<br>";
            return 0;
        }
    } else {
        echo "<br>Fehler beim aktualisieren der MIPBs in Child-AU!<br>";
        return 0;
    }
}
function check_subnet_mipb($subnet)
{
    global $ds, $suffix, $auDN, $ldapError;
    $subexp = explode('.', $subnet);
    $ret = 0;
    $mipb_array = get_maxipblocks_au($auDN);
    if ($mipb_array[0] != "") {
        foreach ($mipb_array as $mipb) {
            $exp = explode('_', $mipb);
            $ms = explode('.', $exp[0]);
            $me = explode('.', $exp[1]);
            if ($subexp[2] >= $ms[2] && $subexp[2] <= $me[2]) {
                $ret = 1;
                break;
            }
        }
    }
    if ($ret) {
        return 1;
    } else {
        return 0;
    }
}
 } elseif (!$auzone[$i]) {
     # Zone löschen
     #$entry['objectclass'] = "domainRelatedObject";
     #$entry['associateddomain'] = $oldauzone[$i];
     #$result = ldap_mod_del($ds,$audn[$i],$entry);
     #if ($result) {
     #	$mesg .= "<b>$oldauzone[$i]</b> erfolgreich in $audn[$i] gel&ouml;scht<br>";
     #}else {
     #	$mesg .= "Fehler beim l&ouml;schen von <b>$oldauzone[$i]</b> in $audn[$i]<br>";
     #}
     $mesg .= "<b>{$oldauzone[$i]}</b> kann nicht gel&ouml;scht werden<br>\n\t\t\t\t\tAdministrative Einheiten (AUs) m&uuml;ssen einer DNS Zone zugeordnet sein!<br>";
 } else {
     # Zone ändern
     if ($syntax->is_hostname($auzone[$i])) {
         # if AU IP Ranges ... DNS Lookup Test
         $mipbs = get_maxipblocks_au($audn[$i]);
         #echo "MIPBS: <br>";print_r($mipbs);
         if ($mipbs[0] != "") {
             foreach ($mipbs as $mipb) {
                 $exp = explode("_", $mipb);
                 if (!check_iprange_zone($exp[0], $exp[1], $auzone[$i], $expou[0])) {
                     $change_zone = 0;
                 }
             }
         }
         if (in_array($auzone[$i], $oldauzone)) {
             # Zone existiert bereits
             $mesg .= "<br>Zone {$auzone[$i]} existiert bereits.<br>";
             # eigene Host auf Eindeutigkeit testen in neuer Zone ...
             $hosts = get_hosts($audn[$i], array("dn", "hostname"), "");
             if ($matches = check_hostarray_fqdn2($hosts, $auzone[$i])) {
function createDhcpMenu($rollen, $mnr, $auDN, $sbmnr)
{
    global $template, $START_PATH, $rootAU;
    $i = 0;
    $mipbs = get_maxipblocks_au($auDN);
    #echo "MIPB: "; print_r ($mipbs); echo "<br>";
    if ($mipbs[0] != "") {
        $hauptmenu = array();
    } else {
        $hauptmenu = array(array("link" => "no_dhcp.php?mnr=" . $i, "text" => "&Uuml;bersicht", "zugriff" => "alle"));
        $i++;
    }
    $pools = get_dhcppools($auDN, array("dn"));
    if (count($pools) == 0) {
        $poollink = "dhcpnopool.php";
    } else {
        $poollink = "dhcppools.php";
    }
    if ($auDN == $rootAU) {
        $dhcpservice_array = get_dhcpservices($auDN, array("dn", "cn"));
        if (count($dhcpservice_array) == 0) {
            $dhcpsvlink = "new_dhcpservice.php?mnr=1";
        } else {
            $dhcpsvlink = "dhcpservice.php?mnr=1";
        }
        $hauptmenu[] = array("link" => $dhcpsvlink, "text" => "DHCP Service", "zugriff" => array("MainAdmin", "DhcpAdmin"));
        $i++;
    }
    #if ($mipbs[0] != ""){
    #if ( check_if_max_networks() ){
    $hauptmenu[] = array("link" => "dhcpsubnets.php?mnr=" . $i, "text" => "DHCP Subnets", "zugriff" => array("MainAdmin", "DhcpAdmin"));
    if ($mipbs[0] != "") {
        $subnets = array();
        # falls komplette Netze verfügbar, link zum Neuanlegen
        if (check_if_free_networks()) {
            #$dhcpsubnet_array = get_dhcpsubnets($auDN,array("dn","cn"));
            /*for ($j=0;$j<count($dhcpsubnet_array);$j++){
             		$subnets[] = array("link" => "dhcpsubnet.php?dn=".$dhcpsubnet_array[$j]['dn']."&mnr=".$i."&sbmnr=".$j,
             							"text" => $dhcpsubnet_array[$j]['cn'],
            						"zugriff" => array("MainAdmin","DhcpAdmin"));
             	}*/
            $subnets[] = array("link" => "new_dhcpsubnet.php?mnr=" . $i . "&sbmnr=0", "text" => "Neues DHCP Subnet", "zugriff" => array("MainAdmin", "DhcpAdmin"));
        }
        $i++;
        $hauptmenu[] = array("link" => $poollink . "?mnr=" . $i, "text" => "Dynamische DHCP Pools", "zugriff" => array("MainAdmin", "DhcpAdmin"));
        $submenu = array($subnets, array());
        #}else{
        #   $hauptmenu [] = array("link" => $poollink."?mnr=".$i,
        #                          "text" => "Dynamische DHCP Pools",
        #                          "zugriff" => array("MainAdmin","DhcpAdmin"));
        #}
    }
    # DHCP Classes
    if ($auDN == $rootAU) {
        $hauptmenu[] = array("link" => "dhcp_classes.php?mnr=" . ++$i, "text" => "DHCP Classes", "zugriff" => array("MainAdmin", "DhcpAdmin"));
        $hauptmenu[] = array("link" => "dhcp_condstmts.php?mnr=" . ++$i, "text" => "DHCP Conditional Statements", "zugriff" => array("MainAdmin", "DhcpAdmin"));
    }
    # Zusammenstellen der Menuleiste
    $template->define_dynamic("Hauptmenu", "Menu");
    $template->define_dynamic("Submenu", "Menu");
    $i = 0;
    $maxmenu = count($hauptmenu);
    foreach ($hauptmenu as $item) {
        $template->clear_parse("SUBMENU_LIST");
        if ($item['zugriff'] === "alle" || vergleicheArrays($rollen, $item['zugriff'])) {
            $subempty = 0;
            $j = 0;
            $maxsub = count($submenu[$mnr]);
            if ($maxsub > 0) {
                foreach ($submenu[$mnr] as $item2) {
                    if ($item2['zugriff'] === "alle" || vergleicheArrays($rollen, $item2['zugriff'])) {
                        if ($i != $mnr) {
                            $template->assign(array("SUB" => ""));
                            # 								"LINK_S" => "",
                            #                       "TEXT_S" => ""));
                            $template->parse("SUBMENU_LIST", ".Submenu");
                            $template->clear_dynamic("Submenu");
                        } else {
                            if ($j == 0) {
                                if ($sbmnr == 0) {
                                    if ($maxsub == 1) {
                                        $zwisch = "";
                                    } else {
                                        $zwisch = "";
                                    }
                                    $lastaktive = true;
                                    $farb = "#505050";
                                } else {
                                    if ($maxsub == 1) {
                                        $zwisch = "";
                                    } else {
                                        $zwisch = "";
                                    }
                                    $farb = "#A0A0A0";
                                    $lastaktive = false;
                                }
                            } else {
                                if ($sbmnr == $j) {
                                    if ($maxsub == $j + 1) {
                                        $zwisch = "";
                                    } else {
                                        $zwisch = "";
                                    }
                                    $lastaktive = true;
                                    $farb = "#505050";
                                } else {
                                    $farb = "#A0A0A0";
                                    if ($maxsub == $j + 1) {
                                        $zwisch = "";
                                    } else {
                                        $zwisch = "";
                                    }
                                    # if ($lastaktive) {$zwisch="branch";}
                                    # else {$zwisch="branch";}
                                    $lastaktive = false;
                                }
                            }
                            $htmlcode = "\n      \t\t   \t\t<tr height='2'>\n      \t\t\t\t\t\t<td></td><td></td><td></td><td></td>\n      \t\t   \t\t</tr>\n      \t\t   \t\t<tr>\n      \t\t\t\t\t\t<td width='8%'>&nbsp;</td>\n      \t\t\t\t\t\t<td width='8%' align='right'>" . $zwisch . "</td>\n      \t\t     \t\t\t<td width='74%' align='left' style='border-width:1 1 1 1;border-color:#000000;border-style:solid;padding:2;padding-left:15px;background-color:{FARBE_S}'> \n      \t\t     \t\t\t<a href='" . $item2['link'] . "' style='text-decoration:none'><code class='submenue_schrift'>" . $item2['text'] . "</code></a></td>\n      \t\t\t\t\t\t<td width='10%'>&nbsp;</td> \t\t\t\t\t\t\n      \t\t\t\t\t</tr>\n      \t\t\t\t\t";
                            $template->assign(array("SUB" => $htmlcode));
                            $template->assign(array("FARBE_S" => $farb));
                            $template->parse("SUBMENU_LIST", ".Submenu");
                            $template->clear_dynamic("Submenu");
                        }
                    } else {
                        $subempty++;
                    }
                    $j = $j + 1;
                }
            }
            if ($subempty == count($submenu[$mnr])) {
                $template->assign(array("SUB" => ""));
                #							  "LINK_S" => "",
                #                       "TEXT_S" => ""));
                $template->parse("SUBMENU_LIST", ".Submenu");
                $template->clear_dynamic("Submenu");
            }
            # weiter im Hauptmenü
            if ($i == 0) {
                if ($mnr == 0) {
                    if (count($submenu[$i][0]) != 0) {
                        if ($maxmenu == 1) {
                            $zwisch = "";
                        } else {
                            $zwisch = "";
                        }
                    } else {
                        $zwisch = "";
                    }
                    $lastaktive = true;
                    $farb = "#505050";
                } else {
                    if (count($submenu[$i][0]) != 0) {
                        if ($maxmenu == 1) {
                            $zwisch = "<a href='{LINK_M}' style='border-style=none;text-decoration:none'>\n               \t<img style='border-width:0;border-style=none;' src='../pics/plus3.gif'></a>";
                        } else {
                            $zwisch = "<a href='{LINK_M}' style='border-style=none;text-decoration:none'>\n               \t<img style='border-width:0;border-style=none;' src='../pics/plus3.gif'></a>";
                        }
                    } else {
                        $zwisch = "";
                    }
                    $farb = "#A0A0A0";
                    $lastaktive = false;
                }
            } else {
                if ($mnr == $i) {
                    if (count($submenu[$mnr][0]) != 0) {
                        if ($maxmenu == $i + 1) {
                            $zwisch = "";
                        } else {
                            $zwisch = "";
                        }
                    } else {
                        $zwisch = "";
                    }
                    $lastaktive = true;
                    $farb = "#505050";
                } else {
                    $farb = "#A0A0A0";
                    if (count($submenu[$i][0]) != 0) {
                        if ($maxmenu == $i + 1) {
                            $zwisch = "<a href='{LINK_M}' style='border-style=none;text-decoration:none'>\n               \t<img style='border-width:0;border-style=none;' src='../pics/plus3.gif'></a>";
                        } else {
                            $zwisch = "<a href='{LINK_M}' style='border-style=none;text-decoration:none'>\n               \t<img style='border-width:0;border-style=none;' src='../pics/plus3.gif'></a>";
                        }
                    } else {
                        $zwisch = "";
                    }
                    #if ($lastaktive) {$zwisch="";}
                    #else {$zwisch="";}
                    $lastaktive = false;
                }
            }
            $template->assign(array("ICON" => $zwisch, "FARBE" => $farb, "LINK_M" => $item["link"], "TEXT_M" => $item["text"]));
            $template->parse("HAUPTMENU_LIST", ".Hauptmenu");
            $template->clear_dynamic("Hauptmenu");
        }
        $i = $i + 1;
    }
    if ($lastaktive) {
        $template->assign(array("ENDE" => ""));
    } else {
        $template->assign(array("ENDE" => ""));
    }
}
/**
* createMenu($rechte) - erstellt die Menuleiste abh�ngig von der Rechten des Users.
*
* Die Navigationsleiste wird dynamisch erzeugt und von dieser Funktion direkt in das
* entsprechende Template geparst. Dabei werden nur die Schaltfl�chen zur Verf�gung
* gestellt, die der User mit seinen Rechten anzeigen darf.
*
* @param array rechte Eindimensionales Array mit den Rechten des Users
* @param int mainnr Nummer des aktiven Hauptmenus
*
* @author Timothy Burk
*/
function createMainMenu($rollen, $mainnr)
{
    global $template, $START_PATH, $auDN;
    # pre-checks
    $mipbs = get_maxipblocks_au($auDN);
    #echo "MIPB: "; print_r ($mipbs); echo "<br>";
    if ($mipbs[0] != "") {
        #	$subnet_array = get_dhcpsubnets($auDN,array("dn"));
        #	if ( $subnet_array ) {
        $dhcplink = "dhcp/dhcpsubnets.php?mnr=0";
        #   }else{
        #   	$dhcplink = "dhcp/dhcppool.php?mnr=0";
        #   }
    } else {
        $dhcplink = "dhcp/no_dhcp.php";
    }
    # Struktur der Registerkartenleiste
    $mainmenu = array(array("link" => "au/au.php", "text" => "AU Home", "zugriff" => "alle"), array("link" => $dhcplink, "text" => "DHCP / Netze", "zugriff" => array("MainAdmin", "DhcpAdmin")), array("link" => "computers/hostoverview.php?sort=hostname", "text" => "Clients / IP", "zugriff" => array("MainAdmin", "HostAdmin", "DhcpAdmin")), array("link" => "rbs/rbs.php", "text" => "RemoteBoot/PXE", "zugriff" => array("MainAdmin", "RbsAdmin")), array("link" => "dns/dns.php", "text" => "DNS", "zugriff" => array("MainAdmin", "ZoneAdmin")));
    # Zusammenstellen der Menuleiste
    $template->define_dynamic("Mainmenu", "Mmenu");
    $i = 0;
    foreach ($mainmenu as $item) {
        if ($item['zugriff'] === "alle" || vergleicheArrays($rollen, $item['zugriff'])) {
            if ($i == 0) {
                if ($mainnr == 0) {
                    $zwisch = "";
                    $lastaktive = true;
                    $farb = "#b8c3cb";
                } else {
                    $zwisch = "";
                    $farb = "#718797";
                    $lastaktive = false;
                }
            } else {
                if ($mainnr == $i) {
                    $zwisch = "";
                    $lastaktive = true;
                    $farb = "#b8c3cb";
                } else {
                    $farb = "#718797";
                    if ($lastaktive) {
                        $zwisch = "";
                    } else {
                        $zwisch = "";
                    }
                    $lastaktive = false;
                }
            }
            $template->assign(array("MZWISCHEN" => $zwisch, "MFARBE" => $farb, "MLINK_M" => $START_PATH . $item["link"], "MTEXT_M" => $item["text"]));
            $template->parse("MAINMENU_LIST", ".Mainmenu");
        }
        $i = $i + 1;
    }
    if ($lastaktive) {
        $template->assign(array("MENDE" => ""));
    } else {
        $template->assign(array("MENDE" => ""));
    }
}
<?php

# Max und Free IP Blocks
$mipb_array = get_maxipblocks_au($auDN);
$fipb_array = get_freeipblocks_au($auDN);
#print_r($mipb_array); echo "<br>";
natsort($mipb_array);
natsort($fipb_array);
#print_r($mipb_array); echo "<br>";
#print_r(count($mipb_array)); echo "<br>";
#print_r(count($fipb_array)); echo "<br>";
$ipblocks = "";
# print_r($mipb_array);
if ($mipb_array[0] != "") {
    if (count($mipb_array) > 1) {
        $ipblocks .= "<table border='1' cellpadding='2' cellspacing='0' width='100%' style='border-width: 0 0 0 0;'>\n\t\t\t\t\t\t\t<tr><td colspan='3' style='border-color: black; border-style: solid; border-width: 0 0 3 0;'>\n\t\t\t\t\t\t\t<b>Zugewiesene IP Bereiche:</b></td></tr>";
        foreach ($mipb_array as $mipb) {
            $exp = explode('_', $mipb);
            $ipblocks .= "<tr><td width='45%' class='tab_d'>{$exp['0']}&nbsp;</td>";
            if ($exp[0] != $exp[1]) {
                $ipblocks .= "<td class='tab_d'> - </td>\n\t\t\t\t\t\t\t<td width='45%' class='tab_d'>{$exp['1']}&nbsp;</td>";
            } else {
                $ipblocks .= "<td class='tab_d' colspan='2'>&nbsp;</td>";
            }
            $ipblocks .= "</tr>";
        }
    } elseif (count($mipb_array) == 1) {
        $ipblocks .= "<table border='1' cellpadding='2' cellspacing='0' width='100%' style='border-width: 0 0 0 0;'>\n\t\t\t\t\t\t\t<tr><td colspan='3' style='border-color: black; border-style: solid; border-width: 0 0 3 0;'>\n\t\t\t\t\t\t\t<b>Zugewiesener IP Bereich:</b></td></tr>";
        $exp = explode('_', $mipb_array[0]);
        $ipblocks .= "<tr><td width='45%' class='tab_d'>{$exp['0']}&nbsp;</td>";
        if ($exp[0] != $exp[1]) {