X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/908289ae851db1c7d8bc454df5a00746e776728a..b4912256781dcc0797dbe7f12bd9dec6718641db:/WEB-INF/lib/ttUser.class.php diff --git a/WEB-INF/lib/ttUser.class.php b/WEB-INF/lib/ttUser.class.php index a14f7cdd..a6731a4e 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']; @@ -176,7 +179,9 @@ class ttUser { // isDateLocked checks whether a specifc date is locked for modifications. function isDateLocked($date) { - if ($this->isPluginEnabled('lk')) { + 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) { @@ -185,6 +190,18 @@ class ttUser { } if($lockdate && $date->before($lockdate)) return true; + */ + + // New code with cron specification. + 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; }