diff --git a/lib/administration/GroupManager.inc b/lib/administration/GroupManager.inc
new file mode 100644
index 0000000..71e1bb5
--- /dev/null
+++ b/lib/administration/GroupManager.inc
@@ -0,0 +1,459 @@
+owl_groups_table WHERE name = '" . $name . "'";
+ $sql->query($query);
+ $rows = $sql->num_rows($sql);
+
+ if ($rows > 0)
+ {
+ // duplicate username
+ $default->errorMessage = "GroupManager::The Group name " . $name . " is already in use, please choose another one";
+ $default->log->debug($default->errorMessage);
+ return false;
+ }
+ // insert the user
+ $query = "INSERT INTO $default->owl_groups_table (name) VALUES ('" . $name . "')";
+
+ $result = $sql->query($query);
+
+ if(!'result')
+ {
+ $default->log->debug( "GroupManager::New Group Addition Unsuccessful!
");
+ return false;
+ }
+ else
+ {
+ $default->log->debug ("GroupManager::New Group added Successfully!
");
+ return true;
+ }
+
+
+
+}
+
+ /**
+ * Removes a group from the groups table as well as from the groups_units_link table
+ *
+ * @param groupID
+ * The id of the group to be deleted
+ * @return boolean
+ * True if the deletion was successful, else false if not or nonexistant.
+ */
+ function removeGroup($groupID)
+ {
+ global $default;
+ // create a connection
+ $sql = new Owl_DB;
+
+ //do validation that userid exists
+ $query = "SELECT * FROM $default->owl_groups_table WHERE id = '" . $groupID ."'";
+ $result = $sql->query($query);
+ $row = $sql->num_rows($result);
+
+ // check if result was found..0 if not
+ if($row == 0)
+ {
+ $default->log->debug("GroupManager::Group does not exist in the database
");
+ return false;
+ }
+
+ //if user id exists delete it from the users table
+ $query = "DELETE FROM $default->owl_groups_table WHERE id = $groupID";
+ $result = $sql->query($query);
+
+ if(!'result')
+ {
+ $default->log->debug("GroupManager::Deletion unsuccessful
");
+ return false;
+ }
+ else
+ {
+ $default->log->debug ("GroupManager::Deletion from user table Successful
");
+ //check if belongs to group
+
+ $result= $this->removeGroupFromUnit($groupID);
+ return true;
+ }
+
+
+
+ }
+
+ /**
+ * Updates groups details ..ie rename the group
+ *
+ * @param groupID
+ * the group which is to be renamed
+ * @param name
+ * new name of the group
+ * @return boolean
+ * true if the addition was successful, else false.
+ */
+ function updateGroup($groupID, $name)
+ {
+ global $default;
+ // create a connection
+ $sql = new Owl_DB;
+
+ //do validation that userid exists
+ $query = "SELECT * FROM $default->owl_groups_table WHERE id = $groupID";
+ $result = $sql->query($query);
+ $row = $sql->num_rows($result);
+
+ //if row = 0 ...then no entry was found..so return false
+ if($row == 0)
+ {
+ $default->log->debug("GroupManager::Group does not exist in the database
");
+ return false;
+ }
+
+ //if user id exists update all info into the users table
+ $query = "UPDATE $default->owl_groups_table SET name = '" . $name . "' WHERE id = $groupID " ;
+
+ $result = $sql->query($query);
+
+
+ // error checking to see if success
+ if(!'result')
+ {
+ $default->log->debug("GroupManager::Not Updated");
+ return false;
+ }
+ else
+ {
+ $default->log->debug("GroupManager::Update Successful
");
+ return true;
+ }
+ }
+
+ /**
+ * Returns an array of all the groups
+ *
+ * @return array
+ * An array of groups
+ */
+ function listGroups()
+ {
+
+ global $default;
+ $groups = array ();
+ $i = 0;
+ // create a connection
+ $sql = new Owl_DB;
+
+ //Get list of all the usernames
+ $query = "SELECT name FROM $default->owl_groups_table";
+ $result = $sql->query($query);
+ $row = $sql->num_rows($result);
+
+ //error checking
+ if($row == 0)
+ {
+ $default->log->debug("GroupManager::No users in table");
+ return false;
+ }
+
+ //store in array
+ while($sql->next_record())
+ {
+ $groups["$i"] = array("name" => $sql->f("name"));
+ $i++;
+ }
+
+ //return an array of the groups
+ return $groups;
+
+ }
+
+ /**
+ *
+ * Adds a group to a unit NB: Group belongs to 1 unit only
+ *
+ * @param groupID
+ * The ID of the group to add the user to
+ * @param unitID
+ * The Id of the unit to add to
+ * @return boolean
+ * True if the addition was successful, else false if not or nonexistant.
+ */
+ function addGroupToUnit($groupID,$unitID)
+ {
+ global $default;
+ // create a connection
+ $sql = new Owl_DB;
+
+ //do validation that groupid exists
+ $query = "SELECT * FROM $default->owl_groups_units_table WHERE group_id = $groupID";
+ $result = $sql->query($query);
+ $row = $sql->num_rows($result);
+
+ // if it does exist return false..already there
+ if($row >= 1)
+ {
+ $default->log->debug("GroupManager::Group already belongs to a unit
");
+ return false;
+ }
+
+ //add user to the table
+ $query = "INSERT INTO $default->owl_groups_units_table (group_id,unit_id) VALUES($groupID,$unitID)";
+ $result = $sql->query($query);
+
+ if(!'result')
+ {
+ $default->log->debug("GroupManager::Insertion into groups_units table unsuccessful
");
+ return false;
+ }
+ else
+ {
+ $default->log->debug("GroupManager::Insertion into groups_units table Successful
");
+ return true;
+ }
+
+ }
+
+
+ /**
+ * Removes a group from a unit NB: Group can only belong to 1 unit
+ *
+ * @param groupID
+ * The ID of the group be removed from a unit
+
+ * @return boolean
+ * True if the deletion was successful, else false if not or nonexistant.
+ */
+ function removeGroupFromUnit($groupID)
+ {
+ global $default;
+ // create a connection
+ $sql = new Owl_DB;
+
+ //do validation that groupid exists
+ $query = "SELECT * FROM $default->owl_groups_units_table WHERE group_id = $groupID";
+ $result = $sql->query($query);
+ $row = $sql->num_rows($result);
+
+ // check if result was found..0 if not
+ if($row == 0)
+ {
+ $default->log->debug("GroupManager::Group does not exist in the database
");
+ return false;
+ }
+
+ //if group id exists delete it from the users table
+ $query = "DELETE FROM $default->owl_groups_units_table WHERE group_id = $groupID";
+ $result = $sql->query($query);
+
+ if(!'result')
+ {
+ $default->log->debug ("GroupManager::Deletion unsuccessful
");
+ return false;
+ }
+ else
+ {
+ $default->log->debug("GroupManager::Deletion from user_group_link table Successful
");
+ return true;
+ }
+
+ }
+ /*
+ *
+ * gets the id of a group using its name
+ *
+ * @param $groupName
+ * The GroupName for which we want its ID
+ * @return Integer
+ * The groupname's Id
+ */
+
+ function getGroupID($groupName)
+ {
+ global $default;
+
+ $sql = new Owl_DB;
+
+ // check that group exists if it does'nt return false
+ $query = "SELECT id FROM $default->owl_groups_table WHERE name = '" . $groupName . "'";
+ $sql->query($query);
+ $rows = $sql->num_rows($sql);
+ // go into record set
+ $sql->next_record();
+
+ // store the id in a variable
+ $id = $sql->f("id");
+
+ // if no entry..username does not exist
+ if ($rows == 0)
+ {
+ // duplicate username
+ $default->errorMessage = "GroupManager::The Group " . $groupName . " does not exist
";
+ $default->log->debug($default->errorMessage);
+ return false;
+ }
+ else
+ {
+ return $id;
+ }
+ }
+
+ /*
+ * Function getGroupName($groupID)
+ *
+ * gets the id of a user using their username
+ *
+ * @param $username
+ * The username for which we want its ID
+ * @return char
+ * name of group
+ */
+
+ function getGroupName($groupID)
+ {
+ global $default;
+
+ $sql = new Owl_DB;
+
+
+ // check that username exists if it does'nt return false
+ $query = "SELECT name FROM $default->owl_groups_table WHERE id = '" . $groupID . "'";
+ $sql->query($query);
+ $rows = $sql->num_rows($sql);
+ // go into record set
+ $sql->next_record();
+
+ // store the id in a variable
+ $name = $sql->f("name");
+
+ // if no entry..group name does'nt exist
+ if ($rows == 0)
+ {
+ // duplicate username
+ $default->errorMessage = "GroupManager::The group does not exist
";
+ $default->log->debug($default->errorMessage);
+ return false;
+ }
+ else
+ {
+ return $name;
+ }
+ }
+
+ /*
+ *
+ * Gets the unit that the group belongs to
+ *
+ * @param $groupID
+ * The ID of the group
+ * @return Array
+ * array of unitID and name of the unit
+ */
+ function getUnit($groupID)
+ {
+ global $default;
+ $unitinfo = array();
+ $sql = new Owl_DB;
+ //$groupName = new GroupManager;
+
+
+ // check that group exists if it does'nt return false
+ $query = "SELECT unit_id FROM $default->owl_groups_units_table WHERE group_id = '" . $groupID . "'";
+ $sql->query($query);
+ $rows = $sql->num_rows($sql);
+
+ // if no entry..group does not belong to a unit
+ if ($rows == 0)
+ {
+ // duplicate username
+ $default->errorMessage = "GroupManager::The group does not belong to a unit
";
+ $default->log->debug($default->errorMessage);
+ return false;
+ }
+
+
+ while($sql->next_record())
+ {
+ $unitinfo[1] = array("id" => $sql->f("unit_id"),
+ "name" => $this->getUnitName($sql->f("unit_id")) // TODO change this to unit obj
+ );
+
+ }
+
+ return $unitinfo;
+ }
+
+
+
+ /*
+ *
+ * gets the name of a unit using their username
+ *
+ * @param unitID
+ * The id of the unit who's name we want
+ * @return char
+ * name of unit
+ */
+
+ function getUnitName($unitID)
+ {
+ global $default;
+
+ $sql = new Owl_DB;
+
+
+ // check that username exists if it does'nt return false
+ $query = "SELECT name FROM $default->owl_units_table WHERE id = '" . $unitID . "'";
+ $sql->query($query);
+ $rows = $sql->num_rows($sql);
+ // go into record set
+ $sql->next_record();
+
+ // store the id in a variable
+ $name = $sql->f("name");
+
+ // if no entry..unit name does'nt exist
+ if ($rows == 0)
+ {
+ // duplicate username
+ $default->errorMessage = "GroupManager::The unit does not exist
";
+ $default->log->debug($default->errorMessage);
+ return false;
+ }
+ else
+ {
+ return $name;
+ }
+ }
+
+ }
+
+?>
\ No newline at end of file