X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/f88c38723e3c807769627aff2866fc3cf5c8472f..2a665e0f4eeb45c9d57df7dc7f9d853465b5fea9:/src/phorkie/Repository/Post.php diff --git a/src/phorkie/Repository/Post.php b/src/phorkie/Repository/Post.php index 0860cad..a61f2a2 100644 --- a/src/phorkie/Repository/Post.php +++ b/src/phorkie/Repository/Post.php @@ -116,6 +116,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 +151,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; } @@ -178,7 +186,15 @@ class Repository_Post if ($_FILES['files']['error'][$num]['upload'] == 0) { return true; } - if ($arFile['content'] != '') { + if (isset($arFile['content']) && $arFile['content'] != '') { + return true; + } + if (isset($arFile['name']) && $arFile['name'] != '') { + //binary files do not have content + return true; + } + if (isset($arFile['delete']) && $arFile['delete'] != '') { + //binary files do not have content return true; } } @@ -216,13 +232,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); }