X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/089fcac67ae3c3e83e2c330498d211e6b7693534..a39bd415faa45403247e6af89a32df4dd3560b3e:/src/Phorkie/File.php?ds=sidebyside diff --git a/src/Phorkie/File.php b/src/Phorkie/File.php index 6e71de3..34a759a 100644 --- a/src/Phorkie/File.php +++ b/src/Phorkie/File.php @@ -17,16 +17,7 @@ class File */ public $repo; - public static $arMimeTypeMap = array( - 'css' => 'text/css', - 'htm' => 'text/html', - 'html' => 'text/html', - 'js' => 'application/javascript', - 'php' => 'text/x-php', - 'txt' => 'text/plain', - ); - - public function __construct($path, Repository $repo) + public function __construct($path, Repository $repo = null) { $this->path = $path; $this->repo = $repo; @@ -43,11 +34,21 @@ class File } /** - * Returns the type of the file, as used internally by Phorkie + * Return the full path to the file + * + * @return string + */ + public function getPath() + { + return $this->path; + } + + /** + * Get file extension without dot * * @return string */ - public function getType() + public function getExt() { return substr($this->path, strrpos($this->path, '.') + 1); } @@ -63,22 +64,13 @@ class File * Yes, geshi needs to be in your include path * We use the mediawiki geshi extension package. */ - require 'MediaWiki/geshi/geshi/geshi.php'; - $geshi = new \GeSHi($this->getContent(), $this->getType()); + require_once 'MediaWiki/geshi/geshi/geshi.php'; + $geshi = new \GeSHi($this->getContent(), $this->getGeshiType()); $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); $geshi->set_header_type(GESHI_HEADER_DIV); return $geshi->parse_code(); } - public function getMimeType() - { - $type = $this->getType(); - if (!isset(static::$arMimeTypeMap[$type])) { - return null; - } - return static::$arMimeTypeMap[$type]; - } - /** * Get a link to the file * @@ -95,6 +87,30 @@ class File } throw new Exception('Unknown type'); } + + /** + * Returns the type of the file, as used by Geshi + * + * @return string + */ + public function getGeshiType() + { + $ext = $this->getExt(); + if (isset($GLOBALS['phorkie']['languages'][$ext]['geshi'])) { + $ext = $GLOBALS['phorkie']['languages'][$ext]['geshi']; + } + + return $ext; + } + + public function getMimeType() + { + $ext = $this->getExt(); + if (!isset($GLOBALS['phorkie']['languages'][$ext])) { + return null; + } + return $GLOBALS['phorkie']['languages'][$ext]['mime']; + } } ?> \ No newline at end of file