remote forking: use the original http/https url in description
[phorkie.git] / www / fork-remote.php
index dd581650814e1aeb5bd27b6ce98f7f05df2fa10d..05677485e4156a5066dbf69842cd1f8750a6ed73 100644 (file)
@@ -6,19 +6,43 @@ namespace phorkie;
  */
 require_once 'www-header.php';
 
+$error = null;
+$urls  = null;
 if (isset($_POST['remote_url'])) {
     $fr = new ForkRemote($_POST['remote_url']);
-    $fr->parse();
-    if ($fr->hasUniqueGitUrl()) {
-        //FIXME: fork
+    if (false === $fr->parse()) {
+        //no url found
+        $error = 'No git:// clone URL found';
+    } else if (false !== ($gitUrl = $fr->getUniqueGitUrl())) {
+        if (isset($_POST['orig_url'])) {
+            $fr->setUrl($_POST['orig_url']);
+        }
+        $forker = new Forker();
+        $new    = $forker->forkRemote($gitUrl, $fr->getUrl());
+        redirect($new->getLink('display'));
+    } 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($_POST['remote_url']) ? $_POST['remote_url'] : '',
+        'error'      => $error,
+        'urls'       => $urls,
+        'urlselsize' => $selsize,
     )
 );
 ?>