X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/b5cad4fdafacd1d1eced5784e449996db5dc8e84..a39bd415faa45403247e6af89a32df4dd3560b3e:/src/Phorkie/File.php diff --git a/src/Phorkie/File.php b/src/Phorkie/File.php index 44970ed..34a759a 100644 --- a/src/Phorkie/File.php +++ b/src/Phorkie/File.php @@ -17,31 +17,6 @@ class File */ public $repo; - /** - * Maps file extensions to MIME Types - * - * @var array - */ - public static $arMimeTypeMap = array( - 'css' => 'text/css', - 'htm' => 'text/html', - 'html' => 'text/html', - 'js' => 'application/javascript', - 'php' => 'text/x-php', - 'txt' => 'text/plain', - 'xml' => 'text/xml', - ); - - /** - * Maps file extensions to geshi types - * - * @var array - */ - public static $arTypeMap = array( - 'htm' => 'xml', - 'html' => 'xml', - ); - public function __construct($path, Repository $repo = null) { $this->path = $path; @@ -78,21 +53,6 @@ class File return substr($this->path, strrpos($this->path, '.') + 1); } - /** - * Returns the type of the file, as used by Geshi - * - * @return string - */ - public function getType() - { - $ext = $this->getExt(); - if (isset(static::$arTypeMap[$ext])) { - $ext = static::$arTypeMap[$ext]; - } - - return $ext; - } - public function getContent() { return file_get_contents($this->path); @@ -105,21 +65,12 @@ class File * We use the mediawiki geshi extension package. */ require_once 'MediaWiki/geshi/geshi/geshi.php'; - $geshi = new \GeSHi($this->getContent(), $this->getType()); + $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() - { - $ext = $this->getExt(); - if (!isset(static::$arMimeTypeMap[$ext])) { - return null; - } - return static::$arMimeTypeMap[$ext]; - } - /** * Get a link to the file * @@ -136,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