git-svn-id: file:///home/shish/svn/shimmie2/trunk@1058 7f39781d-f577-437e-ae19-be835c7a54ca
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
class ImageInfoBoxBuildingEvent extends Event {
 | 
						|
	var $parts = array();
 | 
						|
	var $image;
 | 
						|
	var $user;
 | 
						|
 | 
						|
	public function ImageInfoBoxBuildingEvent(Image $image, User $user) {
 | 
						|
		$this->image = $image;
 | 
						|
		$this->user = $user;
 | 
						|
	}
 | 
						|
 | 
						|
	public function add_part($html, $position=50) {
 | 
						|
		while(isset($this->parts[$position])) $position++;
 | 
						|
		$this->parts[$position] = $html;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
class ImageInfoSetEvent extends Event {
 | 
						|
	var $image_id;
 | 
						|
 | 
						|
	public function ImageInfoSetEvent($image_id) {
 | 
						|
		$this->image_id = int_escape($image_id);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
class ImageAdminBlockBuildingEvent extends Event {
 | 
						|
	var $parts = array();
 | 
						|
	var $image = null;
 | 
						|
	var $user = null;
 | 
						|
 | 
						|
	public function ImageAdminBlockBuildingEvent(Image $image, User $user) {
 | 
						|
		$this->image = $image;
 | 
						|
		$this->user = $user;
 | 
						|
	}
 | 
						|
 | 
						|
	public function add_part($html, $position=50) {
 | 
						|
		while(isset($this->parts[$position])) $position++;
 | 
						|
		$this->parts[$position] = $html;
 | 
						|
	}
 | 
						|
}
 | 
						|
class ViewImage implements Extension {
 | 
						|
	var $theme;
 | 
						|
 | 
						|
	public function receive_event(Event $event) {
 | 
						|
		if(is_null($this->theme)) $this->theme = get_theme_object($this);
 | 
						|
 | 
						|
		if(($event instanceof PageRequestEvent) && $event->page_matches("post/view")) {
 | 
						|
			$image_id = int_escape($event->get_arg(0));
 | 
						|
			
 | 
						|
			global $database;
 | 
						|
			global $config;
 | 
						|
			$image = Image::by_id($config, $database, $image_id);
 | 
						|
 | 
						|
			if(!is_null($image)) {
 | 
						|
				send_event(new DisplayingImageEvent($image, $event->page));
 | 
						|
				$iabbe = new ImageAdminBlockBuildingEvent($image, $event->user);
 | 
						|
				send_event($iabbe);
 | 
						|
				ksort($iabbe->parts);
 | 
						|
				$this->theme->display_admin_block($event->page, $iabbe->parts);
 | 
						|
			}
 | 
						|
			else {
 | 
						|
				$this->theme->display_error($event->page, "Image not found", "No image in the database has the ID #$image_id");
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		if(($event instanceof PageRequestEvent) && $event->page_matches("post/set")) {
 | 
						|
			$image_id = int_escape($_POST['image_id']);
 | 
						|
 | 
						|
			send_event(new ImageInfoSetEvent($image_id));
 | 
						|
			
 | 
						|
			$query = $_POST['query'];
 | 
						|
			$event->page->set_mode("redirect");
 | 
						|
			$event->page->set_redirect(make_link("post/view/$image_id", $query));
 | 
						|
		}
 | 
						|
 | 
						|
		if($event instanceof DisplayingImageEvent) {
 | 
						|
			global $user;
 | 
						|
			$iibbe = new ImageInfoBoxBuildingEvent($event->get_image(), $user);
 | 
						|
			send_event($iibbe);
 | 
						|
			ksort($iibbe->parts);
 | 
						|
			$this->theme->display_page($event->page, $event->get_image(), $iibbe->parts);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
add_event_listener(new ViewImage());
 | 
						|
?>
 |