/** * Print subnets structure */ function printToolsSubnets($subnets, $custom) { $html = array(); $rootId = 0; # root is 0 # remove all not permitted! foreach ($subnets as $k => $s) { $permission = checkSubnetPermission($s['id']); if ($permission == "0") { unset($subnets[$k]); } } if (sizeof($subnets) > 0) { foreach ($subnets as $item) { $children[$item['masterSubnetId']][] = $item; } } # loop will be false if the root has no children (i.e., an empty menu!) $loop = !empty($children[$rootId]); # initializing $parent as the root $parent = $rootId; $parent_stack = array(); # display selected subnet as opened if (isset($_GET['subnetId'])) { $allParents = getAllParents($_GET['subnetId']); } # return table content (tr and td's) while ($loop && (($option = each($children[$parent])) || $parent > $rootId)) { # repeat $repeat = str_repeat(" - ", count($parent_stack)); # dashes if (count($parent_stack) == 0) { $dash = ""; } else { $dash = "-"; } if (count($parent_stack) == 0) { $margin = "0px"; $padding = "0px"; } else { # padding $padding = "10px"; # margin $margin = count($parent_stack) * 10 - 10; $margin = $margin * 2; $margin = $margin . "px"; } # count levels $count = count($parent_stack) + 1; # get subnet details # get VLAN $vlan = subnetGetVLANdetailsById($option['value']['vlanId']); $vlan = $vlan['number']; if (empty($vlan) || $vlan == "0") { $vlan = ""; } # no VLAN # description if (strlen($option['value']['description']) == 0) { $description = "/"; } else { $description = $option['value']['description']; } # description # requests if ($option['value']['allowRequests'] == 1) { $requests = "<i class='fa fa-gray fa-check'></i>"; } else { $requests = ""; } # request disabled # hosts check if ($option['value']['pingSubnet'] == 1) { $pCheck = "<i class='fa fa-gray fa-check'></i>"; } else { $pCheck = ""; } # ping check disabled # print table line if (strlen($option['value']['subnet']) > 0) { $html[] = "<tr>"; # folder if ($option['value']['isFolder'] == 1) { $html[] = "\t<td class='level{$count}'><span class='structure' style='padding-left:{$padding}; margin-left:{$margin};'></span><i class='fa fa-sfolder fa-folder-open'></i> <a href='" . create_link("folder", $option['value']['sectionId'], $option['value']['id']) . "'>{$description}</a></td>"; $html[] = "\t<td class='level{$count}'><span class='structure' style='padding-left:{$padding}; margin-left:{$margin};'></span><i class='fa fa-sfolder fa-folder-open'></i> {$description}</td>"; } else { if ($count == 1) { $html[] = "\t<td class='level{$count}'><span class='structure' style='padding-left:{$padding}; margin-left:{$margin};'></span><i class='fa fa-gray fa-folder-open-o'></i><a href='" . create_link("subnets", $option['value']['sectionId'], $option['value']['id']) . "'> " . transform2long($option['value']['subnet']) . "/" . $option['value']['mask'] . "</a></td>"; $html[] = "\t<td class='level{$count}'><span class='structure' style='padding-left:{$padding}; margin-left:{$margin};'></span><i class='fa fa-gray fa-folder-open-o'></i> {$description}</td>"; } else { # last? if (!empty($children[$option['value']['id']])) { $html[] = "\t<td class='level{$count}'><span class='structure' style='padding-left:{$padding}; margin-left:{$margin};'></span><i class='fa fa-folder-open-o'></i><a href='" . create_link("subnets", $option['value']['sectionId'], $option['value']['id']) . "'> " . transform2long($option['value']['subnet']) . "/" . $option['value']['mask'] . "</a></td>"; $html[] = "\t<td class='level{$count}'><span class='structure' style='padding-left:{$padding}; margin-left:{$margin};'></span><i class='fa fa-folder-open-o'></i> {$description}</td>"; } else { $html[] = "\t<td class='level{$count}'><span class='structure' style='padding-left:{$padding}; margin-left:{$margin};'></span><i class='fa fa-angle-right'></i><a href='" . create_link("subnets", $option['value']['sectionId'], $option['value']['id']) . "'> " . transform2long($option['value']['subnet']) . "/" . $option['value']['mask'] . "</a></td>"; $html[] = "\t<td class='level{$count}'><span class='structure' style='padding-left:{$padding}; margin-left:{$margin};'></span><i class='fa fa-angle-right'></i> {$description}</td>"; } } } //vlan $html[] = "\t<td>{$vlan}</td>"; //masterSubnet if ($option['value']['masterSubnetId'] == 0 || empty($option['value']['masterSubnetId'])) { $masterSubnet = true; } else { $masterSubnet = false; } if ($masterSubnet) { $html[] = ' <td>/</td>' . "\n"; } else { $master = getSubnetDetailsById($option['value']['masterSubnetId']); if ($master['isFolder']) { $html[] = "\t<td><i class='fa fa-gray fa-folder-open-o'></i> <a href='" . create_link("subnets", $option['value']['sectionId'], $master['id']) . "'>{$master['description']}</a></td>" . "\n"; } else { $html[] = "\t<td><a href='" . create_link("folder", $option['value']['sectionId'], $master['id']) . "'>" . transform2long($master['subnet']) . '/' . $master['mask'] . '</a></td>' . "\n"; } } //used , free if ($option['value']['isFolder'] == 1) { $html[] = '<td class="hidden-xs hidden-sm"></td>' . "\n"; } elseif (!$masterSubnet || !subnetContainsSlaves($option['value']['id'])) { $ipCount = countIpAddressesBySubnetId($option['value']['id']); $calculate = calculateSubnetDetails(gmp_strval($ipCount), $option['value']['mask'], $option['value']['subnet']); $html[] = ' <td class="used hidden-xs hidden-sm">' . reformatNumber($calculate['used']) . '/' . reformatNumber($calculate['maxhosts']) . ' (' . reformatNumber($calculate['freehosts_percent']) . ' %)</td>'; } else { $html[] = '<td class="hidden-xs hidden-sm"></td>' . "\n"; } //requests $html[] = "\t<td class='hidden-xs hidden-sm'>{$requests}</td>"; $html[] = "\t<td class='hidden-xs hidden-sm'>{$pCheck}</td>"; //custom if (sizeof($custom) > 0) { foreach ($custom as $field) { $html[] = "<td class='hidden-xs hidden-sm hidden-md'>"; //booleans if ($field['type'] == "tinyint(1)") { if ($option['value'][$field['name']] == "0") { $html[] = _("No"); } elseif ($option['value'][$field['name']] == "1") { $html[] = _("Yes"); } } elseif ($field['type'] == "text") { if (strlen($option['value'][$field['name']]) > 0) { $html[] = "<i class='fa fa-gray fa-comment' rel='tooltip' data-container='body' data-html='true' title='" . str_replace("\n", "<br>", $option['value'][$field['name']]) . "'>"; } else { $html[] = ""; } } else { $html[] = $option['value'][$field['name']]; } $html[] = "</td>"; } } $html[] = "</tr>"; } if ($option === false) { $parent = array_pop($parent_stack); } elseif (!empty($children[$option['value']['id']])) { array_push($parent_stack, $option['value']['masterSubnetId']); $parent = $option['value']['id']; } else { } } return implode("\n", $html); }
print ' <td>/</td>' . "\n"; } else { $master = getSubnetDetailsById($subnet['masterSubnetId']); # orphaned if (strlen($master['subnet']) == 0) { print "\t<td><div class='alert alert-warning'>" . _('Master subnet does not exist') . "!</div></td>"; } else { print "\t<td><a href='subnets/{$subnet['sectionId']}/{$subnet['masterSubnetId']}/'>" . transform2long($master['subnet']) . "/{$master['mask']} ({$master['description']})</a></td>"; } } # details if (!$masterSubnet || !subnetContainsSlaves($subnet['id'])) { $ipCount = countIpAddressesBySubnetId($subnet['id']); $calculate = calculateSubnetDetails(gmp_strval($ipCount), $subnet['mask'], $subnet['subnet']); print ' <td class="used hidden-xs hidden-sm">' . reformatNumber($calculate['used']) . '/' . reformatNumber($calculate['maxhosts']) . '</td>' . "\n"; print ' <td class="free hidden-xs hidden-sm">' . reformatNumber($calculate['freehosts_percent']) . ' %</td>'; } else { print '<td class="hidden-xs hidden-sm"></td>' . "\n"; print '<td class="hidden-xs hidden-sm"></td>' . "\n"; } # allow requests if ($subnet['allowRequests'] == 1) { print '<td class="allowRequests requests hidden-xs hidden-sm">' . _('enabled') . '</td>'; } else { print '<td class="allowRequests hidden-xs hidden-sm"></td>'; } print '</tr>' . "\n"; } } } else { print '<tr>' . "\n";
<th class="actions"></th> </tr> </tbody> <?php /* content */ $n = 0; $m = $CalculateSubnetDetails['used'] - 1; # set ping statuses $statuses = explode(";", $settings['pingStatus']); # if no IP is configured only display free subnet! if (sizeof($ipaddresses) == 0) { $unused = FindUnusedIpAddresses(Transform2decimal($SubnetParsed['network']), Transform2decimal($SubnetParsed['broadcast']), $type, 1, "networkempty", $SubnetDetails['mask']); print '<tr class="th"><td colspan="' . $colspan['empty'] . '" class="unused">' . $unused['ip'] . ' (' . reformatNumber($unused['hosts']) . ')</td></tr>' . "\n"; } else { $ipaddress = $ipaddresses; # break into arrays $ipaddressesChunk = array_chunk($ipaddresses, $pageLimit, true); $c = 1; # count for print for pages - $c++ per page $n = 0; # count for IP addresses - $n++ per IP address $g = 0; # count for compress consecutive class foreach ($ipaddressesChunk as $ipaddresses2) { if ($c == $_REQUEST['sPage']) { $show = true; $display = "display:block;"; } else {
print "\t<td><a href='" . create_link("folder", $f['sectionId']) . "'>{$f['section']}</a></td>"; if (strlen($f['vlanId']) > 0) { # get vlan info $vlan = getVlanById($f['vlanId']); print "\t<td class='hidden-xs hidden-sm'>{$vlan['number']}</td>"; } else { print "\t<td class='hidden-xs hidden-sm'>/</td>"; } # used # masterSubnet if ($f['masterSubnetId'] == 0 || empty($f['masterSubnetId'])) { $masterSubnet = true; } else { $masterSubnet = false; } if ($f['isFolder'] == 1) { print '<td class="hidden-xs hidden-sm"></td>'; } elseif (!$masterSubnet || !subnetContainsSlaves($f['subnetId'])) { $ipCount = countIpAddressesBySubnetId($f['subnetId']); $calculate = calculateSubnetDetails(gmp_strval($ipCount), $f['mask'], $f['subnet']); print ' <td class="used hidden-xs hidden-sm">' . reformatNumber($calculate['used']) . '/' . reformatNumber($calculate['maxhosts']) . ' (' . reformatNumber($calculate['freehosts_percent']) . ' %)</td>'; } else { print '<td class="hidden-xs hidden-sm"></td>' . "\n"; } # remove print "\t<td><a class='btn btn-xs btn-default editFavourite' data-subnetId='{$f['subnetId']}' data-action='remove' data-from='widget'><i class='fa fa-star favourite-{$f['subnetId']}' rel='tooltip' title='" . _('Click to remove from favourites') . "'></i></a></td>"; print "</tr>"; } } print "</table>"; }
} else { print "<a class='btn btn-xs btn-default editFavourite favourite-{$SubnetDetails['id']}' \t\t href='' data-container='body' rel='tooltip' title='" . _('Click to add to favourites') . "' data-subnetId='{$SubnetDetails['id']}' data-action='add'>\t\t\t\t\t\t<i class='fa fa-star fa-star-o' ></i></a> "; } // changelog if ($settings['enableChangelog'] == 1) { if ($sp['changelog']) { print "<a class='sChangelog btn btn-xs btn-default' \t\t\t\t\t\t\t\t\t href='subnets/{$SubnetDetails['sectionId']}/{$SubnetDetails['id']}/changelog/' data-container='body' rel='tooltip' title='" . _('Changelog') . "'>\t\t\t\t\t\t\t\t<i class='fa fa-clock-o'></i></a>"; } else { print "<a class='btn btn-xs btn-default disabled' \t\t\t\t\t\t\t\t\t \t href='' \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata-container='body' rel='tooltip' title='" . _('Changelog') . "'>\t\t\t\t\t\t\t\t<i class='fa fa-clock-o'></i></a>"; } } print "</div>"; # add / requests / scan print "<div class='btn-group'>"; // if full prevent new if (reformatNumber($CalculateSubnetDetails['freehosts']) == "0" || !$sp['addip']) { print "<a class='btn btn-xs btn-default btn-success disabled' \thref='' data-container='body' rel='tooltip' title='" . _('Add new IP address') . "'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-plus'></i></a> "; } else { print "<a class='modIPaddr btn btn-xs btn-default btn-success' \thref='' data-container='body' rel='tooltip' title='" . _('Add new IP address') . "' data-subnetId='{$SubnetDetails['id']}' data-action='add' data-id=''>\t\t\t\t\t<i class='fa fa-plus'></i></a> "; } //requests if ($SubnetDetails['allowRequests'] == 1 && $permission == 1) { print "<a class='request_ipaddress btn btn-xs btn-default btn-success' \thref='' data-container='body' rel='tooltip' title='" . _('Request new IP address') . "' data-subnetId='{$SubnetDetails['id']}'>\t\t\t\t\t\t\t\t\t\t<i class='fa fa-plus-circle'> </i></a>"; } // subnet scan if ($sp['scan']) { print "<a class='scan_subnet btn btn-xs btn-default'\t\t\thref='' data-container='body' rel='tooltip' title='" . _('Scan subnet for new hosts') . "' \tdata-subnetId='{$SubnetDetails['id']}'> \t\t\t\t\t\t\t\t\t\t<i class='fa fa-cogs'></i></a> "; } else { print "<a class='btn btn-xs btn-default disabled'\t\t\t\thref='' data-container='body' rel='tooltip' title='" . _('Scan subnet for new hosts') . "'> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-cogs'></i></a> "; } print "</div>";
print "<a class='btn btn-small disabled' \t\t\t\thref='' rel='tooltip' title='" . _('Edit subnet properties') . "'\t\t>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='icon-pencil'></i></a>"; # edit subnet print "<a class=' btn btn-small disabled' \t\t\t\thref='' rel='tooltip' title='" . _('Manage subnet permissions') . "'\tdata-subnetId='{$SubnetDetails['id']}' data-sectionId='{$SubnetDetails['sectionId']}' data-action='show'>\t\t\t<i class='icon-tasks'></i></a>"; # edit subnet print "<a class='btn btn-small disabled' \t\t\t\thref='' rel='tooltip' title='" . _('Add new nested subnet') . "'> \t\t<i class='icon-plus-sign'></i></a> "; # add new child subnet print "<a class='scan_subnet btn btn-small '\t\t\thref='' rel='tooltip' title='" . _('Scan subnet for new hosts') . "' \tdata-subnetId='{$SubnetDetails['id']}'> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='icon-star'></i></a> "; # add new child subnet print "<a class='csvImport btn btn-small' \t\t\thref='' rel='tooltip' title='" . _('Import IP addresses') . "'\t\t\tdata-subnetId='{$SubnetDetails['id']}'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='icon-upload'></i></a>"; # import print "<a class='csvExport btn btn-small' \t\t\t\thref='' rel='tooltip' title='" . _('Export IP addresses') . "'\t\t\tdata-subnetId='{$SubnetDetails['id']}'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='icon-download'></i></a>"; # export } else { if ($permission == 3) { # if full prevent new if (reformatNumber($CalculateSubnetDetails['freehosts']) == "0") { print "<a class='btn btn-small btn-success disabled' \thref='' rel='tooltip' title='" . _('Add new IP address') . "' \t\t\tdata-subnetId='{$SubnetDetails['id']}' data-action='add' data-id=''>\t\t\t\t\t\t\t\t\t\t\t<i class='icon-plus icon-white'></i></a> "; # add IP } else { print "<a class='modIPaddr btn btn-small btn-success' \thref='' rel='tooltip' title='" . _('Add new IP address') . "' \t\t\tdata-subnetId='{$SubnetDetails['id']}' data-action='add' data-id=''>\t\t\t\t\t\t\t\t\t\t\t<i class='icon-plus icon-white'></i></a> "; # add IP } print "<a class='edit_subnet btn btn-small' \t\t\thref='' rel='tooltip' title='" . _('Edit subnet properties') . "'\t\tdata-subnetId='{$SubnetDetails['id']}' data-sectionId='{$SubnetDetails['sectionId']}' data-action='edit'>\t\t\t<i class='icon-pencil'></i></a>"; # edit subnet if (checkAdmin(false, false)) { print "<a class='showSubnetPerm btn btn-small' \t\t\thref='' rel='tooltip' title='" . _('Manage subnet permissions') . "'\tdata-subnetId='{$SubnetDetails['id']}' data-sectionId='{$SubnetDetails['sectionId']}' data-action='show'>\t\t\t<i class='icon-tasks'></i></a>"; # edit subnet } if ($permissionsSection == 3) { print "<a class='edit_subnet btn btn-small '\t\t\thref='' rel='tooltip' title='" . _('Add new nested subnet') . "' \t\tdata-subnetId='{$SubnetDetails['id']}' data-action='add' data-id='' data-sectionId='{$SubnetDetails['sectionId']}'> <i class='icon-plus-sign'></i></a> "; # add new child subnet