git.cweiske.de
/
phorkie.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
automatic detection of file types
[phorkie.git]
/
src
/
phorkie
/
File.php
diff --git
a/src/phorkie/File.php
b/src/phorkie/File.php
index 3c6c56d7e432912d00c47db9546fd7aed9cc62ee..331f2e546be5b72b96c9d96960ca8b7c4f6526e6 100644
(file)
--- a/
src/phorkie/File.php
+++ b/
src/phorkie/File.php
@@
-61,7
+61,11
@@
class File
public function getContent()
{
if ($this->repo->hash) {
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();
}
->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'];
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'];
} 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';
}
}
$class = '\\phorkie\\Renderer_Image';
}
}
@@
-102,7
+106,12
@@
class File
public function getLink($type, $option = null)
{
if ($type == 'raw') {
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();
}
} else if ($type == 'tool') {
return '/' . $this->repo->id . '/tool/' . $option . '/' . $this->getFilename();
}
@@
-123,6
+132,10
@@
class File
*/
public function getToolInfos()
{
*/
public function getToolInfos()
{
+ if ($this->repo->hash !== null) {
+ return array();
+ }
+
$tm = new Tool_Manager();
return $tm->getSuitable($this);
}
$tm = new Tool_Manager();
return $tm->getSuitable($this);
}
@@
-135,12
+148,20
@@
class File
public function isText()
{
$ext = $this->getExt();
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'];
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';
}
}
}
}