diff options
author | msquare <msquare@notrademark.de> | 2016-12-29 15:24:57 +0100 |
---|---|---|
committer | msquare <msquare@notrademark.de> | 2016-12-29 15:24:57 +0100 |
commit | 51eb22a1c651ffabd10d772b7e06ec05c46c5b86 (patch) | |
tree | 804f4e8dd91da9d22b70741be249d725f4191c62 /includes/model | |
parent | 3fbd62ab7de38dc66e9694c89e8242c4e9249003 (diff) |
fix shift signup state calculation
Diffstat (limited to 'includes/model')
-rw-r--r-- | includes/model/ShiftSignupState.php | 23 | ||||
-rw-r--r-- | includes/model/Shifts_model.php | 5 |
2 files changed, 26 insertions, 2 deletions
diff --git a/includes/model/ShiftSignupState.php b/includes/model/ShiftSignupState.php index f9226375..393023ee 100644 --- a/includes/model/ShiftSignupState.php +++ b/includes/model/ShiftSignupState.php @@ -61,10 +61,29 @@ class ShiftSignupState { public function combineWith(ShiftSignupState $shiftSignupState) { $this->freeEntries += $shiftSignupState->getFreeEntries(); - switch ($this->state) { + if ($this->valueForState($shiftSignupState->state) > $this->valueForState($this->state)) { + $this->state = $shiftSignupState->state; + } + } + + private function valueForState($state) { + switch ($state) { + case ShiftSignupState::SHIFT_ENDED: + return 100; + + case ShiftSignupState::SIGNED_UP: + return 90; + + case ShiftSignupState::FREE: + return 80; + case ShiftSignupState::ANGELTYPE: + case ShiftSignupState::COLLIDES: + return 70; + case ShiftSignupState::OCCUPIED: - $this->state = $shiftSignupState->getState(); + case ShiftSignupState::ADMIN: + return 60; } } diff --git a/includes/model/Shifts_model.php b/includes/model/Shifts_model.php index 9d91b00c..a9a1cd7f 100644 --- a/includes/model/Shifts_model.php +++ b/includes/model/Shifts_model.php @@ -229,6 +229,7 @@ function Shift_signup_allowed_angeltype_supporter($angeltype, $needed_angeltype, */ function Shift_signup_allowed_admin($angeltype, $needed_angeltype, $shift_entries) { $free_entries = Shift_free_entries($needed_angeltype, $shift_entries); + if ($free_entries == 0) { // User shift admins may join anybody in every shift return new ShiftSignupState(ShiftSignupState::ADMIN, $free_entries); @@ -250,6 +251,10 @@ function Shift_signup_allowed_admin($angeltype, $needed_angeltype, $shift_entrie function Shift_signup_allowed($signup_user, $shift, $angeltype, $user_angeltype = null, $user_shifts = null, $needed_angeltype, $shift_entries) { global $user, $privileges; +// if($shift['SID']==1907) { +// print_r(Shift_signup_allowed_admin($angeltype, $needed_angeltype, $shift_entries)); +// } + if (in_array('user_shifts_admin', $privileges)) { return Shift_signup_allowed_admin($angeltype, $needed_angeltype, $shift_entries); } |