simple cache for rendered files
[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($_REQUEST['remote_url'])) {
12     if (substr($_REQUEST['remote_url'], 0, 9) == 'web+fork:') {
13         $_REQUEST['remote_url'] = substr($_REQUEST['remote_url'], 9);
14     }
15
16     $fr = new ForkRemote($_REQUEST['remote_url']);
17     if (false === $fr->parse()) {
18         //no url found
19         $error = $fr->error;
20     } else if (false !== ($gitUrl = $fr->getUniqueGitUrl())) {
21         if (isset($_POST['orig_url'])) {
22             $fr->setUrl($_POST['orig_url']);
23         }
24         $forker = new Forker();
25         try {
26             $new = $forker->forkRemote(
27                 $gitUrl['url'], $fr->getUrl(), $gitUrl['title']
28             );
29             FlashMessage::save('Remote paste has been forked');
30             redirect($new->getLink('display', null, true));
31         } catch (\Exception $e) {
32             $error = $e->getMessage();
33         }
34     } else {
35         //multiple urls found
36         $urls = $fr->getGitUrls();
37     }
38 }
39
40 $selsize = 0;
41 if (is_array($urls)) {
42     foreach ($urls as $group) {
43         ++$selsize;
44         if (count($group) > 1) {
45             $selsize += count($group);
46         }
47     }
48 }
49
50 render(
51     'fork-remote',
52     array(
53         'remote_url' => isset($_REQUEST['remote_url']) ? $_REQUEST['remote_url'] : '',
54         'error'      => $error,
55         'urls'       => $urls,
56         'urlselsize' => $selsize,
57     )
58 );
59 ?>