X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttUser.class.php;h=53ddb48474f6155b8943fcefb0199b10c9723da7;hb=fb177d58cddc49dcc9507bfa75ab78732571eef9;hp=a14f7cddd50c1f264f3389830a9943b96b06bad1;hpb=55c8f6a2bce9518c28337b18823b8300d1875ab8;p=timetracker.git diff --git a/WEB-INF/lib/ttUser.class.php b/WEB-INF/lib/ttUser.class.php index a14f7cdd..53ddb484 100644 --- a/WEB-INF/lib/ttUser.class.php +++ b/WEB-INF/lib/ttUser.class.php @@ -48,7 +48,7 @@ class ttUser { var $team = null; // Team name. 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 +61,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.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,8 +95,8 @@ 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']; // Set "on behalf" id and name. if (isset($_SESSION['behalf_id'])) { @@ -176,15 +177,19 @@ class ttUser { // isDateLocked checks whether a specifc date is locked for modifications. function isDateLocked($date) { - if ($this->isPluginEnabled('lk')) { - // 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)) + if ($this->isPluginEnabled('lk') && $this->lock_spec) { + // 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; }