X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/3543bfd4d6c2ff90417d775b4eac74e1f2bd8d10..6bde4b82ec04ee5a1622220663bcacca2ec301d6:/src/phorkie/Repository/Post.php diff --git a/src/phorkie/Repository/Post.php b/src/phorkie/Repository/Post.php index d104a8c..90304bb 100644 --- a/src/phorkie/Repository/Post.php +++ b/src/phorkie/Repository/Post.php @@ -15,11 +15,14 @@ class Repository_Post * * @return boolean True if the post was successful */ - public function process($postData) + public function process($postData, $sessionData) { if (!isset($postData['files'])) { return false; } + if (!$this->hasContent($postData)) { + return false; + } if (!$this->repo) { $this->repo = $this->createRepo(); @@ -55,7 +58,9 @@ class Repository_Post if ($name == '') { if ($bUpload) { - $name = Tools::sanitizeFilename($_FILES['files']['name'][$num]['upload']); + $name = Tools::sanitizeFilename( + $_FILES['files']['name'][$num]['upload'] + ); } else { $name = $this->getNextNumberedFile('phork') . '.' . $arFile['type']; @@ -99,13 +104,18 @@ class Repository_Post $bCommit = true; } else if ($bUpload) { move_uploaded_file( - $_FILES['files']['tmp_name'][$num]['upload'], $file->getFullPath() + $_FILES['files']['tmp_name'][$num]['upload'], + $file->getFullPath() ); $command = $vc->getCommand('add') ->addArgument($file->getFilename()) ->execute(); $bCommit = true; - } else if ($bNew || (isset($arFile['content']) && $file->getContent() != $arFile['content'])) { + } else if ($bNew + || (isset($arFile['content']) + && $file->getContent() != $arFile['content'] + ) + ) { file_put_contents($file->getFullPath(), $arFile['content']); $command = $vc->getCommand('add') ->addArgument($file->getFilename()) @@ -114,11 +124,26 @@ class Repository_Post } } + if (isset($sessionData['identity'])) { + $notes = $sessionData['identity']; + } else { + $notes = $sessionData['ipaddr']; + } + if ($bCommit) { $vc->getCommand('commit') ->setOption('message', '') ->setOption('allow-empty-message') - ->setOption('author', 'Anonymous ') + ->setOption( + 'author', + $sessionData['name'] . ' <' . $sessionData['email'] . '>' + ) + ->execute(); + //FIXME: git needs ref BEFORE add + //quick hack until http://pear.php.net/bugs/bug.php?id=19605 is fixed + $vc->getCommand('notes --ref=identity add') + ->setOption('force') + ->setOption('message', "$notes") ->execute(); $bChanged = true; } @@ -137,6 +162,19 @@ class Repository_Post return true; } + protected function hasContent($postData) + { + foreach ($postData['files'] as $num => $arFile) { + if ($_FILES['files']['error'][$num]['upload'] == 0) { + return true; + } + if ($arFile['content'] != '') { + return true; + } + } + return false; + } + public function createRepo() { $rs = new Repositories(); @@ -145,7 +183,9 @@ class Repository_Post $vc->getCommand('init') //this should be setOption, but it fails with a = between name and value ->addArgument('--separate-git-dir') - ->addArgument($GLOBALS['phorkie']['cfg']['gitdir'] . '/' . $repo->id . '.git') + ->addArgument( + $GLOBALS['phorkie']['cfg']['gitdir'] . '/' . $repo->id . '.git' + ) ->addArgument($repo->workDir) ->execute(); @@ -181,7 +221,7 @@ class Repository_Post protected function findExtForType($type) { - $ext = 'text/plain'; + $ext = 'txt'; foreach ($GLOBALS['phorkie']['languages'] as $lext => $arLang) { if ($arLang['mime'] == $type) { $ext = $lext;