From b208841a45ee82b6c0f1b17e7fc78f9f4af0e706 Mon Sep 17 00:00:00 2001
From: adrien <adrien@malingrey.fr>
Date: Mon, 31 Mar 2025 19:23:36 +0200
Subject: [PATCH] O/2

---
 show.php | 25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)

diff --git a/show.php b/show.php
index 502bc59..f4f4869 100644
--- a/show.php
+++ b/show.php
@@ -14,16 +14,16 @@ preg_match_all("/(?<=\n)vlan (?P<pvid>\d+)[\r\n]+(?: name (?P<name>.+)[\r\n]+| d
 preg_match_all("/(?<=\n)interface [\w-]+(?P<member>\d+)\/0\/(?P<port>\d+)[\r\n]+(?: port hybrid (?:pvid )?vlan (?:(?P<tagged>\d+) tagged|(?P<untagged>\d+)(?: \d+)* untagged)[\r\n]+| port (?:access |trunk |hybrid |pvid |vlan )*(?P<pvid>\d+)[\r\n]+| voice-vlan (?P<voice_vlan>\d+) enable[\r\n]+| .*[\r\n]+)*(?<!#)/", $conf, $interfaces, PREG_SET_ORDER);
 $stack = array();
 foreach ($interfaces as $interface) {
-    if (!isset($stack[$interface["member"]])) $stack[$interface["member"]] = array();
+    if (!isset($stack[$interface["member"]])) $stack[$interface["member"]] = [[], []];
     $interface["style"] = "";
     if (!empty($interface["pvid"])) $interface["style"] .= "--pvid: {$interface["pvid"]}; ";
     if (!empty($interface["tagged"])) $interface["style"] .= "--tagged: {$interface["tagged"]}; ";
     if (!empty($interface["untagged"])) $interface["style"] .= "--untagged: {$interface["untagged"]}; ";
-    $stack[$interface["member"]][$interface["port"]] = $interface;
+    $stack[$interface["member"]][1 - $interface["port"] % 2][$interface["port"]] = $interface;
 }
 
 /*echo ("<!--");
-var_dump($interfaces);
+var_dump($stack);
 echo ("-->");*/
 
 ?>
@@ -51,18 +51,15 @@ echo ("-->");*/
                 </caption>
                 <tbody>
                     <?php
-                    function display_interface($interface, $odd)
-                    {
-                        if ($interface["port"] % 2 == $odd) {
-                            echo "<td class='{$interface[0]}" . (isset($interface["voice_vlan"]) ? " voice_vlan" : "") . "' title='{$interface[0]}' style='{$interface["style"]}'>{$interface["port"]}</td>\n";
+                    foreach ($stack as $member => $lines) {
+                        echo "<tr>\n<th>$member</th>\n<td>\n<table class='member'>\n<tbody>\n";
+                        foreach ($lines as $interfaces) {
+                            echo "<tr>\n";
+                            foreach ($interfaces as $interface) {
+                                echo "<td class='{$interface[0]}" . (isset($interface["voice_vlan"]) ? " voice_vlan" : "") . "' title='{$interface[0]}' style='{$interface["style"]}'>{$interface["port"]}</td>\n";
+                            };
+                            echo "</tr>\n";
                         }
-                    }
-
-                    foreach ($stack as $member => $interfaces) {
-                        echo "<tr>\n<th>$member</th>\n<td>\n<table class='member'>\n<tbody>\n<tr>\n";
-                        foreach ($interfaces as $interface) display_interface($interface, 1);
-                        echo "</tr>\n<tr>\n";
-                        foreach ($interfaces as $interface) display_interface($interface, 0);
                         echo "</tr>\n</tbody>\n</table>\n</td>\n</tr>\n";
                     }
                     ?>