import('ttConfigHelper');
import('ttGroupHelper');
+import('ttGroup');
class ttUser {
var $login = null; // User login.
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 $behalfGroup = null; // A ttGroup instance with on behalf group attributes.
+
// Constructor.
function __construct($login, $id = null) {
if (!$login && !$id) {
// 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->behalf_id = $_SESSION['behalf_id'];
+ $this->behalf_name = $_SESSION['behalf_name'];
}
// Set "on behalf" id and name (group).
if (isset($_SESSION['behalf_group_id'])) {
- $this->behalf_group_id = $_SESSION['behalf_group_id'];
- $this->behalf_group_name = $_SESSION['behalf_group_name'];
+ $this->behalf_group_id = $_SESSION['behalf_group_id'];
+ $this->behalf_group_name = $_SESSION['behalf_group_name'];
+
+ $this->behalfGroup = new ttGroup($this->behalf_group_id, $this->org_id);
}
}
}
+ // getDecimalMark returns decimal mark for active group.
+ function getDecimalMark() {
+ return ($this->behalfGroup ? $this->behalfGroup->decimal_mark : $this->decimal_mark);
+ }
+
+ // getTrackingMode returns tracking mode for active group.
+ function getTrackingMode() {
+ return ($this->behalfGroup ? $this->behalfGroup->tracking_mode : $this->tracking_mode);
+ }
+
// The getActiveUser returns user id on behalf of whom the current user is operating.
function getActiveUser() {
return ($this->behalf_id ? $this->behalf_id : $this->id);
// - The entire stack of groups all the way down to current on behalf group.
// - All immediate children of the current on behalf group.
// This allows user to navigate easily to home group, anything in between, and 1 level below.
+ //
+ // Note 1: group dropdown is, by design, to be placed on all pages where "relevant",
+ // such as users.php, projects.php, tasks.php, etc. But some features may be disabled
+ // in some groups. We should check for feature availability on group change
+ // in post and redirect to feature_disabled.php when this happens.
+ // This will allow us to keep dropdown content consistent on all pages.
+ // Filtering content of the dropdown does not seem right.
+ //
+ // Note 2: Menu should display according to $user home group settings.
+ // Pages, should look according to $user->behalfGroup settings (if set).
+ // For example, if home group allows tasks, menu should display Tasks,
+ // even when we are on behalf of a subgroup without tasks.
+ //
+ // Note 3: Language of all pages should be as in $user home group even when
+ // subgroups have a different language.
function getGroupsForDropdown() {
$mdb2 = getConnection();
$this->behalf_group_id = $group_id;
$this->behalf_group_name = $onBehalfGroupName;
+ unset($this->behalfGroup);
+ $this->behalfGroup = new ttGroup($this->behalf_group_id, $this->org_id);
+
// Adjust on behalf user.
$this->adjustBehalfId();
return;