Implemented delete group feature in group editor.
[timetracker.git] / WEB-INF / lib / ttUser.class.php
index 469345b..ad5c041 100644 (file)
@@ -27,6 +27,7 @@
 // +----------------------------------------------------------------------+
 
 import('ttConfigHelper');
+import('ttGroupHelper');
 
 class ttUser {
   var $login = null;            // User login.
@@ -192,10 +193,11 @@ class ttUser {
     $result = array();
     $mdb2 = getConnection();
 
+    $group_id = $this->behalf_group_id ? $this->behalf_group_id : $this->group_id;
     // Do a query with inner join to get assigned projects.
     $sql = "select p.id, p.name, p.description, p.tasks, upb.rate from tt_projects p
       inner join tt_user_project_binds upb on (upb.user_id = ".$this->getActiveUser()." and upb.project_id = p.id and upb.status = 1)
-      where p.group_id = $this->group_id and p.status = 1 order by p.name";
+      where p.group_id = $group_id and p.status = 1 order by p.name";
     $res = $mdb2->query($sql);
     if (!is_a($res, 'PEAR_Error')) {
       while ($val = $res->fetchRow()) {
@@ -378,14 +380,14 @@ class ttUser {
     if ($selected_group_id != $this->group_id) {
       // We are in one of subgroups, and a parent exists.
       // Get parent group info.
-      $sql = "select parent_id from tt_groups where org_id = $this->org_id and id = $selected_group_id";
+      $sql = "select parent_id from tt_groups where org_id = $this->org_id and id = $selected_group_id and status = 1";
       $res = $mdb2->query($sql);
       if (!is_a($res, 'PEAR_Error')) {
         $val = $res->fetchRow();
         $parent_id = $val['parent_id'];
         if ($parent_id) {
           // Get parent group name.
-          $sql = "select name from tt_groups where org_id = $this->org_id and id = $parent_id";
+          $sql = "select name from tt_groups where org_id = $this->org_id and id = $parent_id and status = 1";
           $res = $mdb2->query($sql);
           if (!is_a($res, 'PEAR_Error')) {
             $val = $res->fetchRow();
@@ -399,11 +401,29 @@ class ttUser {
     $groups[] = array('id'=>$selected_group_id,'name'=>$selected_group_name);
 
     // Add subgroups.
-    $sql = "select id, name from tt_groups where org_id = $this->org_id and parent_id = $selected_group_id";
+    $sql = "select id, name from tt_groups where org_id = $this->org_id and parent_id = $selected_group_id and status = 1";
+    //die($sql);
+    $res = $mdb2->query($sql);
+    if (!is_a($res, 'PEAR_Error')) {
+      while ($val = $res->fetchRow()) {
+        $groups[] = $val;
+      }
+    }
+    return $groups;
+  }
+
+  // getSubgroups obtains a list of immediate subgroups.
+  function getSubgroups($group_id = null) {
+    $mdb2 = getConnection();
+
+    if (!$group_id) $group_id = $this->getActiveGroup();
+
+    $sql = "select id, name, description from tt_groups where org_id = $this->org_id".
+      " and parent_id = $group_id and status is not null";
     $res = $mdb2->query($sql);
     if (!is_a($res, 'PEAR_Error')) {
       while ($val = $res->fetchRow()) {
-        $groups[] = array('id'=>$val['id'],'name'=>$val['name']);
+        $groups[] = $val;
       }
     }
     return $groups;
@@ -584,6 +604,14 @@ class ttUser {
     return true;
   }
 
+  // isGroupValid determines if a group is valid for user.
+  function isGroupValid($group_id) {
+    if ($group_id == $this->group_id)
+      return true;
+    else
+      return $this->isSubgroupValid($group_id);
+  }
+
   // isSubgroupValid determines if a subgroup is valid for user.
   // A subgroup is valid if:
   //   - user can manage_subgroups;