$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; } } ?>