event log to stable before it becomes incompatible
git-svn-id: file:///home/shish/svn/shimmie2/branches/branch_2.1@479 7f39781d-f577-437e-ae19-be835c7a54ca
This commit is contained in:
parent
09acf33f72
commit
5bec0b6ba8
82
contrib/event_log/main.php
Normal file
82
contrib/event_log/main.php
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Name: EventLog
|
||||||
|
* Author: Shish <webmaster@shishnet.org>
|
||||||
|
* Link: http://trac.shishnet.org/shimmie2/
|
||||||
|
* License: GPLv2
|
||||||
|
* Description: A log of things that happen, for abuse tracking
|
||||||
|
*/
|
||||||
|
|
||||||
|
class EventLog extends Extension {
|
||||||
|
var $theme;
|
||||||
|
|
||||||
|
public function receive_event($event) {
|
||||||
|
if(is_null($this->theme)) $this->theme = get_theme_object("event_log", "EventLogTheme");
|
||||||
|
|
||||||
|
if(is_a($event, 'InitExtEvent')) {
|
||||||
|
$this->setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(is_a($event, 'PageRequestEvent') && $event->page_name == "event_log") {
|
||||||
|
global $user;
|
||||||
|
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");
|
||||||
|
$this->theme->display_page($event->page, $events);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->theme->display_error($event->page, "Denied", "Only admins can see the event log");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(is_a($event, 'UserBlockBuildingEvent')) {
|
||||||
|
if($event->user->is_admin()) {
|
||||||
|
$event->add_link("Event Log", make_link("event_log"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
global $user; // bad
|
||||||
|
if(is_a($event, 'WikiUpdateEvent')) {
|
||||||
|
$this->add_to_log($event->user, 'Wiki Update', "Edited '{$event->page->title}'");
|
||||||
|
}
|
||||||
|
if(is_a($event, 'ConfigSaveEvent')) {
|
||||||
|
$this->add_to_log($user, 'Config Save', "Updated the board config");
|
||||||
|
}
|
||||||
|
if(is_a($event, 'ImageDeletionEvent')) {
|
||||||
|
$this->add_to_log($user, 'Image Deletion', "Deleted image {$event->image->id} (tags: {$event->image->get_tag_list()})");
|
||||||
|
}
|
||||||
|
if(is_a($event, 'SourceSetEvent')) {
|
||||||
|
$this->add_to_log($user, 'Source Set', "Source for image #{$event->image_id} set to '{$event->source}'");
|
||||||
|
}
|
||||||
|
if(is_a($event, 'TagSetEvent')) {
|
||||||
|
$this->add_to_log($user, 'Tags Set', "Tags for image #{$event->image_id} set to '{$event->tags}'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function add_to_log($user, $event, $entry) {
|
||||||
|
global $database;
|
||||||
|
|
||||||
|
$database->execute("
|
||||||
|
INSERT INTO event_log (owner_id, owner_ip, date, event, entry)
|
||||||
|
VALUES (?, ?, now(), ?, ?)",
|
||||||
|
array($user->id, $_SERVER['REMOTE_ADDR'], $event, $entry));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function setup() {
|
||||||
|
global $database;
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if($config->get_int("ext_event_log_version", 0) < 1) {
|
||||||
|
$database->Execute("CREATE TABLE event_log (
|
||||||
|
id int(11) NOT NULL auto_increment primary key,
|
||||||
|
owner_id int(11) NOT NULL,
|
||||||
|
owner_ip char(15) NOT NULL,
|
||||||
|
date datetime NOT NULL,
|
||||||
|
event varchar(32) NOT NULL,
|
||||||
|
entry varchar(255) NOT NULL
|
||||||
|
)");
|
||||||
|
$config->set_int("ext_event_log_version", 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
add_event_listener(new EventLog());
|
||||||
|
?>
|
37
contrib/event_log/theme.php
Normal file
37
contrib/event_log/theme.php
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class EventLogTheme extends Themelet {
|
||||||
|
public function display_page($page, $events) {
|
||||||
|
$page->set_title("Event Log");
|
||||||
|
$page->set_heading("Event Log");
|
||||||
|
$page->add_block(new NavBlock());
|
||||||
|
|
||||||
|
$table = "
|
||||||
|
<style>
|
||||||
|
.event_log_table TD {
|
||||||
|
font-size: 0.5em;
|
||||||
|
}
|
||||||
|
.event_log_table TD.entry {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<table border='1' class='event_log_table'>
|
||||||
|
<tr><th>ID</th><th>User</th><th>IP</th><th>Date</th><th>Event</th><th>Entry</th></tr>
|
||||||
|
";
|
||||||
|
foreach($events as $event) {
|
||||||
|
$table .= "
|
||||||
|
<tr>
|
||||||
|
<td>{$event['id']}</td>
|
||||||
|
<td>{$event['owner_id']}</td>
|
||||||
|
<td>{$event['owner_ip']}</td>
|
||||||
|
<td>{$event['date']}</td>
|
||||||
|
<td>{$event['event']}</td>
|
||||||
|
<td class='entry'>{$event['entry']}</td>
|
||||||
|
</tr>
|
||||||
|
";
|
||||||
|
}
|
||||||
|
$table .= "</table>";
|
||||||
|
$page->add_block(new Block("Log Contents", $table));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
Loading…
x
Reference in New Issue
Block a user