From: Nik Okuntseff Date: Mon, 29 Jan 2018 17:46:27 +0000 (+0000) Subject: Refactoring - moved quota related functions into quota class. X-Git-Tag: timetracker_1.19-1~1286 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=d9b8a2fcd3d9886b2cf218d31eb6d37afdae368e;p=timetracker.git Refactoring - moved quota related functions into quota class. --- diff --git a/WEB-INF/lib/ttTimeHelper.class.php b/WEB-INF/lib/ttTimeHelper.class.php index f8eadf25..748dc726 100644 --- a/WEB-INF/lib/ttTimeHelper.class.php +++ b/WEB-INF/lib/ttTimeHelper.class.php @@ -102,53 +102,6 @@ class ttTimeHelper { return false; } - // isValidQuota validates a localized value as an hours quota string (in hours and minutes). - static function isValidQuota($value) { - - if (strlen($value) == 0 || !isset($value)) return true; - - if (preg_match('/^[0-9]{1,3}h?$/', $value )) { // 000 - 999 - return true; - } - - if (preg_match('/^[0-9]{1,3}:[0-5][0-9]$/', $value )) { // 000:00 - 999:59 - return true; - } - - global $user; - $localizedPattern = '/^([0-9]{1,3})?['.$user->decimal_mark.'][0-9]{1,4}h?$/'; - if (preg_match($localizedPattern, $value )) { // decimal values like 000.5, 999.25h, ... .. 999.9999h (or with comma) - return true; - } - - return false; - } - - // quotaToFloat converts a valid quota value to a float. - static function quotaToFloat($value) { - - if (preg_match('/^[0-9]{1,3}h?$/', $value )) { // 000 - 999 - return (float) $value; - } - - if (preg_match('/^[0-9]{1,3}:[0-5][0-9]$/', $value )) { // 000:00 - 999:59 - $minutes = ttTimeHelper::toMinutes($value); - return ($minutes / 60.0); - } - - global $user; - $localizedPattern = '/^([0-9]{1,3})?['.$user->decimal_mark.'][0-9]{1,4}h?$/'; - if (preg_match($localizedPattern, $value )) { // decimal values like 000.5, 999.25h, ... .. 999.9999h (or with comma) - // Strip optional h in the end. - $value = trim($value, 'h'); - if ($user->decimal_mark == ',') - $value = str_replace(',', '.', $value); - return (float) $value; - } - - return null; - } - // normalizeDuration - converts a valid time duration string to format 00:00. static function normalizeDuration($value, $leadingZero = true) { $time_value = $value; diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index c202fb1a..3eeef446 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.17.9.3832 | Copyright © Anuko | +  Anuko Time Tracker 1.17.9.3833 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/plugins/MonthlyQuota.class.php b/plugins/MonthlyQuota.class.php index 13cbd9d4..4fed3c90 100644 --- a/plugins/MonthlyQuota.class.php +++ b/plugins/MonthlyQuota.class.php @@ -47,7 +47,7 @@ class MonthlyQuota { $deleteSql = "DELETE FROM tt_monthly_quotas WHERE year = $year AND month = $month AND team_id = $team_id"; $this->db->exec($deleteSql); if ($quota){ - $float_quota = ttTimeHelper::quotaToFloat($quota); + $float_quota = $this->quotaToFloat($quota); $insertSql = "INSERT INTO tt_monthly_quotas (team_id, year, month, quota) values ($team_id, $year, $month, $float_quota)"; $affected = $this->db->exec($insertSql); return (!is_a($affected, 'PEAR_Error')); @@ -115,4 +115,51 @@ class MonthlyQuota { } return $workdaysInMonth; } + + // isValidQuota validates a localized value as an hours quota string (in hours and minutes). + public function isValidQuota($value) { + + if (strlen($value) == 0 || !isset($value)) return true; + + if (preg_match('/^[0-9]{1,3}h?$/', $value )) { // 000 - 999 + return true; + } + + if (preg_match('/^[0-9]{1,3}:[0-5][0-9]$/', $value )) { // 000:00 - 999:59 + return true; + } + + global $user; + $localizedPattern = '/^([0-9]{1,3})?['.$user->decimal_mark.'][0-9]{1,4}h?$/'; + if (preg_match($localizedPattern, $value )) { // decimal values like 000.5, 999.25h, ... .. 999.9999h (or with comma) + return true; + } + + return false; + } + + // quotaToFloat converts a valid quota value to a float. + private function quotaToFloat($value) { + + if (preg_match('/^[0-9]{1,3}h?$/', $value )) { // 000 - 999 + return (float) $value; + } + + if (preg_match('/^[0-9]{1,3}:[0-5][0-9]$/', $value )) { // 000:00 - 999:59 + $minutes = ttTimeHelper::toMinutes($value); + return ($minutes / 60.0); + } + + global $user; + $localizedPattern = '/^([0-9]{1,3})?['.$user->decimal_mark.'][0-9]{1,4}h?$/'; + if (preg_match($localizedPattern, $value )) { // decimal values like 000.5, 999.25h, ... .. 999.9999h (or with comma) + // Strip optional h in the end. + $value = trim($value, 'h'); + if ($user->decimal_mark == ',') + $value = str_replace(',', '.', $value); + return (float) $value; + } + + return null; + } } diff --git a/quotas.php b/quotas.php index d79e433a..10653893 100644 --- a/quotas.php +++ b/quotas.php @@ -73,7 +73,7 @@ if ($request->isPost()){ // Validate user input. for ($i = 0; $i < count($months); $i++){ $val = $request->getParameter($months[$i]); - if (!ttTimeHelper::isValidQuota($val)) + if (!$quota->isValidQuota($val)) $err->add($i18n->getKey('error.field'), $months[$i]); } // Finished validating user input.