User page code for user/group admin
[gwvp.git] / gwvplib / gwvpdatabase.php
index 1f0282f..c2d37cf 100644 (file)
@@ -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:
  *