summaryrefslogtreecommitdiff
path: root/includes/model/Shifts_model.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/model/Shifts_model.php')
-rw-r--r--includes/model/Shifts_model.php32
1 files changed, 32 insertions, 0 deletions
diff --git a/includes/model/Shifts_model.php b/includes/model/Shifts_model.php
index 8cbbe2aa..f3bb042a 100644
--- a/includes/model/Shifts_model.php
+++ b/includes/model/Shifts_model.php
@@ -403,6 +403,38 @@ function Shift_signup_allowed_admin($needed_angeltype, $shift_entries)
}
/**
+ * Check if an angel can signout from a shift.
+ *
+ * @param $shift The shift
+ * @param $angeltype The angeltype
+ * @param $signout_user The user that was signed up for the shift
+ *
+ * @return bool
+ */
+function Shift_signout_allowed($shift, $angeltype, $signout_user) {
+ global $user, $privileges;
+
+ // user shifts admin can sign out any user at any time
+ if (in_array('user_shifts_admin', $privileges)) {
+ return true;
+ }
+
+ // angeltype supporter can sign out any user at any time from their supported angeltype
+ if (
+ in_array('shiftentry_edit_angeltype_supporter', $privileges)
+ && User_is_AngelType_supporter($user, $angeltype)
+ ) {
+ return true;
+ }
+
+ if($signout_user['UID'] == $user['UID'] && $shift['start'] > time() + config('last_unsubscribe') * 3600) {
+ return true;
+ }
+
+ return false;
+}
+
+/**
* Check if an angel can sign up for given shift.
*
* @param array $signup_user