X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/d2dbd0d543a8915ab8553a6565a2227894aa3d7e..69e4391bfb53ce2d7a3a42f69e37bbf136d3ee09:/src/phorkie/Repository/Post.php diff --git a/src/phorkie/Repository/Post.php b/src/phorkie/Repository/Post.php index 226c2d8..511a83c 100644 --- a/src/phorkie/Repository/Post.php +++ b/src/phorkie/Repository/Post.php @@ -5,6 +5,16 @@ class Repository_Post { public $repo; + /** + * When a new file is created during processing, its name + * is stored here for later use. + * + * @var string + */ + public $newfileName; + + + public function __construct(Repository $repo = null) { $this->repo = $repo; @@ -76,6 +86,7 @@ class Repository_Post //automatically append file extension if none is there $name .= '.' . $arFile['type']; } + $this->newfileName = $name; } else if (!$this->repo->hasFile($orignalName)) { //unknown file //FIXME: Show error message @@ -116,6 +127,10 @@ class Repository_Post && $file->getContent() != $arFile['content'] ) ) { + $dir = dirname($file->getFullPath()); + if (!is_dir($dir)) { + mkdir($dir, 0777, true); + } file_put_contents($file->getFullPath(), $arFile['content']); $command = $vc->getCommand('add') ->addArgument($file->getFilename()) @@ -147,6 +162,10 @@ class Repository_Post ->setOption('force') ->setOption('message', "$notes") ->execute(); + //update info for dumb git HTTP transport + //the post-update hook should do that IMO, but does not somehow + $vc->getCommand('update-server-info')->execute(); + $bChanged = true; } @@ -224,13 +243,23 @@ class Repository_Post return $prefix . $num; } - protected function getType($content) + public function getType($content, $returnError = false) { + if (getenv('PATH') == '') { + //php-fpm does not fill $PATH by default + // we have to work around that since System::which() uses it + putenv('PATH=/usr/local/bin:/usr/bin:/bin'); + } + $tmp = tempnam(sys_get_temp_dir(), 'phorkie-autodetect-'); file_put_contents($tmp, $content); - $type = \MIME_Type_PlainDetect::autoDetect($tmp); + $type = Tool_MIME_Type_PlainDetect::autoDetect($tmp); unlink($tmp); + if ($returnError && $type instanceof \PEAR_Error) { + return $type; + } + return $this->findExtForType($type); }