/**
  * Get the path of a file system copy of the thumbnail.
  * Callers should never write to this path.
  *
  * @return string|bool Returns false if there isn't one
  */
 public function getLocalCopyPath()
 {
     if ($this->isError()) {
         return false;
     } elseif ($this->path === null) {
         return $this->file->getLocalRefPath();
     } else {
         return $this->path;
         // may return false
     }
 }
	/**
	 * Get the path of a file system copy of the thumbnail.
	 * Callers should never write to this path.
	 *
	 * @return string|bool Returns false if there isn't one
	 */
	public function getLocalCopyPath() {
		if ( $this->isError() ) {
			return false;
		} elseif ( $this->path === null ) {
			return $this->file->getLocalRefPath(); // assume thumb was not scaled
		} elseif ( FileBackend::isStoragePath( $this->path ) ) {
			$be = $this->file->getRepo()->getBackend();
			// The temp file will be process cached by FileBackend
			$fsFile = $be->getLocalReference( array( 'src' => $this->path ) );
			return $fsFile ? $fsFile->getPath() : false;
		} else {
			return $this->path; // may return false
		}
	}
 /**
  * Long description. Shown under image on image description page surounded by ().
  *
  * @access	public
  * @param	File	$file
  * @return	string
  */
 public function getLongDesc($file)
 {
     global $wgLang;
     $probe = new FFProbe($file->getLocalRefPath());
     $format = $probe->getFormat();
     $stream = $probe->getStream("v:0");
     if ($format === false || $stream === false) {
         return self::getGeneralLongDesc($file);
     }
     $extension = pathinfo($file->getLocalRefPath(), PATHINFO_EXTENSION);
     return wfMessage('ev_video_long_desc', strtoupper($extension), $stream->getCodecName(), $wgLang->formatTimePeriod($format->getDuration()), $stream->getWidth(), $stream->getHeight(), $wgLang->formatBitrate($format->getBitRate()))->text();
 }