2 global $HOME_PAGE_PROVIDERS;
\r
5 $CALL_ME_FUNCTIONS["repoadmin"] = "gwvpmini_RepoCallMe";
6 $HOME_PAGE_PROVIDERS["gitlog"] = "gwvpmini_GitLogProvider";
\r
9 // the home_page_provders bit is an array
\r
11 $MENU_ITEMS["10repos"]["text"] = "Repos";
\r
12 $MENU_ITEMS["10repos"]["link"] = "$BASE_URL/repos";
15 function gwvpmini_RepoCallMe()
\r
18 error_log("in repoadmin callme - err?");
19 error_log(print_r($_REQUEST, true));
\r
20 if(isset($_REQUEST["q"])) {
21 error_log("in repoadmin callme, for Q");
\r
22 $query = $_REQUEST["q"];
\r
23 $qspl = explode("/", $query);
\r
24 if(isset($qspl[0])) {
\r
25 if($qspl[0] == "repos") {
26 error_log("in repos call");
28 if($qspl[1] == "create") {
29 return "gwvpmini_RepoCreate";
31 return "gwvpmini_RepoMainPage";
34 error_log("i got here, where next?");
\r
35 return "gwvpmini_RepoMainPage";
37 } else return false;
\r
46 function gwvpmini_RepoMainPage()
\r
48 gwvpmini_goMainPage("gwvpmini_RepoMainPageBody");
\r
52 function gwvpmini_RepoMainPageBody()
54 gwvpmini_GitCreateRepoForm();
55 if(gwvpmini_isLoggedIn()) {
56 $repos = gwvpmini_GetOwnedRepos($_SESSION["username"]);
58 echo "You currently own no repos<br>";
60 echo "<h2>Your Repos</h2>";
61 echo "<table border=\"1\"><tr><th>Repo Name</th><th>Repo Description</th><th>Last Log</th></tr>";
62 foreach($repos as $repo) {
63 $name = $repo["name"];
64 $desc = $repo["desc"];
65 echo "<tr><td>$name</td><td>$desc</td>";
67 $repo_base = gwvpmini_getConfigVal("repodir");
\r
68 $cmd = "git --git-dir=\"$repo_base/$name.git\" log -1 2>&1";
\r
69 error_log("CMD: $cmd");
\r
81 function gwvpmini_GitLogProvider()
\r
84 * The home page provider will:
\r
85 * 1) show the last 10 commits for every repository - though, excluding private repos
\r
86 * 2) if loged in, show the last commit on any repo's the user owns
\r
88 * So i need a table thats going to list "writes" by user - as in POST writes but only
\r
89 * put that info into the stats (doesnt exist) db if the repo is publically readable
\r
91 * Or... should we instead just list every repo?
\r
93 echo "<h2>Repo Activity</h2>";
94 if(gwvpmini_isLoggedIn()) {
\r
95 $repos = gwvpmini_GetOwnedRepos($_SESSION["username"]);
97 echo "You currently own no repos<br>";
99 echo "<h2>Your Repos</h2>";
100 echo "<table border=\"1\"><tr><th>Repo Name</th><th>Repo Description</th><th>Repo Log</th></tr>";
101 foreach($repos as $repo) {
102 $name = $repo["name"];
103 $desc = $repo["desc"];
104 echo "<tr><td>$name</td><td>$desc</td>";
106 $repo_base = gwvpmini_getConfigVal("repodir");
107 $cmd = "git --git-dir=\"$repo_base/$name.git\" log -1 2>&1";
108 error_log("CMD: $cmd");
118 function gwvpmini_GitCreateRepoForm()
122 echo "<form method=\"post\" action=\"$BASE_URL/repos/create\">";
123 echo "<table border=\"1\">";
124 echo "<tr><th colspan=\"2\">Create Repo</th></tr>";
125 echo "<tr><th>Repo Name</th><td><input type=\"text\" name=\"reponame\"></td></tr>";
126 echo "<tr><th>Repo Description</th><td><input type=\"text\" name=\"repodesc\"></td></tr>";
127 echo "<tr><th>Read Permissions</th><td>";
128 echo "<select name=\"perms\">";
129 echo "<option value=\"perms-public\">Anyone Can Read</option>";
130 echo "<option value=\"perms-registered\">Must be Registered To Read</option>";
131 echo "<option value=\"perms-onlywrite\">Only Writers can Read</option>";
134 echo "<tr><td colspan=\"2\"><input type=\"submit\" name=\"Create\" value=\"Create\"></td></tr>";
139 function gwvpmini_RepoCreate()
144 // TODO: check the stuff out
148 // remove a .git at the end if it was input
149 $_REQUEST["reponame"] = preg_replace("/\.git$/", "", $_REQUEST["reponame"]);
151 // check for valid chars
152 $replcheck = preg_replace("/[a-zA-Z0-9_\-\.]/", "", $_REQUEST["reponame"]);
153 if(strlen($replcheck)>0) {
155 $inputcheckerror = "Repo name contains invalid characters, repos can only contain a-z, A-Z, 0-9, _, - and .";
159 gwvpmini_SendMessage("error", "$inputcheckerror");
\r
160 header("Location: $BASE_URL/repos");
161 } else if(gwvpmini_isLoggedIn()) {
162 //gwvpmini_createGitRepo($name, $ownerid, $desc, $bundle=null, $defaultperms=0)
163 if(gwvpmini_HaveRepo($_REQUEST["reponame"])) {
164 gwvpmini_SendMessage("error", "Repo ".$_REQUEST["reponame"]." already exists");
\r
165 header("Location: $BASE_URL/repos");
167 gwvpmini_createGitRepo($_REQUEST["reponame"], $_SESSION["id"], $_REQUEST["repodesc"], $_REQUEST["perms"]);
168 gwvpmini_SendMessage("info", "Repo ".$_REQUEST["reponame"]." has been created");
169 header("Location: $BASE_URL/repos");
172 gwvpmini_SendMessage("info", "Must be logged in to create repo");
173 header("Location: $BASE_URL/repos");
177 function gwvpmini_HaveRepo($reponame)
179 $repo_base = gwvpmini_getConfigVal("repodir");
181 if(file_exists("$repo_base/$reponame.git")) return true;