git-svn-id: file:///home/shish/svn/shimmie2/trunk@680 7f39781d-f577-437e-ae19-be835c7a54ca
		
			
				
	
	
		
			127 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*
 | |
|  * An object representing an entry in the images table. As of 2.2, this no
 | |
|  * longer necessarily represents an image per se, but could be a video,
 | |
|  * sound file, or any other supported upload type.
 | |
|  */
 | |
| class Image {
 | |
| 	var $id = null;
 | |
| 	var $height, $width;
 | |
| 	var $hash, $filesize;
 | |
| 	var $filename, $ext;
 | |
| 	var $owner_ip;
 | |
| 	var $posted;
 | |
| 	var $source;
 | |
| 
 | |
| 	public function Image($row=null) {
 | |
| 		if(!is_null($row)) {
 | |
| 			foreach($row as $name => $value) {
 | |
| 				// FIXME: some databases use table.name rather than name
 | |
| 				$this->$name = $value; // hax
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	public function get_owner() {
 | |
| 		global $database;
 | |
| 		return $database->get_user_by_id($this->owner_id);
 | |
| 	}
 | |
| 
 | |
| 	public function get_tag_array() {
 | |
| 		if(!isset($this->tag_array)) {
 | |
| 			global $database;
 | |
| 			$this->tag_array = Array();
 | |
| 			$row = $database->Execute("SELECT tag FROM image_tags JOIN tags ON image_tags.tag_id = tags.id WHERE image_id=? ORDER BY tag", array($this->id));
 | |
| 			while(!$row->EOF) {
 | |
| 				$this->tag_array[] = $row->fields['tag'];
 | |
| 				$row->MoveNext();
 | |
| 			}
 | |
| 		}
 | |
| 		return $this->tag_array;
 | |
| 	}
 | |
| 
 | |
| 	public function get_tag_list() {
 | |
| 		return implode(' ', $this->get_tag_array());
 | |
| 	}
 | |
| 
 | |
| 	public function get_image_link() {
 | |
| 		global $config;
 | |
| 		return $this->parse_link_template($config->get_string('image_ilink'));
 | |
| 	}
 | |
| 
 | |
| 	public function get_short_link() {
 | |
| 		global $config;
 | |
| 		return $this->parse_link_template($config->get_string('image_slink'));
 | |
| 	}
 | |
| 
 | |
| 	public function get_thumb_link() {
 | |
| 		global $config;
 | |
| 		return $this->parse_link_template($config->get_string('image_tlink'));
 | |
| 	}
 | |
| 
 | |
| 	public function get_tooltip() {
 | |
| 		global $config;
 | |
| 		return $this->parse_link_template($config->get_string('image_tip'), "html_escape");
 | |
| 	}
 | |
| 
 | |
| 	public function get_image_filename() {
 | |
| 		global $config;
 | |
| 		$hash = $this->hash;
 | |
| 		$ab = substr($hash, 0, 2);
 | |
| 		$ext = $this->ext;
 | |
| 		return "images/$ab/$hash";
 | |
| 	}
 | |
| 
 | |
| 	public function get_thumb_filename() {
 | |
| 		global $config;
 | |
| 		$hash = $this->hash;
 | |
| 		$ab = substr($hash, 0, 2);
 | |
| 		return "thumbs/$ab/$hash";
 | |
| 	}
 | |
| 
 | |
| 	public function get_filename() {
 | |
| 		return $this->filename;
 | |
| 	}
 | |
| 	
 | |
| 	public function get_mime_type() {
 | |
| 		return "image/".($this->ext);
 | |
| 	}
 | |
| 
 | |
| 	public function get_ext() {
 | |
| 		return $this->ext;
 | |
| 	}
 | |
| 
 | |
| 	public function parse_link_template($tmpl, $_escape="url_escape") {
 | |
| 		global $config;
 | |
| 
 | |
| 		// don't bother hitting the database if it won't be used...
 | |
| 		$safe_tags = "";
 | |
| 		if(strpos($tmpl, '$tags') !== false) { // * stabs dynamically typed languages with a rusty spoon *
 | |
| 			$safe_tags = preg_replace(
 | |
| 					"/[^a-zA-Z0-9_\- ]/",
 | |
| 					"", $this->get_tag_list());
 | |
| 		}
 | |
| 
 | |
| 		$base_href = $config->get_string('base_href');
 | |
| 		$fname = $this->get_filename();
 | |
| 		$base_fname = strpos($fname, '.') ? substr($fname, 0, strrpos($fname, '.')) : $fname;
 | |
| 
 | |
| 		$tmpl = str_replace('$id',   $this->id,   $tmpl);
 | |
| 		$tmpl = str_replace('$hash', $this->hash, $tmpl);
 | |
| 		$tmpl = str_replace('$tags', $_escape($safe_tags),  $tmpl);
 | |
| 		$tmpl = str_replace('$base', $base_href,  $tmpl);
 | |
| 		$tmpl = str_replace('$ext',  $this->ext,  $tmpl);
 | |
| 		$tmpl = str_replace('$size', "{$this->width}x{$this->height}", $tmpl);
 | |
| 		$tmpl = str_replace('$filesize', to_shorthand_int($this->filesize), $tmpl);
 | |
| 		$tmpl = str_replace('$filename', $_escape($base_fname), $tmpl);
 | |
| 		$tmpl = str_replace('$title', $_escape($config->get_string("title")), $tmpl);
 | |
| 
 | |
| 		$plte = new ParseLinkTemplateEvent($tmpl, $this);
 | |
| 		send_event($plte);
 | |
| 		$tmpl = $plte->link;
 | |
| 
 | |
| 		return $tmpl;
 | |
| 	}
 | |
| }
 | |
| ?>
 |