Changeset 731
- Timestamp:
- 09/10/05 13:28:30 (8 years ago)
- Location:
- trunk/wifidog-auth
- Files:
-
- 6 modified
-
ChangeLog (modified) (1 diff)
-
wifidog/admin/graph_common.inc.php (modified) (1 diff)
-
wifidog/admin/index.php (modified) (1 diff)
-
wifidog/admin/stats.php (modified) (2 diffs)
-
wifidog/admin/stats_user_id.inc.php (modified) (7 diffs)
-
wifidog/admin/stats_user_mac.inc.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wifidog-auth/ChangeLog
r726 r731 1 2005-09-10 Francois Proulx <francois.proulx@gmail.com> 2 * Automatically redirect user to login form when trying to access admin 3 * Added various isset, empty tests, vars init in stats (to avoid php warning) 4 1 5 2005-09-08 Philippe April <philippe@ilesansfil.org> 2 6 * New stats system with graphs -
trunk/wifidog-auth/wifidog/admin/graph_common.inc.php
r726 r731 35 35 $date_constraint = "AND timestamp_in >= '{$_REQUEST['date_from']}' AND timestamp_in <= '{$_REQUEST['date_to']}'"; 36 36 37 $node_id = $db->EscapeString($_REQUEST["node_id"]); 38 $user_id = $db->EscapeString($_REQUEST["user_id"]); 39 $network_id = $db->EscapeString($_REQUEST["network_id"]); 37 $node_id = isset($_REQUEST["node_id"]) ? $db->EscapeString($_REQUEST["node_id"]) : null; 38 $user_id = isset($_REQUEST["user_id"]) ? $db->EscapeString($_REQUEST["user_id"]) : null; 39 $network_id = isset($_REQUEST["network_id"]) ? $db->EscapeString($_REQUEST["network_id"]) : null; 40 40 41 ?> -
trunk/wifidog-auth/wifidog/admin/index.php
r566 r731 34 34 if(!$current_user) 35 35 { 36 $html = '<p class="errormsg">'._('You must be logged in to access the administration panel.')."</p>\n"; 36 // Redirect to login form automatically 37 header("Location: ../login/"); 38 exit; 37 39 } 38 40 else -
trunk/wifidog-auth/wifidog/admin/stats.php
r726 r731 93 93 } 94 94 95 if (! $_REQUEST["date_from"])95 if (!isset($_REQUEST["date_from"])) 96 96 $_REQUEST["date_from"] = strftime("%Y-%m-%d 00:00"); 97 if (! $_REQUEST["date_to"])97 if (!isset($_REQUEST["date_to"])) 98 98 $_REQUEST["date_to"] = strftime("%Y-%m-%d 11:59"); 99 99 … … 208 208 209 209 $html .= "<input type=\"radio\" name=\"group_connections\" value=\"\""; 210 $html .= $_REQUEST['group_connections'] == ""? 'CHECKED' : '';210 $html .= empty($_REQUEST['group_connections']) ? 'CHECKED' : ''; 211 211 $html .= ">No<br>"; 212 212 213 213 $html .= "<input type=\"radio\" name=\"group_connections\" value=\"group_connections_by_mac\""; 214 $html .= $_REQUEST['group_connections'] == "group_connections_by_mac" ? 'CHECKED' : '';214 $html .= isset($_REQUEST['group_connections']) && $_REQUEST['group_connections'] == "group_connections_by_mac" ? 'CHECKED' : ''; 215 215 $html .= ">By unique MACs<br>"; 216 216 217 217 $html .= "<input type=\"radio\" name=\"group_connections\" value=\"group_connections_by_user\""; 218 $html .= $_REQUEST['group_connections'] == "group_connections_by_user" ? 'CHECKED' : '';218 $html .= isset($_REQUEST['group_connections']) && $_REQUEST['group_connections'] == "group_connections_by_user" ? 'CHECKED' : ''; 219 219 $html .= ">By unique usernames<br>"; 220 220 } -
trunk/wifidog-auth/wifidog/admin/stats_user_id.inc.php
r726 r731 1 1 <?php 2 /********************************************************************\ 3 * This program is free software; you can redistribute it and/or * 4 * modify it under the terms of the GNU General Public License as * 5 * published by the Free Software Foundation; either version 2 of * 6 * the License, or (at your option) any later version. * 7 * * 8 * This program is distributed in the hope that it will be useful, * 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 11 * GNU General Public License for more details. * 12 * * 13 * You should have received a copy of the GNU General Public License* 14 * along with this program; if not, contact: * 15 * * 16 * Free Software Foundation Voice: +1-617-542-5942 * 17 * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * 18 * Boston, MA 02111-1307, USA gnu@gnu.org * 19 * * 20 \********************************************************************/ 21 /**@file stats_user_id.inc.php 22 * @author Copyright (C) 2005 Philippe April 23 */ 2 3 /********************************************************************\ 4 * This program is free software; you can redistribute it and/or * 5 * modify it under the terms of the GNU General Public License as * 6 * published by the Free Software Foundation; either version 2 of * 7 * the License, or (at your option) any later version. * 8 * * 9 * This program is distributed in the hope that it will be useful, * 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 12 * GNU General Public License for more details. * 13 * * 14 * You should have received a copy of the GNU General Public License* 15 * along with this program; if not, contact: * 16 * * 17 * Free Software Foundation Voice: +1-617-542-5942 * 18 * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * 19 * Boston, MA 02111-1307, USA gnu@gnu.org * 20 * * 21 \********************************************************************/ 22 /**@file stats_user_id.inc.php 23 * @author Copyright (C) 2005 Philippe April 24 */ 24 25 25 26 $userinfo = $userObject->getInfoArray(); … … 27 28 28 29 $html .= "<fieldset class='pretty_fieldset'>\n"; 29 $html .= "<legend>" . _("Profile") ."</legend>\n";30 $html .= "<legend>"._("Profile")."</legend>\n"; 30 31 31 32 $html .= "<table>\n"; 32 33 33 34 $html .= "<tr class='odd'>\n"; 34 $html .= " <th>" . _("Username") .":</th>\n";35 $html .= " <td>" . $userinfo['username'] ."</td>\n";35 $html .= " <th>"._("Username").":</th>\n"; 36 $html .= " <td>".$userinfo['username']."</td>\n"; 36 37 $html .= "</tr>\n"; 37 38 38 39 $html .= "<tr>\n"; 39 $html .= " <th>" . _("Real Name") .":</th>\n";40 $html .= " <td>" . $userinfo['real_name'] ."</td>\n";40 $html .= " <th>"._("Real Name").":</th>\n"; 41 $html .= " <td>".$userinfo['real_name']."</td>\n"; 41 42 $html .= "</tr>\n"; 42 43 43 44 $html .= "<tr class='odd'>\n"; 44 $html .= " <th>" . _("Email") .":</th>\n";45 $html .= " <td>" . $userinfo['email'] ."</td>\n";45 $html .= " <th>"._("Email").":</th>\n"; 46 $html .= " <td>".$userinfo['email']."</td>\n"; 46 47 $html .= "</tr>\n"; 47 48 48 49 $html .= "<tr>\n"; 49 $html .= " <th>" . _("Network") .":</th>\n";50 $html .= " <th>"._("Network").":</th>\n"; 50 51 $html .= " <td><a href='?date_from={$_REQUEST['date_from']}&date_to={$_REQUEST['date_to']}&network_id={$userinfo['account_origin']}'>{$userinfo['account_origin']}</a></td>\n"; 51 52 $html .= "</tr>\n"; 52 53 53 54 $html .= "<tr class='odd'>\n"; 54 $html .= " <th>" . _("Unique ID") .":</th>\n";55 $html .= " <td>" . $userinfo['user_id'] ."</td>\n";55 $html .= " <th>"._("Unique ID").":</th>\n"; 56 $html .= " <td>".$userinfo['user_id']."</td>\n"; 56 57 $html .= "</tr>\n"; 57 58 58 59 $html .= "<tr>\n"; 59 $html .= " <th>" . _("Member since") .":</th>\n";60 $html .= " <td>" . utf8_encode(strftime("%c", strtotime($userinfo['reg_date']))) ."</td>\n";60 $html .= " <th>"._("Member since").":</th>\n"; 61 $html .= " <td>".utf8_encode(strftime("%c", strtotime($userinfo['reg_date'])))."</td>\n"; 61 62 $html .= "</tr>\n"; 62 63 63 64 $html .= "<tr class='odd'>\n"; 64 $html .= " <th>" . _("Account Status") .":</th>\n";65 $html .= " <td>" . $userinfo['account_status_description'] ."</td>\n";65 $html .= " <th>"._("Account Status").":</th>\n"; 66 $html .= " <td>".$userinfo['account_status_description']."</td>\n"; 66 67 $html .= "</tr>\n"; 67 68 68 69 $html .= "<tr>\n"; 69 $html .= " <th>" . _("Website") .":</th>\n";70 $html .= " <td>" . $userinfo['website'] ."</td>\n";70 $html .= " <th>"._("Website").":</th>\n"; 71 $html .= " <td>".$userinfo['website']."</td>\n"; 71 72 $html .= "</tr>\n"; 72 73 73 74 $html .= "<tr class='odd'>\n"; 74 $html .= " <th>" . _("Prefered Locale") .":</th>\n";75 $html .= " <td>" . $userinfo['prefered_locale'] ."</td>\n";75 $html .= " <th>"._("Prefered Locale").":</th>\n"; 76 $html .= " <td>".$userinfo['prefered_locale']."</td>\n"; 76 77 $html .= "</tr>\n"; 77 78 … … 81 82 82 83 $html .= "<tr>\n"; 83 $html .= " <th>" . _("MAC addresses") .":</th>\n";84 $html .= " <td>" . $amount_of_mac_addresses ."</td>\n";84 $html .= " <th>"._("MAC addresses").":</th>\n"; 85 $html .= " <td>".$amount_of_mac_addresses."</td>\n"; 85 86 $html .= "</tr>\n"; 86 87 … … 89 90 90 91 $html .= "<fieldset class='pretty_fieldset'>\n"; 91 $html .= "<legend>" . _("Connections") ."</legend>\n";92 $html .= "<legend>"._("Connections")."</legend>\n"; 92 93 $html .= "<table class='smaller'>\n"; 93 94 $html .= "<thead>\n"; 94 95 $html .= "<tr>\n"; 95 $html .= " <th>" . _("Logged in") ."</th>\n";96 $html .= " <th>" . _("Time spent") ."</th>\n";97 $html .= " <th>" . _("Token status") ."</th>\n";98 $html .= " <th>" . _("Node") ."</th>\n";99 $html .= " <th>" . _("IP") ."</th>\n";100 $html .= " <th>" . _("D") ."</th>\n";101 $html .= " <th>" . _("U") ."</th>\n";96 $html .= " <th>"._("Logged in")."</th>\n"; 97 $html .= " <th>"._("Time spent")."</th>\n"; 98 $html .= " <th>"._("Token status")."</th>\n"; 99 $html .= " <th>"._("Node")."</th>\n"; 100 $html .= " <th>"._("IP")."</th>\n"; 101 $html .= " <th>"._("D")."</th>\n"; 102 $html .= " <th>"._("U")."</th>\n"; 102 103 $html .= "</tr>\n"; 103 104 $html .= "</thead>\n"; … … 109 110 if ($connections) 110 111 { 111 $even = 0; 112 foreach ($connections as $connection) 113 { 114 $timestamp_in = strtotime($connection['timestamp_in']); 115 $timestamp_out = strtotime($connection['timestamp_out']); 112 // Variables init 113 $even = 0; 114 $total = array (); 115 $total['incoming'] = 0; 116 $total['outgoing'] = 0; 117 foreach ($connections as $connection) 118 { 119 $timestamp_in = strtotime($connection['timestamp_in']); 120 $timestamp_out = strtotime($connection['timestamp_out']); 116 121 117 $nodeObject = Node::getObject($connection['node_id']); 118 $total['incoming'] += $connection['incoming']; 119 $total['outgoing'] += $connection['outgoing']; 120 $connection['token_status_description'] = $token_to_text[$connection['token_status']]; 121 $html .= $even ? "<tr>\n" : "<tr class='odd'>\n"; 122 if ($even == 0) 123 $even = 1; 124 else 125 $even = 0; 126 $html .= " <td>" . utf8_encode(strftime("%c", $timestamp_in)) . "</td>\n"; 127 if ($timestamp_in != -1 && $timestamp_out != -1) { 128 $html .= "<td>" . seconds_in_words($timestamp_out - $timestamp_in) . "</td>\n"; 129 } else { 130 $html .= "<td></td>\n"; 131 } 132 $html .= " <td>" . $connection['token_status'] . "</td>\n"; 133 $html .= " <td><a href='?date_from={$_REQUEST['date_from']}&date_to={$_REQUEST['date_to']}&node_id={$nodeObject->getId()}'>{$nodeObject->getName()}</a></td>\n"; 134 $html .= " <td>" . $connection['user_ip'] . "</td>\n"; 135 $html .= " <td>" . bytes_in_words($connection['incoming']) . "</td>\n"; 136 $html .= " <td>" . bytes_in_words($connection['outgoing']) . "</td>\n"; 137 $html .= "</tr>\n"; 138 } 122 $nodeObject = Node :: getObject($connection['node_id']); 123 $total['incoming'] += $connection['incoming']; 124 $total['outgoing'] += $connection['outgoing']; 125 126 $connection['token_status_description'] = $token_to_text[$connection['token_status']]; 127 $html .= $even ? "<tr>\n" : "<tr class='odd'>\n"; 128 if ($even == 0) 129 $even = 1; 130 else 131 $even = 0; 132 $html .= " <td>".utf8_encode(strftime("%c", $timestamp_in))."</td>\n"; 133 if ($timestamp_in != -1 && $timestamp_out != -1) 134 { 135 $html .= "<td>".seconds_in_words($timestamp_out - $timestamp_in)."</td>\n"; 136 } 137 else 138 { 139 $html .= "<td></td>\n"; 140 } 141 $html .= " <td>".$connection['token_status']."</td>\n"; 142 $html .= " <td><a href='?date_from={$_REQUEST['date_from']}&date_to={$_REQUEST['date_to']}&node_id={$nodeObject->getId()}'>{$nodeObject->getName()}</a></td>\n"; 143 $html .= " <td>".$connection['user_ip']."</td>\n"; 144 $html .= " <td>".bytes_in_words($connection['incoming'])."</td>\n"; 145 $html .= " <td>".bytes_in_words($connection['outgoing'])."</td>\n"; 146 $html .= "</tr>\n"; 147 } 139 148 } 140 149 … … 144 153 $html .= " <td></td>\n"; 145 154 $html .= " <td></td>\n"; 146 $html .= " <th>" . _("Total") .":</th>\n";147 $html .= " <th>" . bytes_in_words($total['incoming']) ."</th>\n";148 $html .= " <th>" . bytes_in_words($total['outgoing']) ."</th>\n";155 $html .= " <th>"._("Total").":</th>\n"; 156 $html .= " <th>".bytes_in_words($total['incoming'])."</th>\n"; 157 $html .= " <th>".bytes_in_words($total['outgoing'])."</th>\n"; 149 158 $html .= "</tr>\n"; 150 159 $html .= "</table>\n"; … … 155 164 156 165 $html .= "<fieldset class='pretty_fieldset'>\n"; 157 $html .= "<legend>" . _("MAC addresses") ."</legend>\n";166 $html .= "<legend>"._("MAC addresses")."</legend>\n"; 158 167 $html .= "<table>\n"; 159 168 $html .= "<thead>\n"; 160 169 $html .= "<tr>\n"; 161 $html .= " <th>" . _("MAC") ."</th>\n";162 $html .= " <th>" . _("Count") ."</th>\n";170 $html .= " <th>"._("MAC")."</th>\n"; 171 $html .= " <th>"._("Count")."</th>\n"; 163 172 $html .= "</tr>\n"; 164 173 $html .= "</thead>\n"; 165 174 166 175 $even = 0; 167 foreach ($rows as $row) { 168 if ($row['user_mac']) { 169 $html .= $even ? "<tr>\n" : "<tr class='odd'>\n"; 170 if ($even == 0) 171 $even = 1; 172 else 173 $even = 0; 174 $html .= " <td><a href='?date_from={$_REQUEST['date_from']}&date_to={$_REQUEST['date_to']}&user_mac={$row['user_mac']}'>{$row['user_mac']}</a></td>\n"; 175 $html .= " <td>" . $row['nb'] . "</td>\n"; 176 $html .= "</tr>\n"; 177 } 176 foreach ($rows as $row) 177 { 178 if ($row['user_mac']) 179 { 180 $html .= $even ? "<tr>\n" : "<tr class='odd'>\n"; 181 if ($even == 0) 182 $even = 1; 183 else 184 $even = 0; 185 $html .= " <td><a href='?date_from={$_REQUEST['date_from']}&date_to={$_REQUEST['date_to']}&user_mac={$row['user_mac']}'>{$row['user_mac']}</a></td>\n"; 186 $html .= " <td>".$row['nb']."</td>\n"; 187 $html .= "</tr>\n"; 188 } 178 189 } 179 190 -
trunk/wifidog-auth/wifidog/admin/stats_user_mac.inc.php
r726 r731 1 1 <?php 2 /********************************************************************\ 3 * This program is free software; you can redistribute it and/or * 4 * modify it under the terms of the GNU General Public License as * 5 * published by the Free Software Foundation; either version 2 of * 6 * the License, or (at your option) any later version. * 7 * * 8 * This program is distributed in the hope that it will be useful, * 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 11 * GNU General Public License for more details. * 12 * * 13 * You should have received a copy of the GNU General Public License* 14 * along with this program; if not, contact: * 15 * * 16 * Free Software Foundation Voice: +1-617-542-5942 * 17 * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * 18 * Boston, MA 02111-1307, USA gnu@gnu.org * 19 * * 20 \********************************************************************/ 21 /**@file stats_user_mac.inc.php 22 * @author Copyright (C) 2005 Philippe April 23 */ 2 3 /********************************************************************\ 4 * This program is free software; you can redistribute it and/or * 5 * modify it under the terms of the GNU General Public License as * 6 * published by the Free Software Foundation; either version 2 of * 7 * the License, or (at your option) any later version. * 8 * * 9 * This program is distributed in the hope that it will be useful, * 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 12 * GNU General Public License for more details. * 13 * * 14 * You should have received a copy of the GNU General Public License* 15 * along with this program; if not, contact: * 16 * * 17 * Free Software Foundation Voice: +1-617-542-5942 * 18 * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * 19 * Boston, MA 02111-1307, USA gnu@gnu.org * 20 * * 21 \********************************************************************/ 22 /**@file stats_user_mac.inc.php 23 * @author Copyright (C) 2005 Philippe April 24 */ 24 25 25 26 $sql = "select *,nodes.name,users.username from connections,nodes where nodes.node_id=connections.node_id and users.user_id=connections.user_id and user_mac = '{$_REQUEST['user_mac']}' {$date_constraint} order by timestamp_in desc"; … … 27 28 28 29 $html .= "<fieldset class='pretty_fieldset'>\n"; 29 $html .= "<legend>" . _("Connections") ."</legend>\n";30 $html .= "<legend>"._("Connections")."</legend>\n"; 30 31 $html .= "<table>\n"; 31 32 $html .= "<thead>\n"; 32 33 $html .= "<tr>\n"; 33 $html .= " <th>" . _("Username") ."</th>\n";34 $html .= " <th>" . _("Date") ."</th>\n";35 $html .= " <th>" . _("Node") ."</th>\n";36 $html .= " <th>" . _("Time spent") ."</th>\n";37 $html .= " <th>" . _("D") ."</th>\n";38 $html .= " <th>" . _("U") ."</th>\n";34 $html .= " <th>"._("Username")."</th>\n"; 35 $html .= " <th>"._("Date")."</th>\n"; 36 $html .= " <th>"._("Node")."</th>\n"; 37 $html .= " <th>"._("Time spent")."</th>\n"; 38 $html .= " <th>"._("D")."</th>\n"; 39 $html .= " <th>"._("U")."</th>\n"; 39 40 $html .= "</tr>\n"; 40 41 $html .= "</thead>\n"; 41 42 43 // Vars init 42 44 $even = 0; 43 foreach ($rows as $row) { 44 $timestamp_in = strtotime($row['timestamp_in']); 45 $timestamp_out = strtotime($row['timestamp_out']); 45 $total = array (); 46 $total['incoming'] = 0; 47 $total['outgoing'] = 0; 48 $total['time_spent'] = 0; 49 foreach ($rows as $row) 50 { 51 $timestamp_in = strtotime($row['timestamp_in']); 52 $timestamp_out = strtotime($row['timestamp_out']); 46 53 47 $total['incoming'] += $row['incoming'];48 $total['outgoing'] += $row['outgoing'];54 $total['incoming'] += $row['incoming']; 55 $total['outgoing'] += $row['outgoing']; 49 56 50 $html .= $even ? "<tr>\n" : "<tr class='odd'>\n"; 51 if ($even == 0) 52 $even = 1; 53 else 54 $even = 0; 55 $html .= " <td><a href='?date_from={$_REQUEST['date_from']}&date_to={$_REQUEST['date_to']}&user_id={$row['user_id']}'>{$row['username']}</a></td>\n"; 56 $html .= " <td>" . utf8_encode(strftime("%c", strtotime($row['timestamp_in']))) . "</td>"; 57 $html .= " <td><a href='?date_from={$_REQUEST['date_from']}&date_to={$_REQUEST['date_to']}&node_id={$row['node_id']}'>{$row['name']}</a></td>"; 58 if ($timestamp_in != -1 && $timestamp_out != -1) { 59 $total['time_spent'] += ($timestamp_out - $timestamp_in); 60 $html .= " <td>" . seconds_in_words($timestamp_out - $timestamp_in) . "</td>"; 61 } else { 62 $html .= " <td></td>"; 63 } 64 if ($row['incoming']) 65 $html .= "<td>" . bytes_in_words($row['incoming']) . "</td>\n"; 66 else 67 $html .= "<td></td>\n"; 57 $html .= $even ? "<tr>\n" : "<tr class='odd'>\n"; 58 if ($even == 0) 59 $even = 1; 60 else 61 $even = 0; 62 $html .= " <td><a href='?date_from={$_REQUEST['date_from']}&date_to={$_REQUEST['date_to']}&user_id={$row['user_id']}'>{$row['username']}</a></td>\n"; 63 $html .= " <td>".utf8_encode(strftime("%c", strtotime($row['timestamp_in'])))."</td>"; 64 $html .= " <td><a href='?date_from={$_REQUEST['date_from']}&date_to={$_REQUEST['date_to']}&node_id={$row['node_id']}'>{$row['name']}</a></td>"; 65 if ($timestamp_in != -1 && $timestamp_out != -1) 66 { 67 $total['time_spent'] += ($timestamp_out - $timestamp_in); 68 $html .= " <td>".seconds_in_words($timestamp_out - $timestamp_in)."</td>"; 69 } 70 else 71 { 72 $html .= " <td></td>"; 73 } 74 if ($row['incoming']) 75 $html .= "<td>".bytes_in_words($row['incoming'])."</td>\n"; 76 else 77 $html .= "<td></td>\n"; 68 78 69 if ($row['outgoing'])70 $html .= "<td>" . bytes_in_words($row['outgoing']) ."</td>\n";71 else72 $html .= "<td></td>\n";79 if ($row['outgoing']) 80 $html .= "<td>".bytes_in_words($row['outgoing'])."</td>\n"; 81 else 82 $html .= "<td></td>\n"; 73 83 74 $html .= "</tr>";84 $html .= "</tr>"; 75 85 } 76 86 … … 78 88 $html .= " <td></td>\n"; 79 89 $html .= " <td></td>\n"; 80 $html .= " <th>" . _("Total") .":</th>\n";81 $html .= " <th>" . seconds_in_words($total['time_spent']) ."</th>\n";82 $html .= " <th>" . bytes_in_words($total['incoming']) ."</th>\n";83 $html .= " <th>" . bytes_in_words($total['outgoing']) ."</th>\n";90 $html .= " <th>"._("Total").":</th>\n"; 91 $html .= " <th>".seconds_in_words($total['time_spent'])."</th>\n"; 92 $html .= " <th>".bytes_in_words($total['incoming'])."</th>\n"; 93 $html .= " <th>".bytes_in_words($total['outgoing'])."</th>\n"; 84 94 $html .= "</tr>\n"; 85 95
