import('ttConfigHelper');
import('ttGroupHelper');
+import('ttBehalfUser');
import('ttGroup');
import('form.Form');
import('form.ActionForm');
var $role_name = null; // Role name.
var $rank = null; // User role rank.
var $client_id = null; // Client id for client user role.
+ var $quota_percent = 100.0; // Time quota percent for quotas plugin.
var $behalf_id = null; // User id, on behalf of whom we are working.
var $behalf_group_id = null; // Group id, on behalf of which we are working.
var $behalf_name = null; // User name, on behalf of whom we are working.
var $workday_minutes = 480; // Number of work minutes in a regular day.
var $rights = array(); // An array of user rights such as 'track_own_time', etc.
var $is_client = false; // Whether user is a client as determined by missing 'track_own_time' right.
- var $minutes_in_unit = 15; // Number of minutes in unit for Work units plugin.
- var $first_unit_threshold = 0;// Threshold for 1st unit for Work units plugin.
- var $unit_totals_only = 0; // Totals only option for the Work units plugin.
+ var $behalfUser = null; // A ttBehalfUser instance with on behalf user attributes.
var $behalfGroup = null; // A ttGroup instance with on behalf group attributes.
// Constructor.
$mdb2 = getConnection();
- $sql = "SELECT u.id, u.login, u.name, u.group_id, u.role_id, r.rank, r.name as role_name, r.rights, u.client_id, u.email,
- g.org_id, g.name as group_name, g.currency, g.lang, g.decimal_mark, g.date_format, g.time_format, g.week_start,
- g.tracking_mode, g.project_required, g.task_required, g.record_type,
- g.bcc_email, g.allow_ip, g.password_complexity, g.plugins, g.config, g.lock_spec, g.workday_minutes, g.custom_logo
- FROM tt_users u LEFT JOIN tt_groups g ON (u.group_id = g.id) LEFT JOIN tt_roles r on (r.id = u.role_id) WHERE ";
+ $sql = "SELECT u.id, u.login, u.name, u.group_id, u.role_id, r.rank, r.name as role_name, r.rights, u.client_id,".
+ " u.quota_percent, u.email, g.org_id, g.name as group_name, g.currency, g.lang, g.decimal_mark, g.date_format,".
+ " g.time_format, g.week_start, g.tracking_mode, g.project_required, g.task_required, g.record_type,".
+ " g.bcc_email, g.allow_ip, g.password_complexity, g.plugins, g.config, g.lock_spec, g.workday_minutes, g.custom_logo".
+ " FROM tt_users u LEFT JOIN tt_groups g ON (u.group_id = g.id) LEFT JOIN tt_roles r on (r.id = u.role_id) WHERE ";
if ($id)
$sql .= "u.id = $id";
else
$this->rank = $val['rank'];
$this->client_id = $val['client_id'];
$this->is_client = $this->client_id && !in_array('track_own_time', $this->rights);
+ if ($val['quota_percent']) $this->quota_percent = $val['quota_percent'];
$this->email = $val['email'];
$this->lang = $val['lang'];
$this->decimal_mark = $val['decimal_mark'];
$this->punch_mode = $config->getDefinedValue('punch_mode');
$this->allow_overlap = $config->getDefinedValue('allow_overlap');
$this->future_entries = $config->getDefinedValue('future_entries');
- if ($this->isPluginEnabled('wu')) {
- $minutes_in_unit = $config->getIntValue('minutes_in_unit', 15);
- if ($minutes_in_unit) $this->minutes_in_unit = $minutes_in_unit;
- $first_unit_threshold = $config->getIntValue('1st_unit_threshold');
- if ($first_unit_threshold) $this->first_unit_threshold = $first_unit_threshold;
- $this->unit_totals_only = $config->getDefinedValue('unit_totals_only');
- }
// Set "on behalf" id and name (user).
if (isset($_SESSION['behalf_id'])) {
$this->behalf_id = $_SESSION['behalf_id'];
$this->behalf_name = $_SESSION['behalf_name'];
+
+ $this->behalfUser = new ttBehalfUser($this->behalf_id, $this->org_id);
}
// Set "on behalf" id and name (group).
if (isset($_SESSION['behalf_group_id'])) {
}
}
- // The getUser returns user id on behalf of whom the current user is operating.
+ // getUser returns user id on behalf of whom the current user is operating.
function getUser() {
- return ($this->behalf_id ? $this->behalf_id : $this->id);
+ return ($this->behalfUser ? $this->behalfUser->id : $this->id);
+ }
+
+ // getQuotaPercent returns quota percent for active user.
+ function getQuotaPercent() {
+ return ($this->behalfUser ? $this->behalfUser->quota_percent : $this->quota_percent);
}
// The getGroup returns group id on behalf of which the current user is operating.
// then rank restriction does not apply.
$max_rank = $this->behalfGroup ? MAX_RANK : $this->rank;
- $sql = "select u.id, u.name, u.login, u.role_id, u.client_id, u.status, u.rate, u.email from tt_users u".
+ $sql = "select u.id, u.name, u.login, u.role_id, u.client_id, u.status, u.rate, u.quota_percent, u.email 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 and u.status is not null".
" and (r.rank < $max_rank or (r.rank = $max_rank and u.id = $this->id))"; // Users with lesser roles or self.
// Unset things first.
$this->behalf_id = null;
$this->behalf_name = null;
+ unset($this->behalfUser);
unset($_SESSION['behalf_id']);
unset($_SESSION['behalf_name']);
$_SESSION['behalf_name'] = $onBehalfUserName;
$this->behalf_id = $user_id;
$this->behalf_name = $onBehalfUserName;
+
+ $this->behalfUser = new ttBehalfUser($this->behalf_id, $this->org_id);
return;
}