X-Git-Url: http://git.pjr.cc/?p=gwvp.git;a=blobdiff_plain;f=gwvplib%2Fgwvpdatabase.php;fp=gwvplib%2Fgwvpdatabase.php;h=c2d37cf295695615a6f4fe4d65fe16f4d6e4192c;hp=1f0282f2883c7b1b6e4298f9cb5bd8a2429e53f6;hb=047523a5083efd83dcd94b6d2763c9fddb913c90;hpb=d31646570a19d6fb66d2f648cd282e2b2e3e7033 diff --git a/gwvplib/gwvpdatabase.php b/gwvplib/gwvpdatabase.php index 1f0282f..c2d37cf 100644 --- a/gwvplib/gwvpdatabase.php +++ b/gwvplib/gwvpdatabase.php @@ -82,18 +82,28 @@ function gwvp_isDBSetup() function gwvp_ConnectDB() { - global $WEB_ROOT_FS, $BASE_URL, $repo_base, $data_directory, $db_type, $db_url, $DB_CONNECTION; + global $WEB_ROOT_FS, $BASE_URL, $repo_base, $data_directory, $db_type, $db_name, $DB_CONNECTION; // first check if $DB_CONNECTION IS live if($DB_CONNECTION != false) return $DB_CONNECTION; + if($db_type == "sqlite") { + $db_url = $db_name; + if(!file_exists($db_name)) { + error_log("$db_name does not exist - problem"); + } + } + // and here we go with pdo. + error_log("attmpting to open db, $db_type:$db_url"); try { $DB_CONNECTION = new PDO("$db_type:$db_url"); } catch(PDOException $exep) { error_log("execpt on db open"); return false; } + + return $DB_CONNECTION; } function gwvp_createUser($email, $fullname, $password, $nick, $desc, $status) @@ -102,6 +112,7 @@ function gwvp_createUser($email, $fullname, $password, $nick, $desc, $status) // TODO: change from sha1 $shapass = sha1($password); + //error_log("Create user called with $email"); $conn->query("insert into users values (null, '$fullname', '$shapass', '$nick', '$email', '$desc', '$status')"); /* * "users_id" INTEGER PRIMARY KEY AUTOINCREMENT, @@ -179,6 +190,90 @@ function gwvp_deleteGroup($groupname) $conn->query($sql); } +function gwvp_getGroupsForUser($email) +{ + $conn = gwvp_ConnectDB(); + + /* + select g.groups_name from + group_membership gm, groups g, users u + where + gm.groupmember_userid=u.users_id and + u.user_email='$email' and + gm.groupmember_groupid=g.groups_id and + g.groups_name='$groupname' + */ + + $sql = " + select g.groups_name from + group_membership gm, groups g, users u + where + gm.groupmember_userid=u.users_id and + u.user_email='$email' and + gm.groupmember_groupid=g.groups_id + "; + + $res = $conn->query($sql); + + $return = false; + $rn = 0; + foreach($res as $u_res) { + $return[$rn] = $u_res[0]; + $rn++; + } + + return $return; +} + +function gwvp_getGroupsOwnedByUser($email) +{ + $conn = gwvp_ConnectDB(); + + /* + select g.groups_name from + group_membership gm, groups g, users u + where + gm.groupmember_userid=u.users_id and + u.user_email='$email' and + gm.groupmember_groupid=g.groups_id and + g.groups_name='$groupname' + */ + + $sql = " + select g.groups_name from + groups g, users u + where + u.user_email='$email' and + u.users_id=g.groups_owner_id + "; + + $res = $conn->query($sql); + + $return = false; + $rn = 0; + foreach($res as $u_res) { + $return[$rn] = $u_res[0]; + $rn++; + } + + return $return; + +} + +function gwvp_groupOwner($groupname) +{ + $conn = gwvp_ConnectDB(); + + $sql = "select u.user_email from users u, groups g where g.groups_name='$groupname' and g.groups_owner_id=u.users_id"; + + $res = $conn->query($sql); + $return = false; + foreach($res as $u_res) { + $return = $u_res[0]; + } + + return $return; +} function gwvp_getGroups() { @@ -231,9 +326,182 @@ function gwvp_getUserId($useremail) return $return; } +function gwvp_getUserEmail($id) +{ + $conn = gwvp_ConnectDB(); + + $sql = "select user_email from users where users_id='$id'"; + + $res = $conn->query($sql); + $return = false; + foreach($res as $u_res) { + $return = $u_res["user_email"]; + } + + return $return; +} + function gwvp_addGroupMember($email, $groupname) { + $conn = gwvp_ConnectDB(); + + $uid = gwvp_getUserId($email); + $gid = gwvp_getGroupId($groupname); + + /* + * CREATE TABLE "group_membership" ( + "groupmember_id" INTEGER PRIMARY KEY AUTOINCREMENT, + "groupmember_groupid" INTEGER, + "groupmember_userid" INTEGER + + */ + if($uid!=false&&$gid!=false) $sql = "insert into group_membership values (null, '$gid', '$uid')"; + else return false; + + $conn->query($sql); + + return true; +} + +function gwvp_IsGroupMember($email, $groupname) +{ + $conn = gwvp_ConnectDB(); + + // i think this is right + $sql = " + select count(*) from + group_membership gm, groups g, users u + where + gm.groupmember_userid=u.users_id and + u.user_email='$email' and + gm.groupmember_groupid=g.groups_id and + g.groups_name='$groupname' + "; + + $res = $conn->query($sql); + $result = 0; + foreach($res as $u_res) { + $result = $u_res[0]; + } + + if($result == 0) return false; + if($result == 1) return true; +} + +function gwvp_IsUserAdmin($email) +{ + $conn = gwvp_ConnectDB(); + + $id = gwvp_getUserId($email); + $sql = "select groupmember_groupid from group_membership where groupmember_userid='$id'"; + + $res = $conn->query($sql); + $rn = 0; + foreach($res as $u_res) { + $gid[$rn] = $u_res["groupmember_groupid"]; + $rn++; + } + + foreach($gid as $gid_t) { + /* + * CREATE TABLE groups ( + "groups_id" INTEGER, + "groups_name" TEXT, + "groups_is_admin" INTEGER, + "groups_owner_id" INTEGER + )'; + + */ + + $sql = "select groups_is_admin from groups where groups_id='$gid_t'"; + $res = $conn->query($sql); + foreach($res as $u_res) { + if($u_res["groups_is_admin"] == "1") return true; + } + } + + return false; +} + +function gwvp_ModifyUser($userid, $email=null, $fullname=null, $password=null, $nickname=null, $desc=null, $status=null) +{ + /* + * "users_id" INTEGER PRIMARY KEY AUTOINCREMENT, + "user_full_name" TEXT, + "user_password" TEXT, + "user_nickname" TEXT, + "user_email" TEXT, + "user_desc" TEXT, + "user_status" INTEGER + + */ + + $conn = gwvp_ConnectDB(); + + if($email != null) { + $sql = "update users set user_email='$email' where users_id='$userid'"; + $conn->query($sql); + } + + if($fullname != null) { + $sql = "update users set user_full_name='$fullname' where users_id='$userid'"; + $conn->query($sql); + } + + if($password != null) { + $shapass = sha1($password); + $sql = "update users set user_password='$shapass' where users_id='$userid'"; + $conn->query($sql); + } + + if($nickname != null) { + $sql = "update users set user_nickname='$nickname' where users_id='$userid'"; + $conn->query($sql); + } + + if($desc != null) { + $sql = "update users set user_desc='$desc' where users_id='$userid'"; + $conn->query($sql); + } + + if($status != null) { + $sql = "update users set user_status='$status' where users_id='$userid'"; + $conn->query($sql); + } + + return true; +} + + +function gwvp_ModifyGroup($groupid, $groupname = null, $group_is_admin = null, $groups_owner_id = null) +{ + /* + * CREATE TABLE groups ( + "groups_id" INTEGER, + "groups_name" TEXT, + "groups_is_admin" INTEGER, + "groups_owner_id" INTEGER + )'; + + */ + $conn = gwvp_ConnectDB(); + + if($groupname != null) { + $sql = "update groups set groups_name='$groupname' where groups_id='$groupid'"; + $conn->query($sql); + } + + if($group_is_admin != null) { + $sql = "update groups set groups_is_admin='$group_is_admin' where groups_id='$groupid'"; + $conn->query($sql); + } + + if($groups_owner_id != null) { + $sql = "update groups set groups_owner_id='$groups_owner_id' where groups_id='$groupid'"; + $conn->query($sql); + } + return true; } /* functions we'll need to access data: *