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