}
// isClientRole determines if the role is a "client" role.
- // This simply means the role has no "data_entry" right.
+ // This simply means the role has no "track_own_time" right.
static function isClientRole($role_id) {
global $user;
$mdb2 = getConnection();
if (!is_a($res, 'PEAR_Error')) {
$val = $res->fetchRow();
if ($val['rights']) {
- return !in_array('data_entry', explode(',', $val['rights']));
+ return !in_array('track_own_time', explode(',', $val['rights']));
}
}
return false;
$mdb2 = getConnection();
$rights_client = 'view_own_reports,view_own_charts,view_own_invoices,manage_own_settings';
- $rights_user = 'data_entry,view_own_reports,view_own_charts,manage_own_settings,view_users';
- $rights_supervisor = $rights_user.',on_behalf_data_entry,view_reports,view_charts,override_punch_mode,swap_roles,approve_timesheets';
+ $rights_user = 'track_own_time,track_own_expenses,view_own_reports,view_own_charts,manage_own_settings,view_users';
+ $rights_supervisor = $rights_user.',track_time,track_expenses,view_reports,view_charts,override_punch_mode,swap_roles,approve_timesheets';
$rights_comanager = $rights_supervisor.',manage_users,manage_projects,manage_tasks,manage_custom_fields,manage_clients,manage_invoices';
$rights_manager = $rights_comanager.',manage_features,manage_basic_settings,manage_advanced_settings,manage_roles,export_data,manage_subgroups';
global $user;
$rights_client = 'view_own_reports,view_own_charts,view_own_invoices,manage_own_settings';
- $rights_user = 'data_entry,view_own_reports,view_own_charts,manage_own_settings,view_users';
- $rights_supervisor = $rights_user.',on_behalf_data_entry,view_reports,view_charts,override_punch_mode,swap_roles,approve_timesheets';
+ $rights_user = 'track_own_time,track_own_expenses,view_own_reports,view_own_charts,manage_own_settings,view_users';
+ $rights_supervisor = $rights_user.',track_time,track_expenses,view_reports,view_charts,override_punch_mode,swap_roles,approve_timesheets';
$rights_comanager = $rights_supervisor.',manage_users,manage_projects,manage_tasks,manage_custom_fields,manage_clients,manage_invoices';
$rights_manager = $rights_comanager.',manage_features,manage_basic_settings,manage_advanced_settings,manage_roles,export_data,manage_subgroups';
$result = array();
if (!is_a($res, 'PEAR_Error')) {
while ($val = $res->fetchRow()) {
- $val['is_client'] = in_array('data_entry', explode(',', $val['rights'])) ? 0 : 1; // Clients do not have data entry right.
+ $val['is_client'] = in_array('track_own_time', explode(',', $val['rights'])) ? 0 : 1; // Clients do not have data entry right.
if ($val['is_client'] && !$user->isPluginEnabled('cl'))
- continue; // Skip adding a client role/
+ continue; // Skip adding a client role.
$result[] = $val;
}
}
$result = array();
if (!is_a($res, 'PEAR_Error')) {
while ($val = $res->fetchRow()) {
- $val['is_client'] = in_array('data_entry', explode(',', $val['rights'])) ? 0 : 1; // Clients do not have data entry right.
+ $val['is_client'] = in_array('track_own_time', explode(',', $val['rights'])) ? 0 : 1; // Clients do not have data entry right.
$result[] = $val;
}
}
$result = array();
$mdb2 = getConnection();
- if (ROLE_CLIENT == $user->role && $user->client_id)
+ if ($user->isClient())
$client_part = " and i.client_id = $user->client_id";
$sql = "select i.id, i.name, i.date, i.client_id, i.status, c.name as client_name from tt_invoices i
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.
- var $rights = array(); // An array of user rights such as 'data_entry', etc.
- var $is_client = false; // Whether user is a client as determined by missing 'data_entry' right.
+ 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.
// Constructor.
function __construct($login, $id = null) {
$this->role = $val['role'];
$this->role_id = $val['role_id'];
$this->rights = explode(',', $val['rights']);
- $this->is_client = !in_array('data_entry', $this->rights);
+ $this->is_client = !in_array('track_own_time', $this->rights);
$this->rank = $val['rank'];
// Downgrade rank to legacy role, if it is still in use.
if ($this->role > 0 && $this->rank > $this->role)
}
}
- // The getActiveUser returns user id on behalf of whom current user is operating.
+ // 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);
}
+ // can - determines whether user has a right to do something.
+ function can($do_something) {
+ return in_array($do_something, $this->rights);
+ }
+
// isAdmin - determines whether current user is admin (has right_administer_site).
function isAdmin() {
return (right_administer_site & $this->role);
<br>
<table cellspacing="0" cellpadding="4" width="100%" border="0">
<tr>
- <td align="center"> Anuko Time Tracker 1.17.42.4068 | Copyright © <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+ <td align="center"> Anuko Time Tracker 1.17.43.4069 | Copyright © <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
<a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
<a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
<a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>
setChange("ALTER TABLE `tt_log` ADD `paid` tinyint(4) NULL default '0' AFTER `billable`");
}
- if ($_POST["convert11400to11740"]) {
+ if ($_POST["convert11400to11743"]) {
setChange("ALTER TABLE `tt_teams` DROP `address`");
setChange("ALTER TABLE `tt_fav_reports` ADD `report_spec` text default NULL AFTER `user_id`");
setChange("ALTER TABLE `tt_fav_reports` ADD `paid_status` tinyint(4) default NULL AFTER `invoice`");
setChange("update `tt_roles` inner join `tt_site_config` sc on (sc.param_name = 'version_db' and sc.param_value = '1.17.35') set rights = replace(rights, 'view_data', 'view_reports,view_charts') where team_id > 0");
setChange("update `tt_roles` inner join `tt_site_config` sc on (sc.param_name = 'version_db' and sc.param_value = '1.17.35') set rights = replace(rights, 'view_own_charts,manage_own_settings', 'view_own_charts,view_own_invoices,manage_own_settings') where team_id > 0 and rank = 16");
setChange("UPDATE `tt_site_config` SET `param_value` = '1.17.40' where param_name = 'version_db'");
+ setChange("update `tt_roles` inner join `tt_site_config` sc on (sc.param_name = 'version_db' and sc.param_value = '1.17.40') set rights = replace(rights, 'on_behalf_data_entry', 'track_time,track_expenses')");
+ setChange("update `tt_roles` inner join `tt_site_config` sc on (sc.param_name = 'version_db' and sc.param_value = '1.17.40') set rights = replace(rights, 'data_entry', 'track_own_time,track_own_expenses')");
+ setChange("UPDATE `tt_site_config` SET `param_value` = '1.17.43' where param_name = 'version_db'");
}
if ($_POST["cleanup"]) {
<h2>DB Install</h2>
<table width="80%" border="1" cellpadding="10" cellspacing="0">
<tr>
- <td width="80%"><b>Create database structure (v1.17.40)</b>
+ <td width="80%"><b>Create database structure (v1.17.43)</b>
<br>(applies only to new installations, do not execute when updating)</br></td><td><input type="submit" name="crstructure" value="Create"></td>
</tr>
</table>
<td><input type="submit" name="convert1600to11400" value="Update"><br></td>
</tr>
<tr valign="top">
- <td>Update database structure (v1.14 to v1.17.40)</td>
- <td><input type="submit" name="convert11400to11740" value="Update"><br></td>
+ <td>Update database structure (v1.14 to v1.17.43)</td>
+ <td><input type="submit" name="convert11400to11743" value="Update"><br></td>
</tr>
</table>
import('ttExpenseHelper');
// Access check.
-if (!ttAccessAllowed('data_entry') || !$user->isPluginEnabled('ex')) {
+if (!ttAccessAllowed('track_own_expenses') || !$user->isPluginEnabled('ex')) {
header('Location: access_denied.php');
exit();
}
import('ttExpenseHelper');
// Access check.
-if (!ttAccessAllowed('data_entry') || !$user->isPluginEnabled('ex')) {
+if (!ttAccessAllowed('track_own_expenses') || !$user->isPluginEnabled('ex')) {
header('Location: access_denied.php');
exit();
}
import('ttExpenseHelper');
// Access check.
-if (!ttAccessAllowed('data_entry') || !$user->isPluginEnabled('ex')) {
+if (!ttAccessAllowed('track_own_expenses') || !$user->isPluginEnabled('ex')) {
header('Location: access_denied.php');
exit();
}
import('ttExpenseHelper');
// Access check.
-if (!ttAccessAllowed('data_entry') || !$user->isPluginEnabled('ex')) {
+if (!ttAccessAllowed('track_own_expenses') || !$user->isPluginEnabled('ex')) {
header('Location: access_denied.php');
exit();
}
import('ttExpenseHelper');
// Access check.
-if (!ttAccessAllowed('data_entry') || !$user->isPluginEnabled('ex')) {
+if (!ttAccessAllowed('track_own_expenses') || !$user->isPluginEnabled('ex')) {
header('Location: access_denied.php');
exit();
}
import('ttExpenseHelper');
// Access check.
-if (!ttAccessAllowed('data_entry') || !$user->isPluginEnabled('ex')) {
+if (!ttAccessAllowed('track_own_expenses') || !$user->isPluginEnabled('ex')) {
header('Location: access_denied.php');
exit();
}
import('ttTeamHelper');
// Access check.
-if (!ttAccessAllowed('data_entry') || (MODE_PROJECTS != $user->tracking_mode && MODE_PROJECTS_AND_TASKS != $user->tracking_mode)) {
+if (!ttAccessAllowed('track_own_time') || (MODE_PROJECTS != $user->tracking_mode && MODE_PROJECTS_AND_TASKS != $user->tracking_mode)) {
header('Location: access_denied.php');
exit();
}
import('DateAndTime');
// Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
header('Location: access_denied.php');
exit();
}
import('DateAndTime');
// Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
header('Location: access_denied.php');
exit();
}
import('DateAndTime');
// Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
header('Location: access_denied.php');
exit();
}
import('DateAndTime');
// Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
header('Location: access_denied.php');
exit();
}
# Insert site-wide roles - site administrator and top manager.
INSERT INTO `tt_roles` (`team_id`, `name`, `rank`, `rights`) VALUES (0, 'Site administrator', 1024, 'administer_site');
-INSERT INTO `tt_roles` (`team_id`, `name`, `rank`, `rights`) VALUES (0, 'Top manager', 512, 'data_entry,view_own_reports,view_own_charts,view_own_invoices,manage_own_settings,view_users,on_behalf_data_entry,view_reports,view_charts,override_punch_mode,swap_roles,approve_timesheets,manage_users,manage_projects,manage_tasks,manage_custom_fields,manage_clients,manage_invoices,manage_features,manage_basic_settings,manage_advanced_settings,manage_roles,export_data,manage_subgroups');
+INSERT INTO `tt_roles` (`team_id`, `name`, `rank`, `rights`) VALUES (0, 'Top manager', 512, 'track_own_time,track_own_expenses,view_own_reports,view_own_charts,view_own_invoices,manage_own_settings,view_users,track_time,track_expenses,view_reports,view_charts,override_punch_mode,swap_roles,approve_timesheets,manage_users,manage_projects,manage_tasks,manage_custom_fields,manage_clients,manage_invoices,manage_features,manage_basic_settings,manage_advanced_settings,manage_roles,export_data,manage_subgroups');
#
PRIMARY KEY (`param_name`)
);
-INSERT INTO `tt_site_config` (`param_name`, `param_value`, `created`) VALUES ('version_db', '1.17.40', now()); # TODO: change when structure changes.
+INSERT INTO `tt_site_config` (`param_name`, `param_value`, `created`) VALUES ('version_db', '1.17.43', now()); # TODO: change when structure changes.
import('ttTeamHelper');
// Access check.
-if (!ttAccessAllowed('data_entry') || (MODE_PROJECTS != $user->tracking_mode && MODE_PROJECTS_AND_TASKS != $user->tracking_mode)) {
+if (!ttAccessAllowed('track_own_time') || (MODE_PROJECTS != $user->tracking_mode && MODE_PROJECTS_AND_TASKS != $user->tracking_mode)) {
header('Location: access_denied.php');
exit();
}
'name' => $cl_name,
'rank' => $cl_rank,
'description' => $cl_description,
- 'rights' => 'data_entry,view_own_reports,view_own_charts,manage_own_settings,view_users', // Default user rights.
+ 'rights' => 'track_own_time,track_own_expenses,view_own_reports,view_own_charts,manage_own_settings,view_users', // Default user rights.
'status' => ACTIVE))) {
header('Location: roles.php');
exit();
// }
// Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
header('Location: access_denied.php');
exit();
}
import('DateAndTime');
// Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
header('Location: access_denied.php');
exit();
}
import('DateAndTime');
// Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
header('Location: access_denied.php');
exit();
}
import('DateAndTime');
// Access check.
-if (!ttAccessAllowed('data_entry') || !$user->isPluginEnabled('wv')) {
+if (!ttAccessAllowed('track_own_time') || !$user->isPluginEnabled('wv')) {
header('Location: access_denied.php');
exit();
}