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;
<br>
<table cellspacing="0" cellpadding="4" width="100%" border="0">
<tr>
- <td align="center"> Anuko Time Tracker 1.17.9.3832 | Copyright © <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+ <td align="center"> Anuko Time Tracker 1.17.9.3833 | Copyright © <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>
$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'));
}
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;
+ }
}
// 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.