started some input validation code and unit tests for it
[gwvp.git] / gwvplib / gwvpdatabase.php
index d9b51cd..7338e68 100644 (file)
@@ -26,6 +26,7 @@ function gwvp_dbCreateSQLiteStructure($dbloc)
                CREATE TABLE groups (
            "groups_id" INTEGER PRIMARY KEY AUTOINCREMENT,
            "groups_name" TEXT,
+           "groups_description" TEXT,
            "groups_is_admin" INTEGER,
                "groups_owner_id" INTEGER
                )';
@@ -78,6 +79,77 @@ function gwvp_dbCreateSQLiteStructure($dbloc)
        $DB_CONNECTION->query($groupmemsql);
 }
 
+function gwvp_forceDisconnect()
+{
+       
+       global $DB_CONNECTION;
+       
+       $DB_CONNECTION = false;
+}
+
+
+function gwvp_getConfigVal($confname)
+{
+       /*
+        *      $configsql = '
+               CREATE TABLE "config" (
+           "config_name" TEXT,
+           "config_value" TEXT
+               )';
+
+        */
+       
+       $conn = gwvp_ConnectDB();
+       
+       $sql = "select * from config where config_name='$confname'";
+       
+       $res = $conn->query($sql);
+       
+       $return = null;
+       foreach($res as $val) {
+               $return = $val;
+       }
+       
+}
+
+function gwvp_eraseConfigVal($confname)
+{
+       /*
+        *      $configsql = '
+               CREATE TABLE "config" (
+           "config_name" TEXT,
+           "config_value" TEXT
+               )';
+
+        */
+       
+       $conn = gwvp_ConnectDB();
+       
+       $sql = "delete from config where config_name='$confname'";
+       
+       return $conn->query($sql);
+}
+
+function gwvp_setConfigVal($confname, $confval)
+{
+       /*
+        *      $configsql = '
+               CREATE TABLE "config" (
+           "config_name" TEXT,
+           "config_value" TEXT
+               )';
+
+        */
+       gwvp_eraseConfigVal($confname);
+
+       $conn = gwvp_ConnectDB();
+       
+       $sql = "insert into config values('$confname', '$confval')";
+       
+       return $conn->query($sql);
+}
+
+
 function gwvp_isDBSetup()
 {
        // for sqlite, we just check if the db exists, for everyone else, we check for a conneciton and go yay or nay
@@ -118,6 +190,7 @@ function gwvp_ConnectDB()
        return $DB_CONNECTION;
 }
 
+// TODO: we have to define what "Status" is
 function gwvp_createUser($email, $fullname, $password, $username, $desc, $status)
 {
        $conn = gwvp_ConnectDB();
@@ -125,7 +198,9 @@ function gwvp_createUser($email, $fullname, $password, $username, $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', '$username', '$email', '$desc', '$status')");
+       $sql = "insert into users values (null, '$fullname', '$shapass', '$username', '$email', '$desc', '$status')";
+       error_log("Creating user, $sql");
+       return $conn->query($sql);
        /*
         *          "users_id" INTEGER PRIMARY KEY AUTOINCREMENT,
         "user_full_name" TEXT,
@@ -196,7 +271,7 @@ function gwvp_deleteUser($email)
        $conn->query($sql);
 }
 
-function gwvp_createGroup($group_name, $is_admin, $owner_id)
+function gwvp_createGroup($group_name, $group_desc, $is_admin, $owner_id)
 {
        $conn = gwvp_ConnectDB();
 
@@ -214,7 +289,8 @@ function gwvp_createGroup($group_name, $is_admin, $owner_id)
        } else {
                $is_admin_t = 0;
        }
-       $sql = "insert into groups values( null, '$group_name', '$is_admin_t', '$owner_id')";
+       $sql = "insert into groups values( null, '$group_name', '$group_desc', '$is_admin_t', '$owner_id')";
+       
 
        $conn->query($sql);
 
@@ -350,6 +426,39 @@ function gwvp_getGroupId($groupname)
        return $return;
 }
 
+function gwvp_getGroup($gid)
+{
+       /* 
+        *      $groupsql = '
+               CREATE TABLE groups (
+           "groups_id" INTEGER PRIMARY KEY AUTOINCREMENT,
+           "groups_name" TEXT,
+           "groups_is_admin" INTEGER,
+               "groups_owner_id" INTEGER
+               )';
+
+        */
+       $conn = gwvp_ConnectDB();
+       
+       $sql = "select * from groups where groups_id='$gid'";
+       
+       $res = $conn->query($sql);
+       $return = false;
+       foreach($res as $u_res) {
+               $return["id"] = $u_res["groups_id"];
+               $return["name"] = $u_res["groups_name"];
+               if($u_res["groups_is_admin"] == 1) {
+                       $return["isadmin"] = true;
+               } else {
+                       $return["isadmin"] = false;
+               }
+               $return["ownerid"] = $u_res["groups_owner_id"];
+               $return["description"] = $u_res["groups_description"];
+       }
+       
+       return $return;
+}
+
 function gwvp_getUserId($useremail=null, $username = null)
 {
        $conn = gwvp_ConnectDB();
@@ -369,6 +478,26 @@ function gwvp_getUserId($useremail=null, $username = null)
        return $return;
 }
 
+function gwvp_getUserName($id = null, $email=null)
+{
+       $conn = gwvp_ConnectDB();
+
+       if($email != null) { 
+               $sql = "select user_username from users where user_email='$email'";
+       } else if($id != null) {
+               $sql = "select user_username from users where users_id='$id'";
+       } else return false;
+
+       $res = $conn->query($sql);
+       $return = false;
+       foreach($res as $u_res) {
+               $return = $u_res["user_username"];
+       }
+
+       return $return;
+}
+
+
 function gwvp_getUserEmail($id)
 {
        $conn = gwvp_ConnectDB();
@@ -384,6 +513,44 @@ function gwvp_getUserEmail($id)
        return $return;
 }
 
+function gwvp_deleteGroupMemberByID($uid, $gid)
+{
+       $conn = gwvp_ConnectDB();
+
+       /*
+        *              CREATE TABLE "group_membership" (
+        "groupmember_id" INTEGER PRIMARY KEY AUTOINCREMENT,
+        "groupmember_groupid" INTEGER,
+        "groupmember_userid" INTEGER
+
+        */
+       $sql = "delete from group_membership where groupmember_groupid='$gid' and  groupmember_userid='$uid'";
+
+       $conn->query($sql);
+
+       return true;
+}
+
+
+function gwvp_addGroupMemberByID($uid, $gid)
+{
+       $conn = gwvp_ConnectDB();
+
+       /*
+        *              CREATE TABLE "group_membership" (
+        "groupmember_id" INTEGER PRIMARY KEY AUTOINCREMENT,
+        "groupmember_groupid" INTEGER,
+        "groupmember_userid" INTEGER
+
+        */
+       $sql = "insert into group_membership values (null, '$gid', '$uid')";
+
+       $conn->query($sql);
+
+       return true;
+}
+
+
 function gwvp_addGroupMember($email, $groupname)
 {
        $conn = gwvp_ConnectDB();
@@ -398,7 +565,7 @@ function gwvp_addGroupMember($email, $groupname)
         "groupmember_userid" INTEGER
 
         */
-       if($uid!=false&&$gid!=false) $sql = "insert into group_membership values (null, '$gid', '$uid')";
+       if($uid!=false&&$gid!=false) gwvp_addGroupMemberByID($uid, $gid);
        else return false;
 
        $conn->query($sql);
@@ -447,12 +614,13 @@ function gwvp_IsUserAdmin($email=null, $username = null)
 
        $res = $conn->query($sql);
        $rn = 0;
+       $gid = false;
        foreach($res as $u_res) {
                $gid[$rn] = $u_res["groupmember_groupid"];
                $rn++;
        }
 
-       foreach($gid as $gid_t) {
+       if($gid !== false) foreach($gid as $gid_t) {
                /*
                 *              CREATE TABLE groups (
                 "groups_id" INTEGER,