r4068 mkA(): new helper function
authorDenis Ovsienko <infrastation@yandex.ru>
Sat, 25 Dec 2010 12:53:04 +0000 (12:53 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Sat, 25 Dec 2010 12:53:04 +0000 (12:53 +0000)
render8021QReport(): initial implementation

inc/functions.php
inc/interface.php
inc/navigation.php

index 6fa9fb4..7d20d32 100644 (file)
@@ -2126,6 +2126,29 @@ function ip_long2quad ($quad)
       return long2ip($quad);
 }
 
+function mkA ($text, $nextpage, $bypass = NULL, $nexttab = NULL)
+{
+       global $page, $tab;
+       if (!mb_strlen ($text))
+               throw new InvalidArgException ('text', $text);
+       if (!array_key_exists ($nextpage, $page))
+               throw new InvalidArgException ('nextpage', $nextpage);
+       $args = array ('page' => $nextpage);
+       if ($nexttab !== NULL)
+       {
+               if (!array_key_exists ($nexttab, $tab[$nextpage]))
+                       throw new InvalidArgException ('nexttab', $nexttab);
+               $args['tab'] = $nexttab;
+       }
+       if (array_key_exists ('bypass', $page[$nextpage]))
+       {
+               if ($bypass === NULL)
+                       throw new InvalidArgException ('bypass', $bypass);
+               $args[$page[$nextpage]['bypass']] = $bypass;
+       }
+       return '<a href="' . makeHref ($args) . '">' . $text . '</a>';
+}
+
 function makeHref($params = array())
 {
        $ret = 'index.php?';
index b5e360d..1fda794 100644 (file)
@@ -4602,6 +4602,70 @@ function renderPortsReport ()
        renderReports ($tmp);
 }
 
+function render8021QReport ()
+{
+       if (!count ($domains = getVLANDomainOptions()))
+       {
+               echo '<center><h3>(no VLAN configuration exists)</h3></center>';
+               return;
+       }
+       $vlanstats = array();
+       for ($i = VLAN_MIN_ID; $i <= VLAN_MAX_ID; $i++)
+               $vlanstats[$i] = array();
+       $header = '<tr><th>&nbsp;</th>';
+       foreach ($domains as $domain_id => $domain_name)
+       {
+               foreach (getDomainVLANs ($domain_id) as $vlan_id => $vlan_info)
+                       $vlanstats[$vlan_id][$domain_id] = $vlan_info;
+               $header .= '<th>' . mkA ($domain_name, 'vlandomain', $domain_id) . '</th>';
+       }
+       $header .= '</tr>';
+       $output = $available = array();
+       for ($i = VLAN_MIN_ID; $i <= VLAN_MAX_ID; $i++)
+               if (!count ($vlanstats[$i]))
+                       $available[] = $i;
+               else
+                       $output[$i] = FALSE;
+       foreach (listToRanges ($available) as $span)
+       {
+               if ($span['to'] - $span['from'] < 4)
+                       for ($i = $span['from']; $i <= $span['to']; $i++)
+                               $output[$i] = FALSE;
+               else
+               {
+                       $output[$span['from']] = TRUE;
+                       $output[$span['to']] = FALSE;
+               }
+       }
+       ksort ($output, SORT_NUMERIC);
+       $header_delay = 0;
+       startPortlet ('VLAN existence per domain');
+       echo '<table border=1 cellspacing=0 cellpadding=5 align=center>';
+       foreach ($output as $vlan_id => $tbc)
+       {
+               if (--$header_delay <= 0)
+               {
+                       echo $header;
+                       $header_delay = 50;
+               }
+               echo '<tr><th class=tdright>' . $vlan_id . '</th>';
+               foreach (array_keys ($domains) as $domain_id)
+               {
+                       echo '<td class=tdcenter>';
+                       if (array_key_exists ($domain_id, $vlanstats[$vlan_id]))
+                               echo mkA ('&exist;', 'vlan', "${domain_id}-${vlan_id}");
+                       else
+                               echo '&nbsp;';
+                       echo '</td>';
+               }
+               echo '</tr>';
+               if ($tbc)
+                       echo '<tr><th>...</th><td colspan=' . count ($domains) . '>&nbsp;</td></tr>';
+       }
+       echo '</table>';
+       finishPortlet();
+}
+
 function renderReports ($what)
 {
        if (!count ($what))
index e4a2154..7afd9a8 100644 (file)
@@ -507,6 +507,7 @@ $tab['reports']['rackcode'] = 'RackCode';
 $tab['reports']['ipv4'] = 'IPv4';
 $tab['reports']['ipv6'] = 'IPv6';
 $tab['reports']['ports'] = 'Ports';
+$tab['reports']['8021q'] = '802.1Q';
 $tab['reports']['local'] = getConfigVar ('enterprise');
 $trigger['reports']['local'] = 'trigger_localreports';
 $tabhandler['reports']['default'] = 'renderSystemReports';
@@ -514,6 +515,7 @@ $tabhandler['reports']['rackcode'] = 'renderRackCodeReports';
 $tabhandler['reports']['ipv4'] = 'renderIPv4Reports';
 $tabhandler['reports']['ipv6'] = 'renderIPv6Reports';
 $tabhandler['reports']['ports'] = 'renderPortsReport';
+$tabhandler['reports']['8021q'] = 'render8021QReport';
 $tabhandler['reports']['local'] = 'renderLocalReports';
 
 $page['files']['title'] = 'Files';