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