]> wagnertech.de Git - timetracker.git/blobdiff - WEB-INF/lib/ttUser.class.php
Fixed visibility of the Required checkbox on group settings.
[timetracker.git] / WEB-INF / lib / ttUser.class.php
index 2781ea6f2c09afd087f00bd396ba2dac35386362..ae197c6983351b3213f54e0dda7f939efcf1bd7a 100644 (file)
@@ -57,7 +57,7 @@ class ttUser {
   var $currency = null;         // Currency.
   var $plugins = null;          // Comma-separated list of enabled plugins.
   var $config = null;           // Comma-separated list of miscellaneous config options.
-  var $team = null;             // Team name.
+  var $group = null;            // Group name.
   var $custom_logo = 0;         // Whether to use a custom logo for team.
   var $lock_spec = null;        // Cron specification for record locking.
   var $workday_minutes = 480;   // Number of work minutes in a regular day.
@@ -113,7 +113,7 @@ class ttUser {
       $this->record_type = $val['record_type'];
       $this->bcc_email = $val['bcc_email'];
       $this->allow_ip = $val['allow_ip'];
-      $this->team = $val['group_name'];
+      $this->group = $val['group_name'];
       $this->currency = $val['currency'];
       $this->plugins = $val['plugins'];
       $this->lock_spec = $val['lock_spec'];
@@ -148,7 +148,7 @@ class ttUser {
     return in_array($do_something, $this->rights);
   }
 
-  // isAdmin - determines whether current user is admin (has right_administer_site).
+  // isAdmin - determines whether current user is admin.
   function isAdmin() {
     return $this->can('administer_site');
   }
@@ -205,6 +205,64 @@ class ttUser {
     return $result;
   }
 
+  // getAssignedTasks - returns an array of assigned tasks.
+  function getAssignedTasks()
+  {
+    // Start with projects;
+    $projects = $this->getAssignedProjects();
+    if (!$projects) return false;
+
+    // Build an array of task ids.
+    $task_ids = array();
+    foreach($projects as $project) {
+      $one_project_tasks = $project['tasks'] ? explode(',', $project['tasks']) : array();
+      $task_ids = array_unique(array_merge($task_ids, $one_project_tasks));
+    }
+    if (!$task_ids) return false;
+
+    // Get task descriptions.
+    $result = array();
+    $mdb2 = getConnection();
+    $tasks = implode(',', $task_ids); // This is a comma-separated list of task ids.
+
+    $sql = "select id, name, description from tt_tasks".
+      " where group_id = $this->group_id and status = 1 and id in ($tasks) order by name";
+    $res = $mdb2->query($sql);
+    if (!is_a($res, 'PEAR_Error')) {
+      while ($val = $res->fetchRow()) {
+        $result[] = $val;
+      }
+    }
+    return $result;
+  }
+
+  // getAssignedClients - returns an array of clients assigned to own projects.
+  function getAssignedClients()
+  {
+    // Start with projects;
+    $projects = $this->getAssignedProjects();
+    if (!$projects) return false;
+    $assigned_project_ids = array();
+    foreach($projects as $project) {
+      $assigned_project_ids[] = $project['id'];
+    }
+
+    $mdb2 = getConnection();
+
+    // Get active clients for group.
+    $clients = array();
+    $sql = "select id, name, address, projects from tt_clients where group_id = $this->group_id and status = 1";
+    $res = $mdb2->query($sql);
+    if (!is_a($res, 'PEAR_Error')) {
+      while ($val = $res->fetchRow()) {
+        $client_project_ids = $val['projects'] ? explode(',', $val['projects']) : array();
+        if (array_intersect($assigned_project_ids, $client_project_ids))
+          $clients[] = $val; // Add client if one of user projects is a client project, too.
+      }
+    }
+    return $clients;
+  }
+
   // isDateLocked checks whether a specifc date is locked for modifications.
   function isDateLocked($date)
   {
@@ -355,4 +413,41 @@ class ttUser {
     }
     return false;
   }
+
+  // updateGroup updates group information with new data.
+  function updateGroup($fields) {
+
+    $mdb2 = getConnection();
+
+    if (isset($fields['name'])) $name_part = ', name = '.$mdb2->quote($fields['name']);
+    if (isset($fields['currency'])) $currency_part = ', currency = '.$mdb2->quote($fields['currency']);
+    if (isset($fields['lang'])) $lang_part = ', lang = '.$mdb2->quote($fields['lang']);
+    if (isset($fields['decimal_mark'])) $decimal_mark_part = ', decimal_mark = '.$mdb2->quote($fields['decimal_mark']);
+    if (isset($fields['date_format'])) $date_format_part = ', date_format = '.$mdb2->quote($fields['date_format']);
+    if (isset($fields['time_format'])) $time_format_part = ', time_format = '.$mdb2->quote($fields['time_format']);
+    if (isset($fields['week_start'])) $week_start_part = ', week_start = '.(int) $fields['week_start'];
+    if (isset($fields['tracking_mode'])) {
+      $tracking_mode_part = ', tracking_mode = '.(int) $fields['tracking_mode'];
+      $project_required_part = ' , project_required = '.(int) $fields['project_required'];
+      $task_required_part = ' , task_required = '.(int) $fields['task_required'];
+    }
+    if (isset($fields['record_type'])) $record_type_part = ', record_type = '.(int) $fields['record_type'];
+    if (isset($fields['bcc_email'])) $bcc_email_part = ', bcc_email = '.$mdb2->quote($fields['bcc_email']);
+    if (isset($fields['allow_ip'])) $allow_ip_part = ', allow_ip = '.$mdb2->quote($fields['allow_ip']);
+    if (isset($fields['plugins'])) $plugins_part = ', plugins = '.$mdb2->quote($fields['plugins']);
+    if (isset($fields['config'])) $config_part = ', config = '.$mdb2->quote($fields['config']);
+    if (isset($fields['lock_spec'])) $lock_spec_part = ', lock_spec = '.$mdb2->quote($fields['lock_spec']);
+    if (isset($fields['workday_minutes'])) $workday_minutes_part = ', workday_minutes = '.$mdb2->quote($fields['workday_minutes']);
+    $modified_part = ', modified = now(), modified_ip = '.$mdb2->quote($_SERVER['REMOTE_ADDR']).', modified_by = '.$mdb2->quote($this->id);
+
+    $parts = trim($name_part.$currency_part.$lang_part.$decimal_mark_part.$date_format_part.
+      $time_format_part.$week_start_part.$tracking_mode_part.$task_required_part.$project_required_part.$record_type_part.
+      $bcc_email_part.$allow_ip_part.$plugins_part.$config_part.$lock_spec_part.$workday_minutes_part.$modified_part, ',');
+
+    $sql = "update tt_groups set $parts where id = $this->group_id";
+    $affected = $mdb2->exec($sql);
+    if (is_a($affected, 'PEAR_Error')) return false;
+
+    return true;
+  }
 }