Split data_entry right into track_time and track_expenses.
authorNik Okuntseff <support@anuko.com>
Tue, 13 Mar 2018 21:22:56 +0000 (21:22 +0000)
committerNik Okuntseff <support@anuko.com>
Tue, 13 Mar 2018 21:22:56 +0000 (21:22 +0000)
23 files changed:
WEB-INF/lib/ttRoleHelper.class.php
WEB-INF/lib/ttTeamHelper.class.php
WEB-INF/lib/ttUser.class.php
WEB-INF/templates/footer.tpl
dbinstall.php
expense_delete.php
expense_edit.php
expenses.php
mobile/expense_delete.php
mobile/expense_edit.php
mobile/expenses.php
mobile/projects.php
mobile/time.php
mobile/time_delete.php
mobile/time_edit.php
mobile/timer.php
mysql.sql
projects.php
role_add.php
time.php
time_delete.php
time_edit.php
week.php

index 20d31bc..bcd6605 100644 (file)
@@ -111,7 +111,7 @@ class ttRoleHelper {
   }
 
   // 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();
@@ -122,7 +122,7 @@ class ttRoleHelper {
     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;
@@ -222,8 +222,8 @@ class ttRoleHelper {
     $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';
 
@@ -280,8 +280,8 @@ class ttRoleHelper {
     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';
 
index d20f2a2..38a2d81 100644 (file)
@@ -276,9 +276,9 @@ class ttTeamHelper {
     $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;
       }
     }
@@ -296,7 +296,7 @@ class ttTeamHelper {
     $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;
       }
     }
@@ -409,7 +409,7 @@ class ttTeamHelper {
     $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
index fa9f020..2f7ff95 100644 (file)
@@ -60,8 +60,8 @@ class ttUser {
   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) {
@@ -97,7 +97,7 @@ class ttUser {
       $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)
@@ -142,11 +142,16 @@ class ttUser {
     }
   }
 
-  // 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);
index b4683b9..364fc34 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.17.42.4068 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.17.43.4069 | Copyright &copy; <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>
index d461dcb..3db74cc 100644 (file)
@@ -722,7 +722,7 @@ if ($_POST) {
     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`");
@@ -757,6 +757,9 @@ if ($_POST) {
     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"]) {
@@ -802,7 +805,7 @@ if ($_POST) {
 <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>
@@ -838,8 +841,8 @@ if ($_POST) {
     <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>
 
index d17f251..d5b4e8d 100644 (file)
@@ -32,7 +32,7 @@ import('DateAndTime');
 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();
 }
index 3fd2359..dbd14d9 100644 (file)
@@ -33,7 +33,7 @@ import('DateAndTime');
 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();
 }
index a6502fa..ca681d4 100644 (file)
@@ -34,7 +34,7 @@ import('DateAndTime');
 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();
 }
index 1b4a390..da902b4 100644 (file)
@@ -32,7 +32,7 @@ import('DateAndTime');
 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();
 }
index e54ffb0..fff249e 100644 (file)
@@ -33,7 +33,7 @@ import('DateAndTime');
 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();
 }
index 24c78ce..40b3a34 100644 (file)
@@ -34,7 +34,7 @@ import('DateAndTime');
 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();
 }
index 0a9c490..a6aa044 100644 (file)
@@ -31,7 +31,7 @@ import('form.Form');
 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();
 }
index dcef648..1a4b235 100644 (file)
@@ -35,7 +35,7 @@ import('ttTimeHelper');
 import('DateAndTime');
 
 // Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
   header('Location: access_denied.php');
   exit();
 }
index 81e0c65..63884d2 100644 (file)
@@ -33,7 +33,7 @@ import('ttTimeHelper');
 import('DateAndTime');
 
 // Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
   header('Location: access_denied.php');
   exit();
 }
index 74805ab..25c5c92 100644 (file)
@@ -35,7 +35,7 @@ import('ttTimeHelper');
 import('DateAndTime');
 
 // Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
   header('Location: access_denied.php');
   exit();
 }
index 47310b7..6851052 100644 (file)
@@ -35,7 +35,7 @@ import('ttTimeHelper');
 import('DateAndTime');
 
 // Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
   header('Location: access_denied.php');
   exit();
 }
index ffba70f..a3c1cbc 100644 (file)
--- a/mysql.sql
+++ b/mysql.sql
@@ -66,7 +66,7 @@ create unique index role_idx on tt_roles(team_id, rank, status);
 
 # 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');
 
 
 #
@@ -427,4 +427,4 @@ CREATE TABLE `tt_site_config` (
   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.
index d5f3bc1..ce7bb9a 100644 (file)
@@ -31,7 +31,7 @@ import('form.Form');
 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();
 }
index 684ee11..7a01cfc 100644 (file)
@@ -67,7 +67,7 @@ if ($request->isPost()) {
           '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();
index aeeedd2..62d6bce 100644 (file)
--- a/time.php
+++ b/time.php
@@ -42,7 +42,7 @@ import('DateAndTime');
 // }
 
 // Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
   header('Location: access_denied.php');
   exit();
 }
index 3b4d95c..0cdd881 100644 (file)
@@ -33,7 +33,7 @@ import('ttTimeHelper');
 import('DateAndTime');
 
 // Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
   header('Location: access_denied.php');
   exit();
 }
index b665bf8..3f2035c 100644 (file)
@@ -35,7 +35,7 @@ import('ttTimeHelper');
 import('DateAndTime');
 
 // Access check.
-if (!ttAccessAllowed('data_entry')) {
+if (!ttAccessAllowed('track_own_time')) {
   header('Location: access_denied.php');
   exit();
 }
index be89944..6bd2d49 100644 (file)
--- a/week.php
+++ b/week.php
@@ -39,7 +39,7 @@ import('ttTimeHelper');
 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();
 }