Update jQuery from 1.12.4 to 3.7.1
[phorkie.git] / www / fork-remote.php
index dd581650814e1aeb5bd27b6ce98f7f05df2fa10d..096f432d34c08f15636195e430d748aec7303c2d 100644 (file)
@@ -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,
     )
 );
 ?>