X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/862774685f3a45de5b783627a66fc8b65839d7c7..15d237dd7e5ce541a9973a69c9dfeaa95dfd88e6:/WEB-INF/lib/ttUser.class.php diff --git a/WEB-INF/lib/ttUser.class.php b/WEB-INF/lib/ttUser.class.php index 78fee50d..c9dee41c 100644 --- a/WEB-INF/lib/ttUser.class.php +++ b/WEB-INF/lib/ttUser.class.php @@ -49,6 +49,7 @@ class ttUser { var $custom_logo = 0; // Whether to use a custom logo for team. var $address = null; // Address for invoices. var $lock_interval = 0; // Lock interval in days for time records. + var $lock_spec = null; // Cron specification for record locking. var $rights = 0; // A mask of user rights. // Constructor. @@ -61,7 +62,8 @@ class ttUser { $mdb2 = getConnection(); $sql = "SELECT u.id, u.login, u.name, u.team_id, u.role, u.client_id, u.email, t.name as team_name, - t.address, t.currency, t.locktime, t.lang, t.decimal_mark, t.date_format, t.time_format, t.week_start, t.tracking_mode, t.record_type, t.plugins, t.custom_logo + t.address, t.currency, t.locktime, t.lang, t.decimal_mark, t.date_format, t.time_format, t.week_start, + t.tracking_mode, t.record_type, t.plugins, t.lock_spec, t.custom_logo FROM tt_users u LEFT JOIN tt_teams t ON (u.team_id = t.id) WHERE "; if ($id) $sql .= "u.id = $id"; @@ -94,6 +96,7 @@ class ttUser { $this->address = $val['address']; $this->currency = $val['currency']; $this->plugins = $val['plugins']; + $this->lock_spec = $val['lock_spec']; $this->custom_logo = $val['custom_logo']; $this->lock_interval = $val['locktime']; @@ -172,4 +175,38 @@ class ttUser { } return $result; } + + // isDateLocked checks whether a specifc date is locked for modifications. + function isDateLocked($date) + { + if ($this->isPluginEnabled('lk') && $this->lock_spec) { + // This is legacy code... + /* + // Determine lock date. Entries earlier than lock date cannot be created or modified. + $lockdate = 0; + if ($this->lock_interval > 0) { + $lockdate = new DateAndTime(); + $lockdate->decDay($this->lock_interval); + } + if($lockdate && $date->before($lockdate)) + return true; + */ + + // New code with cron specification. + + // Override for managers. + if ($this->canManageTeam()) return false; + + require_once(LIBRARY_DIR.'/tdcron/class.tdcron.php'); + require_once(LIBRARY_DIR.'/tdcron/class.tdcron.entry.php'); + + // Calculate the last occurrence of a lock. + $last = tdCron::getLastOccurrence($this->lock_spec, mktime()); + $lockdate = new DateAndTime(DB_DATEFORMAT, strftime('%Y-%m-%d', $last)); + if ($date->before($lockdate)) { + return true; + } + } + return false; + } }