var $password_complexity = null; // Password complexity example.
var $currency = null; // Currency.
var $plugins = null; // Comma-separated list of enabled plugins.
+
+ // Refactoring ongoing. Towards using helper instead of config string?
var $config = null; // Comma-separated list of miscellaneous config options.
+ var $configHelper = null; // An instance of ttConfigHelper class.
+
var $custom_logo = 0; // Whether to use a custom logo for group.
var $lock_spec = null; // Cron specification for record locking.
+ var $holidays = null; // Holidays specification.
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.
$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".
+ " g.bcc_email, g.allow_ip, g.password_complexity, g.plugins, g.config, g.lock_spec, g.holidays, 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";
$this->currency = $val['currency'];
$this->plugins = $val['plugins'];
$this->lock_spec = $val['lock_spec'];
+ $this->holidays = $val['holidays'];
$this->workday_minutes = $val['workday_minutes'];
$this->custom_logo = $val['custom_logo'];
+ // TODO: refactor this.
$this->config = $val['config'];
- $config = new ttConfigHelper($this->config);
+ $this->configHelper = new ttConfigHelper($val['config']);
+
// Set user config options.
- $this->show_holidays = $config->getDefinedValue('show_holidays');
- $this->punch_mode = $config->getDefinedValue('punch_mode');
- $this->allow_overlap = $config->getDefinedValue('allow_overlap');
- $this->future_entries = $config->getDefinedValue('future_entries');
+ $this->show_holidays = $this->configHelper->getDefinedValue('show_holidays');
+ $this->punch_mode = $this->configHelper->getDefinedValue('punch_mode');
+ $this->allow_overlap = $this->configHelper->getDefinedValue('allow_overlap');
+ $this->future_entries = $this->configHelper->getDefinedValue('future_entries');
// Set "on behalf" id and name (user).
if (isset($_SESSION['behalf_id'])) {
return ($this->behalfGroup ? $this->behalfGroup->time_format : $this->time_format);
}
+ // getWeekStart returns week start day for active group.
+ function getWeekStart() {
+ return ($this->behalfGroup ? $this->behalfGroup->week_start : $this->week_start);
+ }
+
// getTrackingMode returns tracking mode for active group.
function getTrackingMode() {
return ($this->behalfGroup ? $this->behalfGroup->tracking_mode : $this->tracking_mode);
return ($this->behalfGroup ? $this->behalfGroup->lock_spec : $this->lock_spec);
}
+ // getHolidays returns holidays specification for active group.
+ function getHolidays() {
+ return ($this->behalfGroup ? $this->behalfGroup->holidays : $this->holidays);
+ }
+
// getWorkdayMinutes returns workday_minutes for active group.
function getWorkdayMinutes() {
return ($this->behalfGroup ? $this->behalfGroup->workday_minutes : $this->workday_minutes);
// getConfig returns config string for active group.
function getConfig() {
- return ($this->behalfGroup ? $this->behalfGroup->config : $this->config);
+ return ($this->behalfGroup ? $this->behalfGroup->configHelper->getConfig() : $this->configHelper->getConfig());
}
// getConfigOption returns true if an option is defined for group.
return in_array($plugin, explode(',', $this->getPlugins()));
}
+ // isOptionEnabled checks whether a config option is enabled for user.
+ function isOptionEnabled($option)
+ {
+ return $this->behalfGroup ? $this->behalfGroup->configHelper->getDefinedValue($option) : $this->configHelper->getDefinedValue($option);
+ }
+
+ // setOption sets an option inside of ttConfigHelper instance.
+ // Note that it does not write to the database.
+ function setOption($option, $enable = true)
+ {
+ return $this->behalfGroup ? $this->behalfGroup->configHelper->setDefinedValue($option, $enable) : $this->configHelper->setDefinedValue($option, $enable);
+ }
+
// getAssignedProjects - returns an array of assigned projects.
function getAssignedProjects($includeFiles = false)
{
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['holidays'])) $holidays_part = ', holidays = '.$mdb2->quote($fields['holidays']);
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.$description_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, ',');
+ $bcc_email_part.$allow_ip_part.$plugins_part.$config_part.$lock_spec_part.$holidays_part.$workday_minutes_part.$modified_part, ',');
$sql = "update tt_groups set $parts where id = $group_id and org_id = $this->org_id";
$affected = $mdb2->exec($sql);