X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/ec66a5c7d17cb1e67ee066f2e9bdaf5bbc9ab614..a39bd415faa45403247e6af89a32df4dd3560b3e:/src/Phorkie/File.php diff --git a/src/Phorkie/File.php b/src/Phorkie/File.php index 6cdc833..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; @@ -59,28 +34,23 @@ class File } /** - * Get file extension without dot + * Return the full path to the file * * @return string */ - public function getExt() + public function getPath() { - return substr($this->path, strrpos($this->path, '.') + 1); + return $this->path; } /** - * Returns the type of the file, as used by Geshi + * Get file extension without dot * * @return string */ - public function getType() + public function getExt() { - $ext = $this->getExt(); - if (isset(static::$arTypeMap[$ext])) { - $ext = static::$arTypeMap[$ext]; - } - - return $ext; + return substr($this->path, strrpos($this->path, '.') + 1); } public function getContent() @@ -94,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() - { - $ext = $this->getExt(); - if (!isset(static::$arMimeTypeMap[$ext])) { - return null; - } - return static::$arMimeTypeMap[$ext]; - } - /** * Get a link to the file * @@ -126,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