X-Git-Url: http://git.pjr.cc/?p=gwvp-mini.git;a=blobdiff_plain;f=gwvpmini%2Fgwvpmini_gitrepo.php;h=3ea498cba3a6f31899851ab88f50822816bf972e;hp=1f42a7fab7bb01f355279ea7c4496e036f7d3478;hb=5433c422794029259de4512640485aeb650e0c87;hpb=4d6a42b605b8c52c5621fb704b284e4c12672755
diff --git a/gwvpmini/gwvpmini_gitrepo.php b/gwvpmini/gwvpmini_gitrepo.php
index 1f42a7f..3ea498c 100644
--- a/gwvpmini/gwvpmini_gitrepo.php
+++ b/gwvpmini/gwvpmini_gitrepo.php
@@ -51,8 +51,10 @@ function gwvpmini_RepoMainPage()
function gwvpmini_RepoMainPageBody()
{
- gwvpmini_GitCreateRepoForm();
+ global $BASE_URL;
+
if(gwvpmini_isLoggedIn()) {
+ gwvpmini_GitCreateRepoForm();
$repos = gwvpmini_GetOwnedRepos($_SESSION["username"]);
if(!$repos) {
echo "You currently own no repos
";
@@ -62,12 +64,19 @@ function gwvpmini_RepoMainPageBody()
foreach($repos as $repo) {
$name = $repo["name"];
$desc = $repo["desc"];
- echo "
$name | $desc | ";
+ echo "
$name | $desc | ";
echo "";
- $repo_base = gwvpmini_getConfigVal("repodir");
- $cmd = "git --git-dir=\"$repo_base/$name.git\" log -1 2>&1";
- error_log("CMD: $cmd");
- system("$cmd");
+ error_log("CMD: $cmd");
+ //system("$cmd");
+ $fls = popen($cmd, "r");
+ $tks = "";
+ if($fls !== false) while(!feof($fls)) {
+ $tks .= fread($fls,1024);
+ }
+
+ if($tks == "") {
+ echo "No Log Info Yet";
+ } else echo $tks;
echo " | ";
echo "
";
}
@@ -90,6 +99,9 @@ function gwvpmini_GitLogProvider()
*
* Or... should we instead just list every repo?
*/
+
+ global $BASE_URL;
+
echo "Repo Activity
";
if(gwvpmini_isLoggedIn()) {
$repos = gwvpmini_GetOwnedRepos($_SESSION["username"]);
@@ -101,12 +113,21 @@ function gwvpmini_GitLogProvider()
foreach($repos as $repo) {
$name = $repo["name"];
$desc = $repo["desc"];
- echo "$name | $desc | ";
+ echo "
$name | $desc | ";
echo "";
$repo_base = gwvpmini_getConfigVal("repodir");
- $cmd = "git --git-dir=\"$repo_base/$name.git\" log -1 2>&1";
+ $cmd = "git --git-dir=\"$repo_base/$name.git\" log -1 2> /dev/null";
error_log("CMD: $cmd");
- system("$cmd");
+ //system("$cmd");
+ $fls = popen($cmd, "r");
+ $tks = "";
+ if($fls !== false) while(!feof($fls)) {
+ $tks .= fread($fls,1024);
+ }
+
+ if($tks == "") {
+ echo "No Log Info Yet";
+ } else echo $tks;
echo " | ";
echo "
";
}
@@ -124,23 +145,47 @@ function gwvpmini_GitCreateRepoForm()
echo "Create Repo |
";
echo "Repo Name | |
";
echo "Repo Description | |
";
+ echo "Read Permissions | ";
+ echo "";
+ echo " |
";
echo " |
";
echo "";
echo "";
-}
+}
function gwvpmini_RepoCreate()
{
global $BASE_URL;
- if(gwvpmini_isLoggedIn()) {
+ // TODO: check the stuff out
+ // first reponame
+ $inputcheck = true;
+
+ // remove a .git at the end if it was input
+ $_REQUEST["reponame"] = preg_replace("/\.git$/", "", $_REQUEST["reponame"]);
+
+ // check for valid chars
+ $replcheck = preg_replace("/[a-zA-Z0-9_\-\.]/", "", $_REQUEST["reponame"]);
+ if(strlen($replcheck)>0) {
+ $inputcheck = false;
+ $inputcheckerror = "Repo name contains invalid characters, repos can only contain a-z, A-Z, 0-9, _, - and .";
+ }
+
+ if(!$inputcheck) {
+ gwvpmini_SendMessage("error", "$inputcheckerror");
+ header("Location: $BASE_URL/repos");
+ } else if(gwvpmini_isLoggedIn()) {
//gwvpmini_createGitRepo($name, $ownerid, $desc, $bundle=null, $defaultperms=0)
if(gwvpmini_HaveRepo($_REQUEST["reponame"])) {
gwvpmini_SendMessage("error", "Repo ".$_REQUEST["reponame"]." already exists");
header("Location: $BASE_URL/repos");
} else {
- gwvpmini_createGitRepo($_REQUEST["reponame"], $_SESSION["id"], $_REQUEST["repodesc"]);
+ gwvpmini_createGitRepo($_REQUEST["reponame"], $_SESSION["id"], $_REQUEST["repodesc"], $_REQUEST["perms"]);
gwvpmini_SendMessage("info", "Repo ".$_REQUEST["reponame"]." has been created");
header("Location: $BASE_URL/repos");
}
@@ -157,4 +202,40 @@ function gwvpmini_HaveRepo($reponame)
if(file_exists("$repo_base/$reponame.git")) return true;
}
+
+function gwvpmini_RemoveRepo($rid)
+{
+ $repo_base = gwvpmini_getConfigVal("repodir");
+
+ $repdet = gwvpmini_getRepo(null, null, $rid);
+
+ $rname = $repdet["name"];
+
+ error_log("FROM PANTS:".print_r($repdet,true)." ----------- ".print_r($rname, true));
+
+ if($repdet != false && $rname != "") {
+ if(file_exists("$repo_base/$rname.git")) {
+ // recursive remove - frightening
+ if(gwvpmini_RecursiveDelete("$repo_base/$rname.git")) {
+ gwvpmini_RemoveRepoDB($rid);
+ }
+ }
+ } return false;
+}
+
+function gwvpmini_RecursiveDelete($fpath)
+{
+ error_log("RECURSEDETELE: ".$fpath);
+ if(is_file($fpath)){
+ return @unlink($fpath);
+ }
+ elseif(is_dir($fpath)){
+ $scan = glob(rtrim($fpath,'/').'/*');
+ foreach($scan as $index=>$path){
+ gwvpmini_RecursiveDelete($path);
+ }
+ return @rmdir($fpath);
+ }
+}
+
?>
\ No newline at end of file