X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttUserHelper.class.php;h=17ef08c23a603e7ffe1a9936607f51d70db87fd2;hb=817c14c6c2098d85ef912fb95898c857bf533b4f;hp=0d628f6d080b65b5b6db089f91114fe819145e26;hpb=cb611bf2abbb4072459632155b11301ae6fe840b;p=timetracker.git diff --git a/WEB-INF/lib/ttUserHelper.class.php b/WEB-INF/lib/ttUserHelper.class.php index 0d628f6d..17ef08c2 100644 --- a/WEB-INF/lib/ttUserHelper.class.php +++ b/WEB-INF/lib/ttUserHelper.class.php @@ -104,6 +104,7 @@ class ttUserHelper { $group_id = (int) $fields['group_id']; $org_id = (int) $fields['org_id']; $rate = str_replace(',', '.', isset($fields['rate']) ? $fields['rate'] : 0); + $quota_percent = str_replace(',', '.', isset($fields['quota_percent']) ? $fields['quota_percent'] : 100); if($rate == '') $rate = 0; if (array_key_exists('status', $fields)) { // Key exists and may be NULL during migration of deleted acounts. @@ -113,9 +114,9 @@ class ttUserHelper { $created_ip_v = ', '.$mdb2->quote($_SERVER['REMOTE_ADDR']); $created_by_v = ', '.$user->id; - $sql = "insert into tt_users (name, login, password, group_id, org_id, role_id, client_id, rate, email, created, created_ip, created_by $status_f) values (". + $sql = "insert into tt_users (name, login, password, group_id, org_id, role_id, client_id, rate, quota_percent, email, created, created_ip, created_by $status_f) values (". $mdb2->quote($fields['name']).", ".$mdb2->quote($fields['login']). - ", $password, $group_id, $org_id, ".$mdb2->quote($fields['role_id']).", ".$mdb2->quote($fields['client_id']).", $rate, ".$mdb2->quote($email).", now() $created_ip_v $created_by_v $status_v)"; + ", $password, $group_id, $org_id, ".$mdb2->quote($fields['role_id']).", ".$mdb2->quote($fields['client_id']).", $rate, $quota_percent, ".$mdb2->quote($email).", now() $created_ip_v $created_by_v $status_v)"; $affected = $mdb2->exec($sql); // Now deal with project assignment. @@ -146,16 +147,27 @@ class ttUserHelper { $mdb2 = getConnection(); // Check parameters. - if (!$user_id || !isset($fields['login'])) + if (!$user_id) return false; + $group_id = $user->getGroup(); + $org_id = $user->org_id; + // Prepare query parts. + if (isset($fields['login'])) { + $login_part = ", login = ".$mdb2->quote($fields['login']); + } + if (isset($fields['password'])) $pass_part = ', password = md5('.$mdb2->quote($fields['password']).')'; - if (in_array('manage_users', $user->rights)) { + + if (isset($fields['name'])) + $name_part = ', name = '.$mdb2->quote($fields['name']); + + if ($user->can('manage_users')) { if (isset($fields['role_id'])) { $role_id = (int) $fields['role_id']; - $role_id_part = ", role_id = $role_id"; + $role_part = ", role_id = $role_id"; } if (array_key_exists('client_id', $fields)) // Could be NULL. $client_part = ", client_id = ".$mdb2->quote($fields['client_id']); @@ -167,17 +179,24 @@ class ttUserHelper { $rate_part = ", rate = ".$mdb2->quote($rate); } + if (array_key_exists('quota_percent', $fields)) { + $quota_percent = str_replace(',', '.', isset($fields['quota_percent']) ? $fields['quota_percent'] : 100); + $quota_percent_part = ", quota_percent = ".$mdb2->quote($quota_percent); + } + + if (isset($fields['email'])) + $email_part = ', email = '.$mdb2->quote($fields['email']); + if (isset($fields['status'])) { $status = (int) $fields['status']; $status_part = ", status = $status"; } $modified_part = ', modified = now(), modified_ip = '.$mdb2->quote($_SERVER['REMOTE_ADDR']).', modified_by = '.$user->id; + $parts = ltrim($login_part.$pass_part.$name_part.$role_part.$client_part.$rate_part.$quota_percent_part.$email_part.$modified_part.$status_part, ','); - $sql = "update tt_users set login = ".$mdb2->quote($fields['login']). - "$pass_part, name = ".$mdb2->quote($fields['name']). - "$role_id_part $client_part $rate_part $modified_part $status_part, email = ".$mdb2->quote($fields['email']). - " where id = $user_id"; + $sql = "update tt_users set $parts". + " where id = $user_id and group_id = $group_id and org_id = $org_id"; $affected = $mdb2->exec($sql); if (is_a($affected, 'PEAR_Error')) return false; @@ -367,4 +386,39 @@ class ttUserHelper { $sql = "update tt_users set accessed = now(), accessed_ip = $accessed_ip where id = $user->id"; $mdb2->exec($sql); } + + // canAdd determines if we can add a user in case there is a limit. + static function canAdd($num_users = 1) { + $mdb2 = getConnection(); + $sql = "select param_value from tt_site_config where param_name = 'max_users'"; + $res = $mdb2->query($sql); + $val = $res->fetchRow(); + if (!$val) return true; // No limit. + + $max_count = $val['param_value']; + $sql = "select count(*) as user_count from tt_users where group_id > 0 and status is not null"; + $res = $mdb2->query($sql); + $val = $res->fetchRow(); + if ($val['user_count'] <= $max_count - $num_users) + return true; // Limit not reached. + + return false; + } + + // getUserRank - obtains a rank for a given user. + static function getUserRank($user_id) { + global $user; + $mdb2 = getConnection(); + + $group_id = $user->getGroup(); + $org_id = $user->org_id; + + $sql = "select r.rank from tt_users u". + " left join tt_roles r on (u.role_id = r.id)". + " where u.id = $user_id and u.group_id = $group_id and u.org_id = $org_id"; + $res = $mdb2->query($sql); + if (is_a($res, 'PEAR_Error')) return 0; + $val = $res->fetchRow(); + return $val['rank']; + } }