66cb85b02775a71c9d684d656324b221e273e7c9
[gwvp.git] / gwvplib / gwvprepoadmin.php
1 <?php
2 $CALL_ME_FUNCTIONS["repoadmin"] = "gwvp_RepoAdminCallMe";
3
4 $MENU_ITEMS["20repos"]["text"] = "Repo Admin";
5 $MENU_ITEMS["20repos"]["link"] = "$BASE_URL/admin/repos";
6
7 function gwvp_RepoAdminCallMe()
8 {
9         
10         error_log("in repoadmin callme");
11         if(isset($_REQUEST["q"])) {
12                 $query = $_REQUEST["q"];
13                 $qspl = explode("/", $query);
14                 if(isset($qspl[0]) && isset($qspl[1])) {
15                         if($qspl[0] == "admin" && $qspl[1] == "repos") {
16                                 error_log("i got here, where next?");
17                                 if(isset($qspl[2])) {
18                                         switch($qspl[2]) {
19                                                 case "create":
20                                                         return "gwvp_CreateRepoPage";
21                                                         break;
22                                                 case "docreate":
23                                                         return "gwvp_DoCreateRepoPage";
24                                                         break;
25                                                 default:
26                                                         return "gwvp_RepoAdminPage";
27                                         }                                       
28                                 } else {
29                                         return "gwvp_RepoAdminPage";
30                                 }
31                         }
32                 } 
33                 else return false;
34         }
35         
36         return false;
37 }
38
39 function gwvp_RepoAdminPage()
40 {
41         gwvp_goMainPage("gwvp_RepoAdminPageBody");
42 }
43
44 function gwvp_CreateRepoPage()
45 {
46         gwvp_goMainPage("gwvp_CreateRepoPageBody");
47 }
48
49 //function gwvp_createGitRepo($name, $ownerid, $desc, $defaultperms=0, $bundle=null)
50
51 function gwvp_DoCreateRepoPage()
52 {
53         global $BASE_URL;
54         
55         $reponame = $_REQUEST["reponame"];
56         $repodesc = $_REQUEST["repodesc"];
57         
58         $defperms = 0;
59         
60         if(isset($_REQUEST["defperms"])) {
61                 switch($_REQUEST["defperms"]) {
62                         case "permsall":
63                                 $defperms = 0;
64                                 break;
65                         case "permsmeonly":
66                                 $defperms = 1;
67                                 break;
68                         case "permsinvisible":
69                                 $defperms = 2;
70                                 break;
71                         default:
72                                 $defperms = 2;
73                 }
74         }
75         
76         // TODO: this code is bollocks, need to redo
77         if(gwvp_repoExists($reponame)) {
78                 gwvp_SendMessage("error", "a repository with the name <b>\"$reponame\"</b> already exists");
79                 //header("Location: $BASE_URL/admin/repos/create?reponameobv=$reponame&repodescobv=$repodesc");
80         } else if($_FILES["bundlefile"]["size"] > 0) { //               if(isset($_FILES["bundlefile"]["size"]))  <--- this needs to happen here TODO
81                 error_log("bundle file tmpname is ".$_FILES["bundlefile"]["tmp_name"]);
82                 // function gwvp_createGitRepo($name, $ownerid, $desc, $defaultperms=0, $bundle=null)
83                 // TODO: deal with default perms
84                 gwvp_createGitRepo($reponame, $_SESSION["id"], $repodesc, $_FILES["bundlefile"]["tmp_name"], $defperms);
85                 gwvp_SendMessage("info", "Repo, $reponame, created");
86         } else if(gwvp_createGitRepo($reponame, $_SESSION["id"], $repodesc, null, $defperms)) {
87                 gwvp_SendMessage("info", "Repo, $reponame, created");
88         }
89         header("Location: $BASE_URL/admin/repos");
90         
91         
92 }
93
94 function gwvp_CreateRepoPageBody()
95 {
96         global $BASE_URL;
97         
98         $repo_base = gwvp_getConfigVal("repodir");
99         
100         $reponameobv = "";
101         $repodescobv = "";
102         
103         if(isset($_REQUEST["reponameobv"])) $reponameobv = $_REQUEST["reponameobv"];
104         if(isset($_REQUEST["repodescobv"])) $repodescobv = $_REQUEST["repodescobv"];
105         
106         echo "<h2>Create a Repo</h2>";
107         echo "<form method=\"post\" enctype=\"multipart/form-data\" action=\"$BASE_URL/admin/repos/docreate\">";
108         echo "<table>";
109         echo "<tr><td>Repository Name</td><td bgcolor=\"#eeeeee\"><input type=\"text\" name=\"reponame\" value=\"$reponameobv\"></td></tr>";
110         echo "<tr><td>Repository Description</td><td bgcolor=\"#eeeeee\"><input type=\"text\" name=\"repodesc\" value=\"$repodescobv\"></td></tr>";
111         echo "<tr><td>Repository Bundle</td><td bgcolor=\"#eeeeee\"><input type=\"file\" name=\"bundlefile\"></td><td><i>Create a bundle for pro-creating the git repository (export your git bundle with \"git bundle create /tmp/filename --branches\")<br>";
112         echo "Typically you wouldn't use this as its easier to \"push\" to the repo after its created by adding it as a remote and pushing your local master branch</i></td></tr>";
113         
114         echo "<tr><td>Default Permisison Set</td><td bgcolor=\"#eeeeee\">";
115         
116         echo "<table>";
117         echo "<tr><td><input type=\"radio\" name=\"defperms\" value=\"permsall\" checked></td><td>Anyone Can Read, Only you can write</td></tr>";
118         echo "<tr><td><input type=\"radio\" name=\"defperms\" value=\"permsmeonly\"></td><td>Anyone can see the repository exists, but only you can read or write to it</td></tr>";
119         echo "<tr><td><input type=\"radio\" name=\"defperms\" value=\"permsinvisible\"></td><td>Repository only visible to you</td></tr>";
120         echo "</table>";
121         
122         
123         echo "</td><td><i>Permissions can be changed in repository management later</i></td></tr>";
124         
125         echo "</table>";
126         
127         
128         
129         
130         
131         echo "<input type=\"submit\" name=\"create\" value=\"Create\"><br>";
132         echo "</form>";
133 }
134
135 function gwvp_RepoAdminPageBody()
136 {
137         // first we need a menu
138         global $BASE_URL;
139         
140         echo "<h2>Repo Management</h2>";
141         echo "<a href=\"$BASE_URL/admin/repos/create\">Create a Repo</a><br>";
142         
143         if(isset($_SESSION["isloggedin"])) {
144                 echo "<h3>Your Repo's</h3>";
145                 $ownreps = gwvp_getOwnedRepos($_SESSION["id"]);
146                 if($ownreps != false) {
147                         echo "<table border=\"1\">";
148                         echo "<tr><th>Repo Name</th><th>Repo description</th></tr>";
149                         foreach($ownreps as $repos) {
150                                 $mjay = print_r($repos, true);
151                                 error_log("snafu: $mjay");
152                                 $reponame = $repos["name"];
153                                 $repodesc = $repos["description"];
154                                 echo "<tr><td>$reponame</td><td>$repodesc</td><td><a href=\"$BASE_URL/admin/repos/manageown\">Manage</a></td></tr>";
155                         }
156                         echo "</table>";
157                 } else {
158                         echo "You own no repositories";
159                 }
160                 echo "<hr>";
161         }
162         
163         
164         // next we need a repo list - with perms checking - ug
165         // i must also remember that the home page will also contain a list of repos and that this page is solely for maintance
166         // and creation of repos - so i dont need to get over-worked about the info stored on this page outside of those activities
167         $rlist = gwvp_GetRepoList();
168         echo "<table border=\"1\"><tr><th>Repo Name</th><th>Repo Description</th><th>Repo Owner</th></tr>";
169         foreach($rlist as $u_res) {
170                 $rid = $u_res["id"];
171                 $rname = $u_res["name"];
172                 $rdesc = $u_res["description"];
173                 $rown = gwvp_getUserName($u_res["owner"]);
174                 echo "<tr><td>$rname</td><td>$rdesc</td><td>$rown</td><td><a href=\"$BASE_URL/admin/repos/modify/$rid\">Details</a></td></tr>";
175         }
176         echo "</table>";
177         
178         return;
179 }
180
181
182
183
184 ?>