X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/1797cbc2b010552b54e9d070820fa9cbc9ce3af9..7ccd696a9a83b0bd897d0ae770239c2246e201d3:/www/fork-remote.php diff --git a/www/fork-remote.php b/www/fork-remote.php index dd58165..096f432 100644 --- a/www/fork-remote.php +++ b/www/fork-remote.php @@ -6,19 +6,54 @@ namespace phorkie; */ require_once 'www-header.php'; -if (isset($_POST['remote_url'])) { - $fr = new ForkRemote($_POST['remote_url']); - $fr->parse(); - if ($fr->hasUniqueGitUrl()) { - //FIXME: fork +$error = null; +$urls = null; +if (isset($_REQUEST['remote_url'])) { + if (substr($_REQUEST['remote_url'], 0, 9) == 'web+fork:') { + $_REQUEST['remote_url'] = substr($_REQUEST['remote_url'], 9); + } + + $fr = new ForkRemote($_REQUEST['remote_url']); + if (false === $fr->parse()) { + //no url found + $error = $fr->error; + } else if (false !== ($gitUrl = $fr->getUniqueGitUrl())) { + if (isset($_POST['orig_url'])) { + $fr->setUrl($_POST['orig_url']); + } + $forker = new Forker(); + try { + $new = $forker->forkRemote( + $gitUrl['url'], $fr->getUrl(), $gitUrl['title'] + ); + FlashMessage::save('Remote paste has been forked'); + redirect($new->getLink('display', null, true)); + } catch (\Exception $e) { + $error = $e->getMessage(); + } + } else { + //multiple urls found + $urls = $fr->getGitUrls(); + } +} + +$selsize = 0; +if (is_array($urls)) { + foreach ($urls as $group) { + ++$selsize; + if (count($group) > 1) { + $selsize += count($group); + } } - //FIXME: display error or selection list } render( 'fork-remote', array( - 'remote_url' => isset($_POST['remote_url']) ? $_POST['remote_url'] : '' + 'remote_url' => isset($_REQUEST['remote_url']) ? $_REQUEST['remote_url'] : '', + 'error' => $error, + 'urls' => $urls, + 'urlselsize' => $selsize, ) ); ?>