Skip to content

Commit 4c89ee9

Browse files
committed
Add packet type filter to packet index
1 parent 93c444f commit 4c89ee9

File tree

4 files changed

+77
-34
lines changed

4 files changed

+77
-34
lines changed

src/controllers/Packet/Index.php

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
namespace BNETDocs\Controllers\Packet;
44

55
use \BNETDocs\Libraries\Packet;
6+
use \BNETDocs\Libraries\PacketApplicationLayer as PktAppLayer;
67
use \BNETDocs\Models\Packet\Index as PacketIndexModel;
78
use \BNETDocs\Views\Packet\IndexHtml as PacketIndexHtmlView;
89
use \BNETDocs\Views\Packet\IndexJSON as PacketIndexJSONView;
910

1011
use \CarlBennett\MVC\Libraries\Common;
1112
use \CarlBennett\MVC\Libraries\Controller;
12-
use \CarlBennett\MVC\Libraries\Gravatar;
1313
use \CarlBennett\MVC\Libraries\Pair;
1414
use \CarlBennett\MVC\Libraries\Router;
1515
use \CarlBennett\MVC\Libraries\View;
@@ -29,6 +29,10 @@ public function &run( Router &$router, View &$view, array &$args ) {
2929
isset( $query['order'] ) ? $query['order'] : 'packet-id-asc'
3030
);
3131

32+
$model->pktapplayer = (
33+
isset( $query['pktapplayer'] ) ? $query['pktapplayer'] : array()
34+
);
35+
3236
switch ( $model->order ) {
3337
case 'created-datetime-asc':
3438
$order = [ 'created_datetime','ASC' ]; break;
@@ -58,7 +62,19 @@ public function &run( Router &$router, View &$view, array &$args ) {
5862
$order = null;
5963
}
6064

61-
$model->packets = Packet::getAllPackets( $order );
65+
$model->application_layers = PktAppLayer::getAllPacketApplicationLayers();
66+
67+
if ( empty( $model->pktapplayer )) {
68+
foreach ( $model->application_layers as $layer ) {
69+
$model->pktapplayer[] = $layer->getId();
70+
}
71+
}
72+
73+
$where_clause = '`packet_application_layer_id` IN ('
74+
. implode( ',', $model->pktapplayer ) . ')'
75+
;
76+
77+
$model->packets = Packet::getAllPackets( $where_clause, $order );
6278

6379
if ( !( $view instanceof PacketIndexHtmlView
6480
|| $view instanceof PacketIndexJSONView )) {

src/libraries/Packet.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,13 @@ public static function delete($id) {
113113
}
114114

115115
public static function &getAllPackets(
116-
$order = null, $limit = null, $index = null
116+
$where_clause = null, $order = null, $limit = null, $index = null
117117
) {
118118

119+
if ( !empty( $where_clause )) {
120+
$where_clause = 'WHERE ' . $where_clause;
121+
}
122+
119123
if ( !( is_numeric( $limit ) || is_numeric( $index ))) {
120124
$limit_clause = '';
121125
} else if ( !is_numeric( $index )) {
@@ -126,7 +130,9 @@ public static function &getAllPackets(
126130

127131
if ( empty( $limit_clause )) {
128132

129-
$ckey = 'bnetdocs-packets-' . hash('md5', $order[0] . $order[1]);
133+
$ckey = 'bnetdocs-packets-' . $where_clause
134+
. hash('md5', $order[0] . $order[1])
135+
;
130136
$cval = Common::$cache->get( $ckey );
131137

132138
if ( $cval !== false && !empty( $cval )) {
@@ -171,7 +177,7 @@ public static function &getAllPackets(
171177
`packet_remarks`,
172178
`packet_transport_layer_id`,
173179
`user_id`
174-
FROM `packets`
180+
FROM `packets` ' . $where_clause . '
175181
ORDER BY ' . $order_clause . ';
176182
');
177183

src/models/Packet/Index.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
class Index extends Model {
88

9+
public $application_layers;
910
public $order;
1011
public $packets;
12+
public $pktapplayer;
1113
public $timestamp;
1214
public $user;
1315

src/templates/Packet/Index.phtml

Lines changed: 48 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,55 @@ require('./header.inc.phtml');
2020
<header>Packet Index</header>
2121
<section>
2222
<form method="GET">
23-
<label for="order">Order by:</label>
24-
<select name="order" id="order" onchange="form.submit();"
25-
style="display:inline-block;width:200px;">
26-
<option value="created-datetime-asc"<?php
27-
if ($order === 'created-datetime-asc') { echo ' selected="selected"';
28-
} ?>>Created Timestamp (Ascending)</option>
29-
<option value="created-datetime-desc"<?php
30-
if ($order === 'created-datetime-desc') { echo ' selected="selected"';
31-
} ?>>Created Timestamp (Descending)</option>
32-
<option value="id-asc"<?php
33-
if ($order === 'id-asc') { echo ' selected="selected"';
34-
} ?>>Database Id (Ascending)</option>
35-
<option value="id-desc"<?php
36-
if ($order === 'id-desc') { echo ' selected="selected"';
37-
} ?>>Database Id (Descending)</option>
38-
<option value="packet-id-asc"<?php
39-
if ($order === 'packet-id-asc') { echo ' selected="selected"';
40-
} ?>>Packet Id (Ascending)</option>
41-
<option value="packet-id-desc"<?php
42-
if ($order === 'packet-id-desc') { echo ' selected="selected"';
43-
} ?>>Packet Id (Descending)</option>
44-
<option value="user-id-asc"<?php
45-
if ($order === 'user-id-asc') { echo ' selected="selected"';
46-
} ?>>User Id (Ascending)</option>
47-
<option value="user-id-desc"<?php
48-
if ($order === 'user-id-desc') { echo ' selected="selected"';
49-
} ?>>User Id (Descending)</option>
50-
</select>
51-
<input type="submit" value="Reorder"/>
23+
<div style="text-align:center;">
24+
<label for="order">Order by:</label>
25+
<select name="order" id="order" onchange="form.submit();"
26+
style="display:inline-block;width:200px;">
27+
<option value="created-datetime-asc"<?php
28+
if ($order === 'created-datetime-asc') { echo ' selected="selected"';
29+
} ?>>Created Timestamp (Ascending)</option>
30+
<option value="created-datetime-desc"<?php
31+
if ($order === 'created-datetime-desc') { echo ' selected="selected"';
32+
} ?>>Created Timestamp (Descending)</option>
33+
<option value="id-asc"<?php
34+
if ($order === 'id-asc') { echo ' selected="selected"';
35+
} ?>>Database Id (Ascending)</option>
36+
<option value="id-desc"<?php
37+
if ($order === 'id-desc') { echo ' selected="selected"';
38+
} ?>>Database Id (Descending)</option>
39+
<option value="packet-id-asc"<?php
40+
if ($order === 'packet-id-asc') { echo ' selected="selected"';
41+
} ?>>Packet Id (Ascending)</option>
42+
<option value="packet-id-desc"<?php
43+
if ($order === 'packet-id-desc') { echo ' selected="selected"';
44+
} ?>>Packet Id (Descending)</option>
45+
<option value="user-id-asc"<?php
46+
if ($order === 'user-id-asc') { echo ' selected="selected"';
47+
} ?>>User Id (Ascending)</option>
48+
<option value="user-id-desc"<?php
49+
if ($order === 'user-id-desc') { echo ' selected="selected"';
50+
} ?>>User Id (Descending)</option>
51+
</select>
52+
</div>
53+
<table><thead><tr><th colspan="3">Packet Types</th></tr></thead><tbody>
54+
<?php $x = 0; foreach ($this->getContext()->application_layers as $layer) {
55+
$id = 'pktapplayer-' . $layer->getId();
56+
$chk = in_array( $layer->getId(), $this->getContext()->pktapplayer );
57+
if ( $x % 3 == 0 ) { ?>
58+
<tr>
59+
<?php } ?>
60+
<td><input type="checkbox" name="pktapplayer[]" id="<?php echo $id; ?>" value="<?php echo $layer->getId(); ?>"<?php if ($chk) { ?> checked="checked"<?php } ?>> <label for="<?php echo $id; ?>"><?php echo $layer->getTag(); ?></label></td>
61+
<?php if ( $x % 3 == 2 ) { ?>
62+
</tr>
63+
<?php } ?>
64+
<?php $x++; } ?>
65+
<?php if ( $x % 3 > 0 ) { ?>
66+
</tr>
67+
<?php } ?>
68+
</tbody></table>
69+
<div style="text-align:center;"><input type="submit" value="Submit"/></div>
5270
</form>
71+
<hr/>
5372
<table>
5473
<thead>
5574
<tr>

0 commit comments

Comments
 (0)