diff --git a/contrib/event_log/main.php b/contrib/event_log/main.php index 5ec532c7..1e0e8902 100644 --- a/contrib/event_log/main.php +++ b/contrib/event_log/main.php @@ -19,9 +19,42 @@ class EventLog extends Extension { if(is_a($event, 'PageRequestEvent') && $event->page_name == "event_log") { global $user; + global $database; if($user->is_admin()) { - global $database; - $events = $database->db->GetAll("SELECT * FROM event_log WHERE date > date_sub(now(), interval 1 day) ORDER BY date DESC"); + if(isset($_POST['action'])) { + switch($_POST['action']) { + case 'clear': + $database->execute("DELETE FROM event_log"); + break; + } + } + + $columns = array("name", "date", "owner_ip", "event"); + $orders = array("ASC", "DESC"); + + $sort = "date"; + if(isset($_GET['sort']) && in_array($_GET['sort'], $columns)) { + $sort = $_GET['sort']; + } + + $order = "DESC"; + if(isset($_GET['order']) && in_array($_GET['order'], $orders)) { + $order = $_GET['order']; + } + + $filter_sql = ""; + if(isset($_GET['filter']) && isset($_GET['where']) && in_array($_GET['filter'], $columns)) { + $filter = $_GET['filter']; + $where = $database->db->Quote($_GET['where']); + $filter_sql = "WHERE $filter = $where"; + } + + $events = $database->db->GetAll(" + SELECT event_log.*,users.name FROM event_log + JOIN users ON event_log.owner_id = users.id + $filter_sql + ORDER BY $sort $order + "); $this->theme->display_page($event->page, $events); } else { diff --git a/contrib/event_log/theme.php b/contrib/event_log/theme.php index 5322d544..dcdd147a 100644 --- a/contrib/event_log/theme.php +++ b/contrib/event_log/theme.php @@ -6,32 +6,77 @@ class EventLogTheme extends Themelet { $page->set_heading("Event Log"); $page->add_block(new NavBlock()); + $this->display_table($page, $events); + $this->display_controls($page); + } + + protected function display_table($page, $events) { $table = " - + + + + + + + + + "; foreach($events as $event) { $table .= " - - - - - - + + + + + + + "; } $table .= "
IDUserIPDateEventEntry
User + + + - + IP + + + - + Entry
Date + + + - + Event + + + - +
{$event['id']}{$event['owner_id']}{$event['owner_ip']}{$event['date']}{$event['event']}{$event['entry']} + {$event['name']} + + {$event['owner_ip']} + {$event['entry']}
+ {$event['date']} + + {$event['event']} +
"; $page->add_block(new Block("Log Contents", $table)); } + + protected function display_controls($page) { + $html = " +
+ + +
+ "; + $page->add_block(new Block(null, $html, "main", 60)); + } } ?>