function mikrotik_queues() { global $config, $colors, $item_rows; /* ================= input validation ================= */ input_validate_input_number(get_request_var_request('page')); input_validate_input_number(get_request_var_request('rows')); input_validate_input_number(get_request_var_request('device')); /* ==================================================== */ /* clean up sort_column */ if (isset($_REQUEST['sort_column'])) { $_REQUEST['sort_column'] = sanitize_search_string(get_request_var_request('sort_column')); } /* clean up sort_direction */ if (isset($_REQUEST['sort_direction'])) { $_REQUEST['sort_direction'] = sanitize_search_string(get_request_var_request('sort_direction')); } /* clean up filter string */ if (isset($_REQUEST['filter'])) { $_REQUEST['filter'] = sanitize_search_string(get_request_var_request('filter')); } /* clean up sincereset string */ if (isset($_REQUEST['sincereset'])) { $_REQUEST['sincereset'] = sanitize_search_string(get_request_var_request('sincereset')); } if (isset($_REQUEST['reset'])) { kill_session_var('sess_mikrotik_queues_sort_column'); kill_session_var('sess_mikrotik_queues_sort_direction'); kill_session_var('sess_mikrotik_queues_filter'); kill_session_var('sess_mikrotik_queues_sincereset'); kill_session_var('sess_default_rows'); kill_session_var('sess_mikrotik_queues_device'); kill_session_var('sess_mikrotik_queues_current_page'); } elseif (isset($_REQUEST['clear'])) { kill_session_var('sess_mikrotik_queues_sort_column'); kill_session_var('sess_mikrotik_queues_sort_direction'); kill_session_var('sess_mikrotik_queues_filter'); kill_session_var('sess_mikrotik_queues_sincereset'); kill_session_var('sess_default_rows'); kill_session_var('sess_mikrotik_queues_device'); kill_session_var('sess_mikrotik_queues_current_page'); unset($_REQUEST['sort_column']); unset($_REQUEST['sort_direction']); unset($_REQUEST['filter']); unset($_REQUEST['sincereset']); unset($_REQUEST['rows']); unset($_REQUEST['device']); unset($_REQUEST['page']); } else { /* if any of the settings changed, reset the page number */ $changed = false; $changed += mikrotik_check_changed('filter', 'sess_mikrotik_queues_filter'); $changed += mikrotik_check_changed('sincereset', 'sess_mikrotik_queues_sincereset'); $changed += mikrotik_check_changed('rows', 'sess_default_rows'); $changed += mikrotik_check_changed('device', 'sess_mikrotik_queues_device'); if ($changed) { $_REQUEST['page'] = '1'; } } load_current_session_value('page', 'sess_mikrotik_queues_current_page', '1'); load_current_session_value('rows', 'sess_default_rows', read_config_option('num_rows_table')); load_current_session_value('device', 'sess_mikrotik_queues_device', '-1'); load_current_session_value('sort_column', 'sess_mikrotik_queues_sort_column', 'name'); load_current_session_value('sort_direction', 'sess_mikrotik_queues_sort_direction', 'ASC'); load_current_session_value('filter', 'sess_mikrotik_queues_filter', ''); load_current_session_value('sincereset', 'sess_mikrotik_queues_sincereset', ''); ?> <script type='text/javascript'> function applyFilter() { strURL = '?action=queues'; strURL += '&filter=' + $('#filter').val(); strURL += '&sincereset=' + $('#sincereset').is(':checked'); strURL += '&rows=' + $('#rows').val(); strURL += '&device=' + $('#device').val(); strURL += '&header=false'; loadPageNoHeader(strURL); } function clearFilter() { strURL = '?action=queues&clear=&header=false'; loadPageNoHeader(strURL); } $(function() { $('#form_queues').submit(function(event) { event.preventDefault(); applyFilter(); }); }); </script> <?php html_start_box('<strong>Queue Status</strong>', '100%', $colors['header'], '3', 'center', ''); ?> <tr class='even noprint'> <td> <form id='form_queues' action='mikrotik.php?action=queues'> <table class='filterTable'> <tr> <td> Search </td> <td> <input id='filter' type='text' size='25' value='<?php print get_request_var_request('filter'); ?> '> </td> <td> Device </td> <td> <select id='device' onChange='applyFilter()'> <option value='-1'<?php if (get_request_var_request('device') == '-1') { ?> selected<?php } ?> >All</option> <?php $hosts = db_fetch_assoc('SELECT DISTINCT h.id, h.description FROM plugin_mikrotik_system AS hrs INNER JOIN host AS h ON hrs.host_id=h.id ORDER BY description'); if (sizeof($hosts)) { foreach ($hosts as $h) { echo "<option value='" . $h['id'] . "' " . (get_request_var_request('device') == $h['id'] ? 'selected' : '') . '>' . $h['description'] . '</option>'; } } ?> </select> </td> <td> Queues </td> <td> <select id='rows' onChange='applyFilter()'> <option value='-1'<?php if (get_request_var_request('rows') == '-1') { ?> selected<?php } ?> >Default</option> <?php if (sizeof($item_rows)) { foreach ($item_rows as $key => $name) { echo "<option value='" . $key . "' " . (get_request_var_request('rows') == $key ? 'selected' : '') . '>' . $name . '</option>'; } } ?> </select> </td> <td> <label for='sincereset'>Since Reset</label> </td> <td> <input id='sincereset' type='checkbox' <?php print $_REQUEST['sincereset'] == 'true' ? 'checked' : ''; ?> onClick='applyFilter()'> </td> <td> <input id='refresh' type='button' onClick='applyFilter()' value='Go'> </td> <td> <input id='clear' type='button' onClick='clearFilter()' value='Clear'> </td> </tr> </table> <input type='hidden' id='page' name='page' value='<?php print $_REQUEST['page']; ?> '> </form> </td> </tr> <?php html_end_box(); html_start_box('', '100%', $colors['header'], '3', 'center', ''); if ($_REQUEST['rows'] == '-1') { $num_rows = read_config_option('num_rows_table'); } else { $num_rows = get_request_var_request('rows'); } $limit = ' LIMIT ' . $num_rows * (get_request_var_request('page') - 1) . ',' . $num_rows; $sql_where = "WHERE mtq.name!='' AND mtq.name!='System Idle Process'"; $sort_column = get_request_var_request('sort_column'); if ($_REQUEST['sincereset'] == 'true') { $pref = ''; if (strpos($sort_column, 'cur') !== false) { $sort_column = str_replace('cur', '', $sort_column); } } else { $pref = 'cur'; if (strpos($sort_column, 'cur') === false) { switch ($sort_column) { case 'description': case 'name': case 'last_seen': case 'srcAddr': case 'dstAddr': break; default: $sort_column = $pref . $sort_column; } } } if ($_REQUEST['device'] != '-1') { $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . ' h.id=' . $_REQUEST['device']; } if ($_REQUEST['filter'] != '') { $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . " (h.description LIKE '%" . $_REQUEST['filter'] . "%' OR\n\t\t\tmtq.name LIKE '%" . $_REQUEST['filter'] . "%' OR\n\t\t\th.hostname LIKE '%" . $_REQUEST['filter'] . "%')"; } $sql = "SELECT mtq.*, h.hostname, h.description, h.disabled\n\t\tFROM plugin_mikrotik_queues AS mtq\n\t\tINNER JOIN host AS h\n\t\tON h.id=mtq.host_id\n\t\tINNER JOIN plugin_mikrotik_system AS hrs\n\t\tON hrs.host_id=h.id\n\t\t{$sql_where}\n\t\tORDER BY " . $sort_column . " " . get_request_var_request("sort_direction") . " " . $limit; //echo $sql; $rows = db_fetch_assoc($sql); $total_rows = db_fetch_cell("SELECT COUNT(*)\n\t\tFROM plugin_mikrotik_queues AS mtq\n\t\tINNER JOIN host AS h\n\t\tON h.id=mtq.host_id\n\t\tINNER JOIN plugin_mikrotik_system AS hrs\n\t\tON hrs.host_id=h.id\n\t\t{$sql_where}"); $nav = html_nav_bar('mikrotik.php?action=queues', MAX_DISPLAY_PAGES, get_request_var_request('page'), $num_rows, $total_rows, 14, 'Queues', 'page', 'main'); print $nav; $display_text = array('nosort' => array('display' => 'Actions', 'sort' => '', 'align' => 'left'), 'description' => array('display' => 'Hostname', 'sort' => 'ASC', 'align' => 'left'), 'name' => array('display' => 'Name', 'sort' => 'DESC', 'align' => 'left'), 'srcAddr' => array('display' => 'Src Addr/Mask', 'sort' => 'DESC', 'align' => 'left'), 'dstAddr' => array('display' => 'Dst Addr/Mask', 'sort' => 'DESC', 'align' => 'left'), $pref . 'BytesIn' => array('display' => 'Bytes In', 'sort' => 'DESC', 'align' => 'right'), $pref . 'BytesOut' => array('display' => 'Bytes Out', 'sort' => 'DESC', 'align' => 'right'), $pref . 'PacketsIn' => array('display' => 'Pkts In', 'sort' => 'DESC', 'align' => 'right'), $pref . 'PacketsOut' => array('display' => 'Pkts Out', 'sort' => 'DESC', 'align' => 'right'), $pref . 'QueuesIn' => array('display' => 'Qs In', 'sort' => 'DESC', 'align' => 'right'), $pref . 'QueuesOut' => array('display' => 'Qs Out', 'sort' => 'DESC', 'align' => 'right'), $pref . 'DroppedIn' => array('display' => 'Drps In', 'sort' => 'DESC', 'align' => 'right'), $pref . 'DroppedOut' => array('display' => 'Drps Out', 'sort' => 'DESC', 'align' => 'right'), 'last_seen' => array('display' => 'Last Seen', 'sort' => 'ASC', 'align' => 'right')); html_header_sort($display_text, $sort_column, get_request_var_request('sort_direction'), false, 'mikrotik.php?action=queues'); if (sizeof($rows)) { foreach ($rows as $row) { form_alternate_row(); if (api_plugin_user_realm_auth('host.php')) { $host_url = "<a class='hyperLink' href='" . htmlspecialchars($config['url_path'] . 'host.php?action=edit&id=' . $row['host_id']) . "' title='Edit Hosts'>" . $row['hostname'] . "</a>\n"; } else { $host_url = $row['hostname']; } $srcNet = mikrotik_get_network($row['srcMask']); $dstNet = mikrotik_get_network($row['dstMask']); $srcAM = $row['srcAddr'] . ($srcNet != 32 ? '/' . $srcNet : ''); $dstAM = $row['dstAddr'] . ($dstNet != 32 ? '/' . $dstNet : ''); echo "<td style='width:60px;'></td>"; echo "<td style='text-align:left;white-space:nowrap;'><strong>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", htmlspecialchars($row['description']) . '</strong> [' . $host_url . ']') : htmlspecialchars($row['description']) . '</strong> [' . $host_url . ']') . '</td>'; echo "<td style='text-align:left;'>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", htmlspecialchars($row['name'])) : htmlspecialchars($row['name'])) . '</td>'; echo "<td style='text-align:left;'>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $srcAM) : $srcAM) . '</td>'; echo "<td style='text-align:left;'>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $dstAM) : $dstAM) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'BytesIn']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'BytesOut']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'PacketsIn']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'PacketsOut']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'QueuesIn']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'QueuesOut']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'DroppedIn']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'DroppedOut']) . '</td>'; echo "<td style='text-align:right;'>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $row['last_seen']) : $row['last_seen']) . '</td>'; form_end_row(); } print $nav; } else { print '<tr><td colspan="5"><em>No Simple Queues Found</em></td></tr>'; } html_end_box(); }
function mikrotik_queues() { global $config, $item_rows, $queue_hashes; /* ================= input validation and session storage ================= */ $filters = array('rows' => array('filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => read_config_option('num_rows_table')), 'page' => array('filter' => FILTER_VALIDATE_INT, 'default' => '1'), 'device' => array('filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '-1'), 'active' => array('filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => 'true', 'options' => array('options' => 'sanitize_search_string')), 'sincereset' => array('filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string')), 'filter' => array('filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string')), 'sort_column' => array('filter' => FILTER_CALLBACK, 'default' => 'name', 'options' => array('options' => 'sanitize_search_string')), 'sort_direction' => array('filter' => FILTER_CALLBACK, 'default' => 'ASC', 'options' => array('options' => 'sanitize_search_string'))); validate_store_request_vars($filters, 'sess_mtq'); /* ================= input validation ================= */ ?> <script type='text/javascript'> function applyFilter() { strURL = '?action=queues'; strURL += '&filter=' + $('#filter').val(); strURL += '&active=' + $('#active').is(':checked'); strURL += '&sincereset=' + $('#sincereset').is(':checked'); strURL += '&rows=' + $('#rows').val(); strURL += '&device=' + $('#device').val(); strURL += '&header=false'; loadPageNoHeader(strURL); } function clearFilter() { strURL = '?action=queues&clear=&header=false'; loadPageNoHeader(strURL); } $(function() { $('#form_queues').submit(function(event) { event.preventDefault(); applyFilter(); }); }); </script> <?php html_start_box(__('Queue Status'), '100%', '', '3', 'center', ''); ?> <tr class='even noprint'> <td> <form id='form_queues' action='mikrotik.php?action=queues'> <table class='filterTable'> <tr> <td> <?php print __('Search'); ?> </td> <td> <input id='filter' type='text' size='25' value='<?php print get_request_var('filter'); ?> '> </td> <td> <?php print __('Device'); ?> </td> <td> <select id='device' onChange='applyFilter()'> <option value='-1'<?php if (get_request_var('device') == '-1') { ?> selected<?php } ?> ><?php print __('All'); ?> </option> <?php $hosts = db_fetch_assoc('SELECT DISTINCT h.id, h.description FROM plugin_mikrotik_system AS hrs INNER JOIN host AS h ON hrs.host_id=h.id ORDER BY description'); if (sizeof($hosts)) { foreach ($hosts as $h) { echo "<option value='" . $h['id'] . "' " . (get_request_var('device') == $h['id'] ? 'selected' : '') . '>' . $h['description'] . '</option>'; } } ?> </select> </td> <td> <?php print __('Queues'); ?> </td> <td> <select id='rows' onChange='applyFilter()'> <option value='-1'<?php if (get_request_var('rows') == '-1') { ?> selected<?php } ?> ><?php print __('Default'); ?> </option> <?php if (sizeof($item_rows)) { foreach ($item_rows as $key => $name) { echo "<option value='" . $key . "' " . (get_request_var('rows') == $key ? 'selected' : '') . '>' . $name . '</option>'; } } ?> </select> </td> <td> <label for='active'><?php print __('Active'); ?> </label> </td> <td> <input id='active' type='checkbox' <?php print get_request_var('active') == 'true' ? 'checked' : ''; ?> onClick='applyFilter()'> </td> <td> <label for='sincereset'><?php print __('Since Reset'); ?> </label> </td> <td> <input id='sincereset' type='checkbox' <?php print get_request_var('sincereset') == 'true' ? 'checked' : ''; ?> onClick='applyFilter()'> </td> <td> <input id='refresh' type='button' onClick='applyFilter()' value='<?php print __('Go'); ?> '> </td> <td> <input id='clear' type='button' onClick='clearFilter()' value='<?php print __('Clear'); ?> '> </td> </tr> </table> <input type='hidden' id='page' name='page' value='<?php print get_request_var('page'); ?> '> </form> </td> </tr> <?php html_end_box(); if (get_request_var('rows') == '-1') { $num_rows = read_config_option('num_rows_table'); } else { $num_rows = get_request_var('rows'); } $limit = ' LIMIT ' . $num_rows * (get_request_var('page') - 1) . ',' . $num_rows; $sql_where = "WHERE mtq.name!=''"; $sort_column = get_request_var('sort_column'); if (get_request_var('sincereset') == 'true') { if (get_request_var('active') == 'true') { $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . ' (BytesIn>0 or BytesOut>0)'; } $pref = ''; if (strpos($sort_column, 'cur') !== false) { $sort_column = str_replace('cur', '', $sort_column); } } else { if (get_request_var('active') == 'true') { $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . ' (curBytesIn>0 or curBytesOut>0)'; } $pref = 'cur'; if (strpos($sort_column, 'cur') === false) { switch ($sort_column) { case 'description': case 'name': case 'last_seen': case 'srcAddr': case 'dstAddr': break; default: $sort_column = $pref . $sort_column; } } } if (get_request_var('device') != '-1') { $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . ' h.id=' . get_request_var('device'); } if (get_request_var('filter') != '') { $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . " (h.description LIKE '%" . get_request_var('filter') . "%' OR\n\t\t\tmtq.name LIKE '%" . get_request_var('filter') . "%' OR\n\t\t\th.hostname LIKE '%" . get_request_var('filter') . "%')"; } $sql = "SELECT mtq.*, h.hostname, h.description, h.disabled\n\t\tFROM plugin_mikrotik_queues AS mtq\n\t\tINNER JOIN host AS h\n\t\tON h.id=mtq.host_id\n\t\tINNER JOIN plugin_mikrotik_system AS hrs\n\t\tON hrs.host_id=h.id\n\t\t{$sql_where}\n\t\tORDER BY " . $sort_column . " " . get_request_var("sort_direction") . " " . $limit; //echo $sql; $rows = db_fetch_assoc($sql); $total_rows = db_fetch_cell("SELECT COUNT(*)\n\t\tFROM plugin_mikrotik_queues AS mtq\n\t\tINNER JOIN host AS h\n\t\tON h.id=mtq.host_id\n\t\tINNER JOIN plugin_mikrotik_system AS hrs\n\t\tON hrs.host_id=h.id\n\t\t{$sql_where}"); $nav = html_nav_bar('mikrotik.php?action=queues', MAX_DISPLAY_PAGES, get_request_var('page'), $num_rows, $total_rows, 14, __('Queues'), 'page', 'main'); print $nav; html_start_box('', '100%', '', '3', 'center', ''); $display_text = array('nosort' => array('display' => __('Actions'), 'sort' => '', 'align' => 'left'), 'description' => array('display' => __('Hostname'), 'sort' => 'ASC', 'align' => 'left'), 'name' => array('display' => __('Name'), 'sort' => 'DESC', 'align' => 'left'), 'srcAddr' => array('display' => __('Src Addr/Mask'), 'sort' => 'DESC', 'align' => 'left'), 'dstAddr' => array('display' => __('Dst Addr/Mask'), 'sort' => 'DESC', 'align' => 'left'), $pref . 'BytesIn' => array('display' => __('Bytes In'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'BytesOut' => array('display' => __('Bytes Out'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'PacketsIn' => array('display' => __('Pkts In'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'PacketsOut' => array('display' => __('Pkts Out'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'QueuesIn' => array('display' => __('Qs In'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'QueuesOut' => array('display' => __('Qs Out'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'DroppedIn' => array('display' => __('Drps In'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'DroppedOut' => array('display' => __('Drps Out'), 'sort' => 'DESC', 'align' => 'right'), 'last_seen' => array('display' => __('Last Seen'), 'sort' => 'ASC', 'align' => 'right')); html_header_sort($display_text, $sort_column, get_request_var('sort_direction'), false, 'mikrotik.php?action=queues'); if (sizeof($rows)) { foreach ($rows as $row) { form_alternate_row(); $graphs = mikrotik_graphs_url_by_template_hashs($queue_hashes, $row['host_id'], str_replace(' ', '%', $row['name'])); if (api_plugin_user_realm_auth('host.php')) { $host_url = "<a class='hyperLink' href='" . htmlspecialchars($config['url_path'] . 'host.php?action=edit&id=' . $row['host_id']) . "' title='Edit Device'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $row['description']) : $row['description']) . '</a>'; } else { $host_url = $row['hostname']; } $srcNet = mikrotik_get_network($row['srcMask']); $dstNet = mikrotik_get_network($row['dstMask']); $srcAM = $row['srcAddr'] . ($srcNet != 32 ? '/' . $srcNet : ''); $dstAM = $row['dstAddr'] . ($dstNet != 32 ? '/' . $dstNet : ''); echo "<td style='width:60px;'>{$graphs}</td>"; echo "<td style='text-align:left;white-space:nowrap;'>" . $host_url . '</td>'; echo "<td style='text-align:left;'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", htmlspecialchars($row['name'])) : htmlspecialchars($row['name'])) . '</td>'; echo "<td style='text-align:left;'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $srcAM) : $srcAM) . '</td>'; echo "<td style='text-align:left;'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $dstAM) : $dstAM) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'BytesIn']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'BytesOut']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'PacketsIn']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'PacketsOut']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'QueuesIn']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'QueuesOut']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'DroppedIn']) . '</td>'; echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'DroppedOut']) . '</td>'; echo "<td style='text-align:right;'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $row['last_seen']) : $row['last_seen']) . '</td>'; form_end_row(); } } else { print '<tr><td colspan="5"><em>' . __('No Simple Queues Found') . '</em></td></tr>'; } html_end_box(); if (sizeof($rows)) { print $nav; } echo '<script type="text/javascript">$(function() { $("a.hyperLink, img").tooltip(); });</script>'; }