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