X-Git-Url: http://git.pjr.cc/?a=blobdiff_plain;f=gwvpmini%2Fgwvpmini_db.php;h=4e939afaa6717c3fe1c73c8e4bb6f9d7faf16dc4;hb=5433c422794029259de4512640485aeb650e0c87;hp=00f20b1cbf781a099cb31429d63e78120a0702b0;hpb=529c11c6cfff0c2d8b857eed0b5ace7f3be054da;p=gwvp-mini.git diff --git a/gwvpmini/gwvpmini_db.php b/gwvpmini/gwvpmini_db.php index 00f20b1..4e939af 100644 --- a/gwvpmini/gwvpmini_db.php +++ b/gwvpmini/gwvpmini_db.php @@ -55,6 +55,7 @@ function gwvpmini_getUser($username=null, $email=null, $id=null) } + function gwvpmini_getRepo($ownerid=null, $name=null, $id=null) { $conn = gwvpmini_ConnectDB(); @@ -86,14 +87,107 @@ function gwvpmini_getRepo($ownerid=null, $name=null, $id=null) $returns["id"] = $u_res["repos_id"]; $returns["name"] = $u_res["repos_name"]; $returns["desc"] = $u_res["repos_description"]; - $returns["ownerid"] = $u_res["repos_owner"]; - $returns["perms"] = $u_res["repos_readperms"]; + $returns["ownerid"] = $u_res["repos_owner"]; + $returns["status"] = $u_res["repos_status"]; } return $returns; } +// $rid = repo id +// $uid = user id (a for "anyone", r for "registered") +// $acc = 0 or 1, 0 = no access, 1 = read access, 2 = write +// first part of ths is the "base" repo permissions +// this is spec'd as b:t where t = a (anyone can read), r (only registered can read) or x (explicit read perms) +function gwvpmini_ChangeRepoPerm($rid, $uid, $acc) +{ + $conn = gwvpmini_ConnectDB(); + + $sql = "select repos_perms from repos where repos_id='$rid'"; + + $res = $conn->query($sql); + + error_log("CHANGEREPOPERMS: call with $rid, $uid, $acc"); + + $cperms_t = ""; + foreach($res as $row) { + $cperms_t = $row[0]; + } + + if($cperms_t === false) return false; + + $permsarray = array(); + if($cperms_t == "") { + $permsarray[$uid] = $acc; + } else { + $permsarray = unserialize(base64_decode($cperms_t)); + $permsarray[$uid] = $acc; + } + + // check if base is now r or a, we can drop any 1's + if($permsarray["b"] == "a" || $permsarray["b"] == "r") { + foreach($permsarray as $key => $val) { + if($val == 1) { + unset($permsarray[$key]); + } + } + } + + $encperms = base64_encode(serialize($permsarray)); + + $sql = "update repos set repos_perms='$encperms' where repos_id='$rid'"; + + $conn->query($sql); + +} + +//returns 0 for none, 1 for read, 2 for writes +function gwvpmini_GetRepoPerm($rid, $uid) +{ + $conn = gwvpmini_ConnectDB(); + + $dets = gwvpmini_getRepo(null, null, $rid); + + $sql = "select repos_perms from repos where repos_id='$rid'"; + + $res = $conn->query($sql); + + error_log("PERMCHECK: FUCK U! $sql"); + + $cperms_t = false; + if($res !== false) foreach($res as $row) { + $cperms_t = $row[0]; + } + + if($cperms_t === false) return 0; + + error_log("PERMSCHECK $rid, $uid:".print_r($dets, true)); + + if($dets === false) return 0; + + if($dets["ownerid"] == $uid) return 2; + + $permsarray = unserialize(base64_decode($cperms_t)); + + error_log("PERMSARRAY: ".print_r($permsarray,true)); + + + $perm = 0; + if($uid != "a") { + if(isset($permsarray[$uid])) { + $perm = $permsarray[$uid]; + } else if($permsarray["b"] == "a" ||$permsarray["b"] == "r") { + $perm = 1; + } + } else { + if($permsarray["b"] == "a") $perm = 1; + } + + return $perm; + +} + function gwvpmini_RemoveRepoDB($id) { $conn = gwvpmini_ConnectDB(); @@ -117,17 +211,17 @@ function gwvpmini_RemoveUser($uid) return $conn->query($sql); } -function gwvpmini_DisableUser($uid) -{ +function gwvpmini_DisableUser($uid) +{ $conn = gwvpmini_ConnectDB(); - + if($uid < 0) return; - + $sql = "update users set user_status=1 where user_id='$uid'"; - - return $conn->query($sql); + + return $conn->query($sql); } - + function gwvpmini_EnableUser($uid) { $conn = gwvpmini_ConnectDB(); @@ -139,6 +233,28 @@ function gwvpmini_EnableUser($uid) return $conn->query($sql); } +function gwvpmini_DisableRepo($rid) +{ + $conn = gwvpmini_ConnectDB(); + + if($rid < 0) return; + + $sql = "update repos set repos_status=1 where repos_id='$rid'"; + + return $conn->query($sql); +} + +function gwvpmini_EnableRepo($rid) +{ + $conn = gwvpmini_ConnectDB(); + + if($rid < 0) return; + + $sql = "update repos set repos_status=0 where repos_id='$rid'"; + + return $conn->query($sql); +} + function gwvpmini_ConnectDB() { @@ -246,7 +362,8 @@ function gwvpmini_dbCreateSQLiteStructure($dbloc) "repos_name" TEXT, "repos_description" TEXT, "repos_owner" INTEGER, - "repos_readperms" TEXT, + "repos_perms" TEXT, + "repos_status" TEXT, UNIQUE(repos_name) )'; @@ -341,7 +458,7 @@ function gwvpmini_GetRepoId($reponame) $retval = -1; if(!$res) return -1; foreach($res as $row) { - $reval = (int)$row[0]; + $retval = (int)$row[0]; } return $retval; @@ -446,13 +563,17 @@ function gwvpmini_setConfigVal($confname, $confval) return $conn->query($sql); } -function gwvpmini_AddRepo($name, $desc, $ownerid, $perms = "perms-public") +function gwvpmini_AddRepo($name, $desc, $ownerid) { error_log("addrepo in db for $name, $desc, $ownerid"); $conn = gwvpmini_ConnectDB(); + + $perms["b"] = "a"; + + $encperms = base64_encode(serialize($perms)); - $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$perms')"; + $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$encperms', 0)"; $conn->query($sql); } @@ -505,16 +626,19 @@ function gwvpmini_GetOwnedRepos($username) */ $conn = gwvpmini_ConnectDB(); + $uid = gwvpmini_GetUserId($username); $sql = "select * from repos where repos_owner='$uid'"; - error_log("owned repos sql $sql"); + error_log("owned repos sql $sql for username $username"); $res = $conn->query($sql); + if($username == "") return false; $retval = false; foreach($res as $row) { $id = $row["repos_id"]; $retval[$id]["name"] = $row["repos_name"]; $retval[$id]["desc"] = $row["repos_description"]; + $retval[$id]["id"] = $row["repos_id"]; error_log(print_r($row, true)); } @@ -569,11 +693,43 @@ function gwvpmini_GetUsers($startat = 0, $num = 10) $retval[$id]["desc"] = $row["user_desc"]; $retval[$id]["level"] = $row["user_level"]; $retval[$id]["status"] = $row["user_status"]; + $retval[$id]["id"] = $row["user_id"]; } return $retval; } +function gwvpmini_findPeopleLike($search) +{ + $conn = gwvpmini_ConnectDB(); + + $sql = "select * from users where user_username like '%$search%' or user_full_name like '%$search%'"; + + $res = $conn->query($sql); + + if(!$res) { + error_log("SERACHUSER: $sql returned false"); + return false; + } else { + error_log("SERACHUSER: $sql returned true"); + } + + $retval = false; + foreach($res as $row) { + $id = $row["user_id"]; + $retval[$id]["fullname"] = $row["user_full_name"]; + $retval[$id]["username"] = $row["user_username"]; + $retval[$id]["email"] = $row["user_email"]; + $retval[$id]["desc"] = $row["user_desc"]; + $retval[$id]["level"] = $row["user_level"]; + $retval[$id]["status"] = $row["user_status"]; + $retval[$id]["id"] = $row["user_id"]; + } + + error_log("SEARCHUSER: array is ".print_r($retval, true)); + return $retval; +} + function gwvpmini_GetRepos($startat=0, $num=200) { $conn = gwvpmini_ConnectDB(); @@ -598,6 +754,8 @@ function gwvpmini_GetRepos($startat=0, $num=200) $retval[$id]["name"] = $row["repos_name"]; $retval[$id]["desc"] = $row["repos_description"]; $retval[$id]["owner"] = $row["repos_owner"]; + $retval[$id]["id"] = $row["repos_id"]; + $retval[$id]["status"] = $row["repos_status"]; } return $retval; @@ -605,6 +763,40 @@ function gwvpmini_GetRepos($startat=0, $num=200) } +function gwvpmini_findReposLike($search) +{ + $conn = gwvpmini_ConnectDB(); + + /* + * CREATE TABLE "repos" ( + "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT, + "repos_name" TEXT, + "repos_description" TEXT, + "repos_owner" INTEGER + )'; + + */ + + $sql = "select * from repos where repos_name like '%$search%' or repos_description like '%$search%'"; + + $res = $conn->query($sql); + + if(!$res) return false; + + $retval = false; + foreach($res as $row) { + $id = $row["repos_id"]; + $retval[$id]["name"] = $row["repos_name"]; + $retval[$id]["desc"] = $row["repos_description"]; + $retval[$id]["owner"] = $row["repos_owner"]; + $retval[$id]["id"] = $row["repos_id"]; + $retval[$id]["status"] = $row["repos_status"]; + } + + return $retval; + +} + function gwvpmini_GetNRepos() { $conn = gwvpmini_ConnectDB();