X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/39bd200baed00b5b63cc62ce947ef708710ac81c..d78df0d7b8025365c00c87f545c18a810eecbd5c:/src/phorkie/File.php?ds=sidebyside diff --git a/src/phorkie/File.php b/src/phorkie/File.php index 3c6c56d..331f2e5 100644 --- a/src/phorkie/File.php +++ b/src/phorkie/File.php @@ -61,7 +61,11 @@ class File public function getContent() { if ($this->repo->hash) { - return $this->repo->getVc()->getCommand('show') + //quick hack until https://pear.php.net/bugs/bug.php?id=19385 is fixed + $cmd = new GitCommandBinary($this->repo->getVc()); + $cmd->setSubCommand('show'); + return //$this->repo->getVc()->getCommand('show') + $cmd ->addArgument($this->repo->hash . ':' . $this->path) ->execute(); } @@ -76,11 +80,11 @@ class File if (isset($GLOBALS['phorkie']['languages'][$ext]['renderer'])) { $class = $GLOBALS['phorkie']['languages'][$ext]['renderer']; + } else if ($this->isText()) { + $class = '\\phorkie\\Renderer_Geshi'; } else if (isset($GLOBALS['phorkie']['languages'][$ext]['mime'])) { $type = $GLOBALS['phorkie']['languages'][$ext]['mime']; - if (substr($type, 0, 5) == 'text/') { - $class = '\\phorkie\\Renderer_Geshi'; - } else if (substr($type, 0, 6) == 'image/') { + if (substr($type, 0, 6) == 'image/') { $class = '\\phorkie\\Renderer_Image'; } } @@ -102,7 +106,12 @@ class File public function getLink($type, $option = null) { if ($type == 'raw') { - return '/' . $this->repo->id . '/raw/' . $this->getFilename(); + if ($this->repo->hash === null) { + return '/' . $this->repo->id . '/raw/' . $this->getFilename(); + } else { + return '/' . $this->repo->id . '/rev-raw/' . $this->repo->hash + . '/' . $this->getFilename(); + } } else if ($type == 'tool') { return '/' . $this->repo->id . '/tool/' . $option . '/' . $this->getFilename(); } @@ -123,6 +132,10 @@ class File */ public function getToolInfos() { + if ($this->repo->hash !== null) { + return array(); + } + $tm = new Tool_Manager(); return $tm->getSuitable($this); } @@ -135,12 +148,20 @@ class File public function isText() { $ext = $this->getExt(); + if ($ext == '') { + //no file extension? then consider the size + $size = filesize($this->getFullPath()); + //files <= 4kiB are considered to be text + return $size <= 4096; + } + if (!isset($GLOBALS['phorkie']['languages'][$ext]['mime'])) { return false; } $type = $GLOBALS['phorkie']['languages'][$ext]['mime']; - return substr($type, 0, 5) === 'text/'; + return substr($type, 0, 5) === 'text/' + || $type == 'application/javascript'; } }