X-Git-Url: http://git.pjr.cc/?p=gwvp-mini.git;a=blobdiff_plain;f=gwvpmini%2Fgwvpmini_db.php;h=4e939afaa6717c3fe1c73c8e4bb6f9d7faf16dc4;hp=44080142f55000550798863ff728df458e095aed;hb=5433c422794029259de4512640485aeb650e0c87;hpb=42069486556c27a9ceff2108970c6fe1c5333bfd diff --git a/gwvpmini/gwvpmini_db.php b/gwvpmini/gwvpmini_db.php index 4408014..4e939af 100644 --- a/gwvpmini/gwvpmini_db.php +++ b/gwvpmini/gwvpmini_db.php @@ -37,7 +37,7 @@ function gwvpmini_getUser($username=null, $email=null, $id=null) } else if($email != null) { $res = $conn->query("select * from users where user_email='$email'"); } else if($id != null) { - $res = $conn->query("select * from users where users_id='$id'"); + $res = $conn->query("select * from users where user_id='$id'"); } else return false; $returns = false; @@ -53,8 +53,209 @@ function gwvpmini_getUser($username=null, $email=null, $id=null) return $returns; +} + + +function gwvpmini_getRepo($ownerid=null, $name=null, $id=null) +{ + $conn = gwvpmini_ConnectDB(); + + /* + * $reposql = ' + CREATE TABLE "repos" ( + "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT, + "repos_name" TEXT, + "repos_description" TEXT, + "repos_owner" INTEGER, + "repos_readperms" TEXT, + UNIQUE(repos_name) + )'; + + */ + + if($ownerid != null) { + $res = $conn->query("select * from repos where repos_owner='$ownerid'"); + } else if($name != null) { + $res = $conn->query("select * from repos where repos_name='$name'"); + } else if($id != null) { + $res = $conn->query("select * from repos where repos_id='$id'"); + } else return false; + + $returns = false; + if(!$res) return false; + foreach($res as $u_res) { + $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["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(); + + if($id < 0) return; + + $sql = "delete from repos where repos_id='$id'"; + + return $conn->query($sql); + +} + +function gwvpmini_RemoveUser($uid) +{ + $conn = gwvpmini_ConnectDB(); + + if($uid < 0) return; + + $sql = "delete from users where user_id='$uid'"; + + return $conn->query($sql); +} + +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); +} + +function gwvpmini_EnableUser($uid) +{ + $conn = gwvpmini_ConnectDB(); + + if($uid < 0) return; + + $sql = "update users set user_status=0 where user_id='$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() { global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name, $DB_CONNECTION; @@ -86,6 +287,27 @@ function gwvpmini_ConnectDB() return $DB_CONNECTION; } +function gwvpmini_UpdateStatusFromConfirm($confirmhash) +{ + $conn = gwvpmini_ConnectDB(); + + $sql = "select count(*) from users where user_status='2:$confirmhash'"; + + $res = $conn->query($sql); + + if(!$res) return false; + + foreach($res as $row) { + $retval = $row[0]; + } + + if($retval > 0) { + $sql = "update users set user_status='0' where user_status='2:$confirmhash'"; + return $conn->query($sql); + } else return false; +} + + function gwvpmini_AddUser($username, $password, $fullname, $email, $desc, $level, $status) { @@ -140,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) )'; @@ -235,12 +458,88 @@ function gwvpmini_GetRepoId($reponame) $retval = -1; if(!$res) return -1; foreach($res as $row) { - $reval = (int)$row[0]; + $retval = (int)$row[0]; } return $retval; } + +function gwvpmini_GetRepoDescFromName($reponame) +{ + + /* + * $reposql = ' + CREATE TABLE "repos" ( + "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT, + "repos_name" TEXT, + "repos_description" TEXT, + "repos_owner" INTEGER + )'; + + */ + + $conn = gwvpmini_ConnectDB(); + + $sql = "select repos_description from repos where repos_name='$reponame'"; + error_log("desc for name sql: $sql"); + + $res = $conn->query($sql); + + $retval = -1; + if(!$res) return -1; + foreach($res as $row) { + $retval = $row[0]; + } + + return $retval; +} +function gwvpmini_GetRepoOwnerDetailsFromName($reponame) +{ + + /* + * $reposql = ' + CREATE TABLE "repos" ( + "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT, + "repos_name" TEXT, + "repos_description" TEXT, + "repos_owner" INTEGER + )'; + + "user_id" INTEGER PRIMARY KEY AUTOINCREMENT, + "user_full_name" TEXT, + "user_password" TEXT, + "user_username" TEXT, + "user_email" TEXT, + "user_desc" TEXT, + "user_level" TEXT, + "user_status" TEXT, + UNIQUE(user_username) + + */ + + $conn = gwvpmini_ConnectDB(); + + $sql = "select users.* from repos,users where repos_name='$reponame' and repos_owner=user_id"; + + $res = $conn->query($sql); + + $retval = -1; + if(!$res) return -1; + foreach($res as $row) { + $retval = array(); + error_log("STUFF2: ".print_r($row,true)); + $retval["id"] = $row["user_id"]; + $retval["fullname"] = $row["user_full_name"]; + $retval["username"] = $row["user_username"]; + $retval["email"] = $row["user_email"]; + $retval["desc"] = $row["user_desc"]; + $retval["level"] = $row["user_level"]; + $retval["status"] = $row["user_status"]; + } + + return $retval; +} function gwvpmini_setConfigVal($confname, $confval) { @@ -254,20 +553,27 @@ function gwvpmini_setConfigVal($confname, $confval) */ gwvpmini_eraseConfigVal($confname); - $conn = gwvpmini_ConnectDB(); + $conn = gwvpmini_ConnectDB(); + + $sql = "delete from config where config_name='$confname'"; + $conn->query($sql); $sql = "insert into config values('$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); } @@ -290,6 +596,23 @@ function gwvpmini_GetUserId($username) return $retval; } +function gwvpmini_GetUserNameFromEmail($email) +{ + $conn = gwvpmini_ConnectDB(); + + $sql = "select user_username from users where user_email='$email'"; + + error_log("username sql $sql"); + + $res = $conn->query($sql); + + $retval = false; + foreach($res as $row) { + $retval = $row[0]; + } + + return $retval; +} function gwvpmini_GetOwnedRepos($username) { /* @@ -303,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)); } @@ -354,7 +680,7 @@ function gwvpmini_GetUsers($startat = 0, $num = 10) */ - $sql = "select * from users where user_id>'$startat' order by user_id asc limit $num"; + $sql = "select * from users where user_id>='$startat' order by user_id asc limit $num"; $res = $conn->query($sql); @@ -367,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(); @@ -396,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; @@ -403,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();