374c8b89ab8e4105009e97dffae577b54c0515db
[phorkie.git] / www / fork-remote.php
1 <?php
2 namespace phorkie;
3 /**
4  * Fork a remote repository.
5  * Displays a URL selection form when multiple git urls have been found
6  */
7 require_once 'www-header.php';
8
9 $error = null;
10 $urls  = null;
11 if (isset($_POST['remote_url'])) {
12     $fr = new ForkRemote($_POST['remote_url']);
13     if (false === $fr->parse()) {
14         //no url found
15         $error = 'No git:// clone URL found';
16     } else if (false !== ($gitUrl = $fr->getUniqueGitUrl())) {
17         $forker = new Forker();
18         $new    = $forker->forkRemote($gitUrl);
19         redirect($new->getLink('display'));
20     } else {
21         //multiple urls found
22         $urls = $fr->getGitUrls();
23     }
24 }
25
26 $selsize = 0;
27 if (is_array($urls)) {
28     foreach ($urls as $group) {
29         ++$selsize;
30         if (count($group) > 1) {
31             $selsize += count($group);
32         }
33     }
34 }
35
36 render(
37     'fork-remote',
38     array(
39         'remote_url' => isset($_POST['remote_url']) ? $_POST['remote_url'] : '',
40         'error'      => $error,
41         'urls'       => $urls,
42         'urlselsize' => $selsize,
43     )
44 );
45 ?>