aboutsummaryrefslogtreecommitdiff
path: root/src/phorkie
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2012-04-17 19:53:13 +0200
committerChristian Weiske <cweiske@cweiske.de>2012-04-17 19:53:13 +0200
commit5d76ec85a500321127ac879ffaa0aabd686bb7bf (patch)
treea64cf47a47ea70bad57ba0c7ec10dd05465811f1 /src/phorkie
parent7290b224b0ddeb369349d61f928190b96b6013b1 (diff)
downloadphorkie-5d76ec85a500321127ac879ffaa0aabd686bb7bf.tar.gz
phorkie-5d76ec85a500321127ac879ffaa0aabd686bb7bf.zip
raw download for older revisions
Diffstat (limited to 'src/phorkie')
-rw-r--r--src/phorkie/File.php7
-rw-r--r--src/phorkie/Repository.php33
2 files changed, 25 insertions, 15 deletions
diff --git a/src/phorkie/File.php b/src/phorkie/File.php
index bc0950f..acc44cd 100644
--- a/src/phorkie/File.php
+++ b/src/phorkie/File.php
@@ -102,7 +102,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();
}
diff --git a/src/phorkie/Repository.php b/src/phorkie/Repository.php
index 6c71b47..c854cf1 100644
--- a/src/phorkie/Repository.php
+++ b/src/phorkie/Repository.php
@@ -119,6 +119,16 @@ class Repository
*/
public function getFiles()
{
+ $files = $this->getFilePaths();
+ $arFiles = array();
+ foreach ($files as $name) {
+ $arFiles[] = new File($name, $this);
+ }
+ return $arFiles;
+ }
+
+ protected function getFilePaths()
+ {
if ($this->hash === null) {
$hash = 'HEAD';
} else {
@@ -129,28 +139,23 @@ class Repository
->setOption('name-only')
->addArgument($hash)
->execute();
- $files = explode("\n", trim($output));
- $arFiles = array();
- foreach ($files as $name) {
- $arFiles[] = new File($name, $this);
- }
- return $arFiles;
+ return explode("\n", trim($output));
}
public function getFileByName($name, $bHasToExist = true)
{
- $base = basename($name);
- if ($base != $name) {
- throw new Exception('No directories supported for now');
- }
+ $name = Tools::sanitizeFilename($name);
if ($name == '') {
throw new Exception_Input('Empty file name given');
}
- $fullpath = $this->workDir . '/' . $base;
- if ($bHasToExist && !is_readable($fullpath)) {
- throw new Exception_Input('File does not exist');
+
+ if ($bHasToExist) {
+ $files = $this->getFilePaths();
+ if (array_search($name, $files) === false) {
+ throw new Exception_Input('File does not exist');
+ }
}
- return new File($base, $this);
+ return new File($name, $this);
}
public function hasFile($name)