+ return $tn;
+ }
+
+ static function path($filename)
+ {
+ // TODO: Store thumbnails in their own directory and don't use File::path here
+ return File::path($filename);
+ }
+
+ static function url($filename)
+ {
+ // TODO: Store thumbnails in their own directory and don't use File::url here
+ return File::url($filename);
+ }
+
+ public function getPath()
+ {
+ $filepath = self::path($this->filename);
+ if (!file_exists($filepath)) {
+ throw new FileNotFoundException($filepath);
+ }
+ return $filepath;
+ }
+
+ public function getUrl()
+ {
+ if (!empty($this->getFile()->filename)) {
+ // A locally stored File, so we can dynamically generate a URL.
+ if (!empty($this->url)) {
+ // Let's just clear this field as there is no point in having it for local files.
+ $orig = clone($this);
+ $this->url = null;
+ $this->update($orig);
+ }
+ $url = common_local_url('attachment_thumbnail', array('attachment'=>$this->file_id));
+ if (strpos($url, '?') === false) {
+ $url .= '?';
+ }
+ return $url . http_build_query(array('w'=>$this->width, 'h'=>$this->height));
+ }
+
+ // No local filename available, return the URL we have stored
+ return $this->url;
+ }
+
+ public function getHeight()
+ {
+ return $this->height;