summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Scheller <igor.scheller@igorshp.de>2018-09-17 12:33:15 +0200
committermsquare <msquare@notrademark.de>2018-09-23 11:40:53 +0200
commit2a134e6c0b8e7c5bbeade38d29052194bd9dfa46 (patch)
treebfd99cb3793e3cfa2ef0e4da550fcae528ed9273
parent0734807eef5a6b638b06d57aef6ee59ac78a3456 (diff)
Config: Removed nightshifts query
-rw-r--r--config/config.default.php26
-rw-r--r--includes/model/Stats.php10
-rw-r--r--includes/model/User_model.php34
-rw-r--r--includes/pages/admin_active.php2
-rw-r--r--includes/view/User_view.php9
-rw-r--r--resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mobin45036 -> 45040 bytes
-rw-r--r--resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po7
-rw-r--r--resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mobin41265 -> 41310 bytes
-rw-r--r--resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po7
9 files changed, 63 insertions, 32 deletions
diff --git a/config/config.default.php b/config/config.default.php
index f80b54e1..dfccab0a 100644
--- a/config/config.default.php
+++ b/config/config.default.php
@@ -79,23 +79,13 @@ return [
// local timezone
'timezone' => env('TIMEZONE', 'Europe/Berlin'),
- // weigh every shift the same
- //'shift_sum_formula' => 'SUM(`end` - `start`)',
-
// Multiply 'night shifts' and freeloaded shifts (start or end between 2 and 6 exclusive) by 2
- 'shift_sum_formula' => '
- SUM(
- (1 +
- (
- (HOUR(FROM_UNIXTIME(`Shifts`.`end`)) > 2 AND HOUR(FROM_UNIXTIME(`Shifts`.`end`)) < 6)
- OR (HOUR(FROM_UNIXTIME(`Shifts`.`start`)) > 2 AND HOUR(FROM_UNIXTIME(`Shifts`.`start`)) < 6)
- OR (HOUR(FROM_UNIXTIME(`Shifts`.`start`)) <= 2 AND HOUR(FROM_UNIXTIME(`Shifts`.`end`)) >= 6)
- )
- )
- * (`Shifts`.`end` - `Shifts`.`start`)
- * (1 - 3 * `ShiftEntry`.`freeloaded`)
- )
- ',
+ 'night_shifts' => [
+ 'enabled' => true, // Disable to weigh every shift the same
+ 'start' => 2,
+ 'end' => 6,
+ 'multiplier' => 2,
+ ],
// Voucher calculation
'voucher_settings' => [
@@ -109,10 +99,10 @@ return [
'en_US.UTF-8' => 'English',
],
- 'default_locale' => env('DEFAULT_LOCALE', 'en_US.UTF-8'),
+ 'default_locale' => env('DEFAULT_LOCALE', 'en_US.UTF-8'),
// Available T-Shirt sizes, set value to null if not available
- 'tshirt_sizes' => [
+ 'tshirt_sizes' => [
'S' => 'S',
'S-G' => 'S Girl',
'M' => 'M',
diff --git a/includes/model/Stats.php b/includes/model/Stats.php
index 20376ac6..c8342d82 100644
--- a/includes/model/Stats.php
+++ b/includes/model/Stats.php
@@ -128,17 +128,21 @@ function stats_angels_needed_three_hours()
}
/**
- * Returns the number of needed angels for nightshifts (between 2 and 8)
+ * Returns the number of needed angels for nightshifts (see config)
*
* @return int|string
*/
function stats_angels_needed_for_nightshifts()
{
+ $nightShiftsConfig = config('night_shifts');
+ $nightStartTime = $nightShiftsConfig['start'];
+ $nightEndTime = $nightShiftsConfig['end'];
+
$night_start = parse_date(
'Y-m-d H:i',
- date('Y-m-d', time() + 12 * 60 * 60) . ' 02:00'
+ date('Y-m-d', time() + 12 * 60 * 60) . ' ' . $nightStartTime . ':00'
);
- $night_end = $night_start + 6 * 60 * 60;
+ $night_end = $night_start + ($nightEndTime - $nightStartTime) * 60 * 60;
$result = Db::selectOne("
SELECT SUM(`count`) AS `count` FROM (
SELECT
diff --git a/includes/model/User_model.php b/includes/model/User_model.php
index cbdb5efe..092ddf27 100644
--- a/includes/model/User_model.php
+++ b/includes/model/User_model.php
@@ -26,8 +26,7 @@ function User_delete($user_id)
*/
function User_tshirt_score($user)
{
- $shift_sum_formula = config('shift_sum_formula');
-
+ $shift_sum_formula = User_get_shifts_sum_query();
$result_shifts = DB::selectOne('
SELECT ROUND((' . $shift_sum_formula . ') / 3600, 2) AS `tshirt_score`
FROM `User` LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID`
@@ -530,3 +529,34 @@ function User_get_eligable_voucher_count(&$user)
return $eligable_vouchers;
}
+
+/**
+ * Generates the query to sum night shifts
+ *
+ * @return string
+ */
+function User_get_shifts_sum_query()
+{
+ $nightShifts = config('night_shifts');
+ if (!$nightShifts['enabled']) {
+ return 'SUM(`end` - `start`)';
+ }
+
+ return sprintf('
+ SUM(
+ (1 +
+ (
+ (HOUR(FROM_UNIXTIME(`Shifts`.`end`)) > %1$d AND HOUR(FROM_UNIXTIME(`Shifts`.`end`)) < %2$d)
+ OR (HOUR(FROM_UNIXTIME(`Shifts`.`start`)) > %1$d AND HOUR(FROM_UNIXTIME(`Shifts`.`start`)) < %2$d)
+ OR (HOUR(FROM_UNIXTIME(`Shifts`.`start`)) <= %1$d AND HOUR(FROM_UNIXTIME(`Shifts`.`end`)) >= %2$d)
+ )
+ )
+ * (`Shifts`.`end` - `Shifts`.`start`)
+ * (1 - (%3$d + 1) * `ShiftEntry`.`freeloaded`)
+ )
+ ',
+ $nightShifts['start'],
+ $nightShifts['end'],
+ $nightShifts['multiplier']
+ );
+}
diff --git a/includes/pages/admin_active.php b/includes/pages/admin_active.php
index 7aeb249f..3a9ba8c4 100644
--- a/includes/pages/admin_active.php
+++ b/includes/pages/admin_active.php
@@ -16,7 +16,7 @@ function admin_active_title()
function admin_active()
{
$tshirt_sizes = config('tshirt_sizes');
- $shift_sum_formula = config('shift_sum_formula');
+ $shift_sum_formula = User_get_shifts_sum_query();
$request = request();
$msg = '';
diff --git a/includes/view/User_view.php b/includes/view/User_view.php
index 40e7bfe1..3d5cfd69 100644
--- a/includes/view/User_view.php
+++ b/includes/view/User_view.php
@@ -532,6 +532,7 @@ function User_view(
$admin_user_worklog_privilege,
$user_worklogs
) {
+ $nightShiftsConfig = config('night_shifts');
$user_name = htmlspecialchars($user_source['Vorname']) . ' ' . htmlspecialchars($user_source['Name']);
$myshifts_table = '';
if ($its_me || $admin_user_privilege) {
@@ -619,8 +620,12 @@ function User_view(
]),
($its_me || $admin_user_privilege) ? '<h2>' . __('Shifts') . '</h2>' : '',
$myshifts_table,
- $its_me ? info(
- glyph('info-sign') . __('Your night shifts between 2 and 8 am count twice.'),
+ ($its_me && $nightShiftsConfig['enabled']) ? info(
+ glyph('info-sign') . sprintf(
+ __('Your night shifts between %d and %d am count twice.'),
+ $nightShiftsConfig['start'],
+ $nightShiftsConfig['end']
+ ),
true
) : '',
$its_me && count($shifts) == 0
diff --git a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mo b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mo
index a5cbb44f..4909145a 100644
--- a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mo
+++ b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mo
Binary files differ
diff --git a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po
index f3c6a768..54e819c8 100644
--- a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po
+++ b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Engelsystem 2.0\n"
"POT-Creation-Date: 2017-12-29 19:01+0100\n"
-"PO-Revision-Date: 2018-08-27 22:26+0200\n"
+"PO-Revision-Date: 2018-09-17 12:10+0200\n"
"Last-Translator: msquare <msquare@notrademark.de>\n"
"Language-Team: \n"
"Language: de_DE\n"
@@ -2768,8 +2768,9 @@ msgid "JSON Export"
msgstr "JSON Export"
#: /Users/msquare/workspace/projects/engelsystem/includes/view/User_view.php:598
-msgid "Your night shifts between 2 and 8 am count twice."
-msgstr "Deine Nachtschichten zwischen 2 und 8 Uhr zählen doppelt."
+#, php-format
+msgid "Your night shifts between %d and %d am count twice."
+msgstr "Deine Nachtschichten zwischen %d und %d Uhr zählen doppelt."
#: /Users/msquare/workspace/projects/engelsystem/includes/view/User_view.php:603
#, php-format
diff --git a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo
index 576ea202..5ad48984 100644
--- a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo
+++ b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo
Binary files differ
diff --git a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po
index f49f6333..19b08ad7 100644
--- a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po
+++ b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Engelsystem 2.0\n"
"POT-Creation-Date: 2017-04-25 05:23+0200\n"
-"PO-Revision-Date: 2017-04-25 05:23+0200\n"
+"PO-Revision-Date: 2018-09-17 12:11+0200\n"
"Last-Translator: samba <samba@autistici.org>\n"
"Language-Team: \n"
"Language: pt_BR\n"
@@ -2385,8 +2385,9 @@ msgid "Action"
msgstr "Ação"
#: includes/view/User_view.php:373
-msgid "Your night shifts between 2 and 8 am count twice."
-msgstr "Os seus turnos noturnos entre 2h e 8h contam como dois."
+#, php-format
+msgid "Your night shifts between %d and %d am count twice."
+msgstr "Os seus turnos noturnos entre %dh e %dh contam como dois."
#: includes/view/User_view.php:374
#, php-format