summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/controller/angeltypes_controller.php15
-rw-r--r--includes/controller/shift_entries_controller.php22
-rw-r--r--includes/controller/shifts_controller.php15
-rw-r--r--includes/controller/user_angeltypes_controller.php34
-rw-r--r--includes/controller/user_driver_licenses_controller.php8
-rw-r--r--includes/controller/user_worklog_controller.php27
-rw-r--r--includes/controller/users_controller.php36
-rw-r--r--includes/helper/email_helper.php31
-rw-r--r--includes/mailer/shifts_mailer.php10
-rw-r--r--includes/mailer/users_mailer.php4
-rw-r--r--includes/model/AngelType_model.php6
-rw-r--r--includes/model/ShiftEntry_model.php25
-rw-r--r--includes/model/Shifts_model.php14
-rw-r--r--includes/model/UserAngelTypes_model.php52
-rw-r--r--includes/model/UserDriverLicenses_model.php6
-rw-r--r--includes/model/UserGroups_model.php6
-rw-r--r--includes/model/UserWorkLog_model.php12
-rw-r--r--includes/model/User_model.php14
-rw-r--r--includes/pages/admin_active.php17
-rw-r--r--includes/pages/admin_arrive.php13
-rw-r--r--includes/pages/admin_news.php3
-rw-r--r--includes/pages/admin_questions.php5
-rw-r--r--includes/pages/admin_user.php57
-rw-r--r--includes/pages/guest_login.php15
-rw-r--r--includes/pages/user_messages.php19
-rw-r--r--includes/pages/user_myshifts.php13
-rw-r--r--includes/pages/user_news.php7
-rw-r--r--includes/pages/user_questions.php3
-rw-r--r--includes/pages/user_shifts.php2
-rw-r--r--includes/sys_log.php4
-rw-r--r--includes/view/Shifts_view.php9
-rw-r--r--includes/view/UserAngelTypes_view.php8
-rw-r--r--includes/view/UserWorkLog_view.php6
-rw-r--r--includes/view/User_view.php42
-rw-r--r--src/Models/User/HasUserModel.php4
35 files changed, 301 insertions, 263 deletions
diff --git a/includes/controller/angeltypes_controller.php b/includes/controller/angeltypes_controller.php
index 027e63ed..b161266d 100644
--- a/includes/controller/angeltypes_controller.php
+++ b/includes/controller/angeltypes_controller.php
@@ -57,17 +57,17 @@ function angeltype_link($angeltype_id, $params = [])
*/
function angeltypes_about_controller()
{
- global $user;
+ $user = auth()->user();
- if (isset($user)) {
- $angeltypes = AngelTypes_with_user($user);
+ if ($user) {
+ $angeltypes = AngelTypes_with_user($user->id);
} else {
$angeltypes = AngelTypes();
}
return [
__('Teams/Job description'),
- AngelTypes_about_view($angeltypes, isset($user))
+ AngelTypes_about_view($angeltypes, (bool)$user)
];
}
@@ -185,7 +185,7 @@ function angeltype_controller()
}
$angeltype = load_angeltype();
- $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype);
+ $user_angeltype = UserAngelType_by_User_and_AngelType($user['UID'], $angeltype);
$user_driver_license = UserDriverLicense($user['UID']);
$members = Users_by_angeltype($angeltype);
@@ -277,13 +277,14 @@ function angeltype_controller_shiftsFilter($angeltype, $days)
*/
function angeltypes_list_controller()
{
- global $privileges, $user;
+ global $privileges;
+ $user = auth()->user();
if (!in_array('angeltypes', $privileges)) {
redirect(page_link_to('/'));
}
- $angeltypes = AngelTypes_with_user($user);
+ $angeltypes = AngelTypes_with_user($user->id);
foreach ($angeltypes as &$angeltype) {
$actions = [
diff --git a/includes/controller/shift_entries_controller.php b/includes/controller/shift_entries_controller.php
index 356a9db8..8fbee96e 100644
--- a/includes/controller/shift_entries_controller.php
+++ b/includes/controller/shift_entries_controller.php
@@ -1,5 +1,6 @@
<?php
+use Engelsystem\Models\User\User;
use Engelsystem\ShiftSignupState;
/**
@@ -9,15 +10,14 @@ use Engelsystem\ShiftSignupState;
*/
function shift_entries_controller()
{
- global $user;
-
- if (!isset($user)) {
+ $user = auth()->user();
+ if ($user) {
redirect(page_link_to('login'));
}
$action = strip_request_item('action');
if (empty($action)) {
- redirect(user_link($user['UID']));
+ redirect(user_link($user->id));
}
switch ($action) {
@@ -74,14 +74,14 @@ function shift_entry_create_controller()
*/
function shift_entry_create_controller_admin($shift, $angeltype)
{
- global $user;
+ $user = auth()->user();
$request = request();
$signup_user = $user;
if ($request->has('user_id')) {
- $signup_user = User($request->input('user_id'));
+ $signup_user = User::find($request->input('user_id'));
}
- if (empty($signup_user)) {
+ if (!$signup_user) {
redirect(shift_link($shift));
}
@@ -100,7 +100,7 @@ function shift_entry_create_controller_admin($shift, $angeltype)
ShiftEntry_create([
'SID' => $shift['SID'],
'TID' => $angeltype['id'],
- 'UID' => $signup_user['UID'],
+ 'UID' => $signup_user->id,
'Comment' => '',
'freeloaded' => false,
'freeload_comment' => ''
@@ -145,7 +145,7 @@ function shift_entry_create_controller_supporter($shift, $angeltype)
if ($request->has('user_id')) {
$signup_user = User($request->input('user_id'));
}
- if (!UserAngelType_exists($signup_user, $angeltype)) {
+ if (!UserAngelType_exists($signup_user['UID'], $angeltype)) {
error(__('User is not in angeltype.'));
redirect(shift_link($shift));
}
@@ -259,8 +259,8 @@ function shift_entry_create_controller_user($shift, $angeltype)
'freeload_comment' => ''
]);
- if ($angeltype['restricted'] == false && !UserAngelType_exists($signup_user, $angeltype)) {
- UserAngelType_create($signup_user, $angeltype);
+ if ($angeltype['restricted'] == false && !UserAngelType_exists($signup_user['UID'], $angeltype)) {
+ UserAngelType_create($signup_user['UID'], $angeltype);
}
success(__('You are subscribed. Thank you!'));
diff --git a/includes/controller/shifts_controller.php b/includes/controller/shifts_controller.php
index 63d2d4c7..5454c648 100644
--- a/includes/controller/shifts_controller.php
+++ b/includes/controller/shifts_controller.php
@@ -272,15 +272,15 @@ function shift_controller()
$shifttype = ShiftType($shift['shifttype_id']);
$room = Room($shift['RID']);
$angeltypes = AngelTypes();
- $user_shifts = Shifts_by_user($user);
+ $user_shifts = Shifts_by_user($user['UID']);
$shift_signup_state = new ShiftSignupState(ShiftSignupState::OCCUPIED, 0);
foreach ($angeltypes as &$angeltype) {
$needed_angeltype = NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype);
- if(empty($needed_angeltype)) {
+ if (empty($needed_angeltype)) {
continue;
}
-
+
$shift_entries = ShiftEntries_by_shift_and_angeltype($shift['SID'], $angeltype['id']);
$angeltype_signup_state = Shift_signup_allowed(
@@ -330,13 +330,14 @@ function shifts_controller()
*/
function shift_next_controller()
{
- global $user, $privileges;
+ global $privileges;
+ $user = auth()->user();
if (!in_array('user_shifts', $privileges)) {
redirect(page_link_to('/'));
}
- $upcoming_shifts = ShiftEntries_upcoming_for_user($user);
+ $upcoming_shifts = ShiftEntries_upcoming_for_user($user->id);
if (!empty($upcoming_shifts)) {
redirect(shift_link($upcoming_shifts[0]));
@@ -381,7 +382,5 @@ function shifts_json_export_controller()
*/
function load_ical_shifts()
{
- global $user;
-
- return Shifts_by_user($user);
+ return Shifts_by_user(auth()->user()->id);
}
diff --git a/includes/controller/user_angeltypes_controller.php b/includes/controller/user_angeltypes_controller.php
index 734bd1e9..ee1f93ee 100644
--- a/includes/controller/user_angeltypes_controller.php
+++ b/includes/controller/user_angeltypes_controller.php
@@ -1,5 +1,7 @@
<?php
+use Engelsystem\Models\User\User;
+
/**
* Display a hint for team/angeltype supporters if there are unconfirmed users for his angeltype.
*
@@ -7,9 +9,9 @@
*/
function user_angeltypes_unconfirmed_hint()
{
- global $user;
+ $user = auth()->user();
- $unconfirmed_user_angeltypes = User_unconfirmed_AngelTypes($user);
+ $unconfirmed_user_angeltypes = User_unconfirmed_AngelTypes($user->id);
if (count($unconfirmed_user_angeltypes) == 0) {
return null;
}
@@ -101,7 +103,7 @@ function user_angeltypes_confirm_all_controller()
}
if ($request->has('confirmed')) {
- UserAngelTypes_confirm_all($angeltype['id'], $user);
+ UserAngelTypes_confirm_all($angeltype['id'], $user['UID']);
engelsystem_log(sprintf('Confirmed all users for angeltype %s', AngelType_name_render($angeltype)));
success(sprintf(__('Confirmed all users for angeltype %s.'), AngelType_name_render($angeltype)));
@@ -146,14 +148,14 @@ function user_angeltype_confirm_controller()
redirect(page_link_to('angeltypes'));
}
- $user_source = User($user_angeltype['user_id']);
- if (empty($user_source)) {
+ $user_source = User::find($user_angeltype['user_id']);
+ if (!$user_source) {
error(__('User doesn\'t exist.'));
redirect(page_link_to('angeltypes'));
}
if ($request->has('confirmed')) {
- UserAngelType_confirm($user_angeltype['id'], $user);
+ UserAngelType_confirm($user_angeltype['id'], $user['UID']);
engelsystem_log(sprintf(
'%s confirmed for angeltype %s',
@@ -201,8 +203,8 @@ function user_angeltype_delete_controller()
redirect(page_link_to('angeltypes'));
}
- $user_source = User($user_angeltype['user_id']);
- if (empty($user_source)) {
+ $user_source = User::find($user_angeltype['user_id']);
+ if (!$user_source) {
error(__('User doesn\'t exist.'));
redirect(page_link_to('angeltypes'));
}
@@ -268,8 +270,8 @@ function user_angeltype_update_controller()
redirect(page_link_to('angeltypes'));
}
- $user_source = User($user_angeltype['user_id']);
- if (empty($user_source)) {
+ $user_source = User::find($user_angeltype['user_id']);
+ if (!$user_source) {
error(__('User doesn\'t exist.'));
redirect(page_link_to('angeltypes'));
}
@@ -322,8 +324,8 @@ function user_angeltype_add_controller()
if (request()->has('submit')) {
$user_source = load_user();
- if (!UserAngelType_exists($user_source, $angeltype)) {
- $user_angeltype_id = UserAngelType_create($user_source, $angeltype);
+ if (!UserAngelType_exists($user_source['UID'], $angeltype)) {
+ $user_angeltype_id = UserAngelType_create($user_source['UID'], $angeltype);
engelsystem_log(sprintf(
'User %s added to %s.',
@@ -336,7 +338,7 @@ function user_angeltype_add_controller()
AngelType_name_render($angeltype)
));
- UserAngelType_confirm($user_angeltype_id, $user_source);
+ UserAngelType_confirm($user_angeltype_id, $user_source['UID']);
engelsystem_log(sprintf(
'User %s confirmed as %s.',
User_Nick_render($user_source),
@@ -363,14 +365,14 @@ function user_angeltype_join_controller($angeltype)
{
global $user, $privileges;
- $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype);
+ $user_angeltype = UserAngelType_by_User_and_AngelType($user['UID'], $angeltype);
if (!empty($user_angeltype)) {
error(sprintf(__('You are already a %s.'), $angeltype['name']));
redirect(page_link_to('angeltypes'));
}
if (request()->has('confirmed')) {
- $user_angeltype_id = UserAngelType_create($user, $angeltype);
+ $user_angeltype_id = UserAngelType_create($user['UID'], $angeltype);
$success_message = sprintf(__('You joined %s.'), $angeltype['name']);
engelsystem_log(sprintf(
@@ -381,7 +383,7 @@ function user_angeltype_join_controller($angeltype)
success($success_message);
if (in_array('admin_user_angeltypes', $privileges)) {
- UserAngelType_confirm($user_angeltype_id, $user);
+ UserAngelType_confirm($user_angeltype_id, $user['UID']);
engelsystem_log(sprintf(
'User %s confirmed as %s.',
User_Nick_render($user),
diff --git a/includes/controller/user_driver_licenses_controller.php b/includes/controller/user_driver_licenses_controller.php
index 2a3f7023..4c7c7fff 100644
--- a/includes/controller/user_driver_licenses_controller.php
+++ b/includes/controller/user_driver_licenses_controller.php
@@ -8,10 +8,10 @@
*/
function user_driver_license_required_hint()
{
- global $user;
+ $user = auth()->user();
- $angeltypes = User_angeltypes($user);
- $user_driver_license = UserDriverLicense($user['UID']);
+ $angeltypes = User_angeltypes($user->id);
+ $user_driver_license = UserDriverLicense($user->id);
// User has already entered data, no hint needed.
if (!empty($user_driver_license)) {
@@ -124,7 +124,7 @@ function user_driver_license_edit_controller()
if (UserDriverLicense_valid($user_driver_license)) {
if (empty($user_driver_license['user_id'])) {
- $user_driver_license = UserDriverLicenses_create($user_driver_license, $user_source);
+ $user_driver_license = UserDriverLicenses_create($user_driver_license, $user_source['UID']);
} else {
UserDriverLicenses_update($user_driver_license);
}
diff --git a/includes/controller/user_worklog_controller.php b/includes/controller/user_worklog_controller.php
index a431643f..e1b3ee86 100644
--- a/includes/controller/user_worklog_controller.php
+++ b/includes/controller/user_worklog_controller.php
@@ -1,5 +1,7 @@
<?php
+use Engelsystem\Models\User\User;
+
/**
* Delete a work log entry.
*
@@ -7,20 +9,20 @@
*/
function user_worklog_delete_controller()
{
- global $user;
+ $user = auth()->user();
$request = request();
$userWorkLog = UserWorkLog($request->input('user_worklog_id'));
if (empty($userWorkLog)) {
- redirect(user_link($user['UID']));
+ redirect(user_link($user->id));
}
- $user_source = User($userWorkLog['user_id']);
+ $user_source = User::find($userWorkLog['user_id']);
if ($request->has('confirmed')) {
UserWorkLog_delete($userWorkLog);
success(__('Work log entry deleted.'));
- redirect(user_link($user_source['UID']));
+ redirect(user_link($user_source->id));
}
return [
@@ -36,12 +38,12 @@ function user_worklog_delete_controller()
*/
function user_worklog_edit_controller()
{
- global $user;
+ $user = auth()->user();
$request = request();
$userWorkLog = UserWorkLog($request->input('user_worklog_id'));
if (empty($userWorkLog)) {
- redirect(user_link($user['UID']));
+ redirect(user_link($user->id));
}
$user_source = User($userWorkLog['user_id']);
@@ -108,15 +110,15 @@ function user_worklog_from_request($userWorkLog)
*/
function user_worklog_add_controller()
{
- global $user;
+ $user = auth()->user();
$request = request();
$user_source = User($request->input('user_id'));
if (empty($user_source)) {
- redirect(user_link($user['UID']));
+ redirect(user_link($user->id));
}
- $userWorkLog = UserWorkLog_new($user_source);
+ $userWorkLog = UserWorkLog_new($user_source['UID']);
if ($request->has('submit')) {
list ($valid, $userWorkLog) = user_worklog_from_request($userWorkLog);
@@ -186,16 +188,17 @@ function user_worklog_delete_link($userWorkLog, $parameters = [])
*/
function user_worklog_controller()
{
- global $user, $privileges;
+ global $privileges;
+ $user = auth()->user();
if (!in_array('admin_user_worklog', $privileges)) {
- redirect(user_link($user['UID']));
+ redirect(user_link($user->id));
}
$request = request();
$action = $request->input('action');
if (!$request->has('action')) {
- redirect(user_link($user['UID']));
+ redirect(user_link($user->id));
}
switch ($action) {
diff --git a/includes/controller/users_controller.php b/includes/controller/users_controller.php
index f49439da..be78c1d7 100644
--- a/includes/controller/users_controller.php
+++ b/includes/controller/users_controller.php
@@ -1,6 +1,8 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\PasswordReset;
+use Engelsystem\Models\User\User;
use Engelsystem\ShiftCalendarRenderer;
use Engelsystem\ShiftsFilter;
@@ -43,11 +45,12 @@ function users_controller()
*/
function user_delete_controller()
{
- global $privileges, $user;
+ global $privileges;
+ $user = auth()->user();
$request = request();
if ($request->has('user_id')) {
- $user_source = User($request->query->get('user_id'));
+ $user_source = User::find($request->query->get('user_id'));
} else {
$user_source = $user;
}
@@ -57,9 +60,9 @@ function user_delete_controller()
}
// You cannot delete yourself
- if ($user['UID'] == $user_source['UID']) {
+ if ($user->id == $user_source->id) {
error(__('You cannot delete yourself.'));
- redirect(user_link($user['UID']));
+ redirect(user_link($user->id));
}
if ($request->has('submit')) {
@@ -68,7 +71,7 @@ function user_delete_controller()
if (
!(
$request->has('password')
- && verify_password($request->postData('password'), $user['Passwort'], $user['UID'])
+ && verify_password($request->postData('password'), $user->password, $user->id)
)
) {
$valid = false;
@@ -76,7 +79,7 @@ function user_delete_controller()
}
if ($valid) {
- User_delete($user_source['UID']);
+ User_delete($user_source->id);
mail_user_delete($user_source);
success(__('User deleted.'));
@@ -87,7 +90,7 @@ function user_delete_controller()
}
return [
- sprintf(__('Delete %s'), $user_source['Nick']),
+ sprintf(__('Delete %s'), $user_source->name),
User_delete_view($user_source)
];
}
@@ -196,7 +199,7 @@ function user_controller()
}
}
- $shifts = Shifts_by_user($user_source, in_array('user_shifts_admin', $privileges));
+ $shifts = Shifts_by_user($user_source['UID'], in_array('user_shifts_admin', $privileges));
foreach ($shifts as &$shift) {
// TODO: Move queries to model
$shift['needed_angeltypes'] = DB::select('
@@ -228,7 +231,7 @@ function user_controller()
if ($user_source['force_active']) {
$tshirt_score = __('Enough');
} else {
- $tshirt_score = sprintf('%.2f', User_tshirt_score($user_source)) . '&nbsp;h';
+ $tshirt_score = sprintf('%.2f', User_tshirt_score($user_source['UID'])) . '&nbsp;h';
}
return [
@@ -237,14 +240,14 @@ function user_controller()
$user_source,
in_array('admin_user', $privileges),
User_is_freeloader($user_source),
- User_angeltypes($user_source),
- User_groups($user_source),
+ User_angeltypes($user_source['UID']),
+ User_groups($user_source['UID']),
$shifts,
$user['UID'] == $user_source['UID'],
$tshirt_score,
in_array('admin_active', $privileges),
in_array('admin_user_worklog', $privileges),
- UserWorkLogsForUser($user_source)
+ UserWorkLogsForUser($user_source['UID'])
)
];
}
@@ -270,7 +273,7 @@ function users_list_controller()
$users = Users($order_by);
foreach ($users as &$user) {
- $user['freeloads'] = count(ShiftEntries_freeloaded_by_user($user));
+ $user['freeloads'] = count(ShiftEntries_freeloaded_by_user($user['UID']));
}
return [
@@ -296,8 +299,8 @@ function users_list_controller()
function user_password_recovery_set_new_controller()
{
$request = request();
- $user_source = User_by_password_recovery_token($request->input('token'));
- if (empty($user_source)) {
+ $passwordReset = PasswordReset::whereToken($request->input('token'));
+ if (!$passwordReset) {
error(__('Token is not correct.'));
redirect(page_link_to('login'));
}
@@ -319,8 +322,9 @@ function user_password_recovery_set_new_controller()
}
if ($valid) {
- set_password($user_source['UID'], $request->postData('password'));
+ set_password($passwordReset->user->id, $request->postData('password'));
success(__('Password saved.'));
+ $passwordReset->delete();
redirect(page_link_to('login'));
}
}
diff --git a/includes/helper/email_helper.php b/includes/helper/email_helper.php
index 8668cab0..4fc10226 100644
--- a/includes/helper/email_helper.php
+++ b/includes/helper/email_helper.php
@@ -1,19 +1,32 @@
<?php
use Engelsystem\Mail\EngelsystemMailer;
+use Engelsystem\Models\User\User;
/**
- * @param array $recipient_user
- * @param string $title
- * @param string $message
- * @param bool $not_if_its_me
+ * @param array|User $recipientUser
+ * @param string $title
+ * @param string $message
+ * @param bool $notIfItsMe
* @return bool
*/
-function engelsystem_email_to_user($recipient_user, $title, $message, $not_if_its_me = false)
+function engelsystem_email_to_user($recipientUser, $title, $message, $notIfItsMe = false)
{
$user = Auth()->user();
- if ($not_if_its_me && $user->id == $recipient_user['UID']) {
+ if ($recipientUser instanceof User) {
+ $id = $user->id;
+ $lang = $user->settings->language;
+ $email = $user->contact->email ? $user->contact->email : $user->email;
+ $username = $user->name;
+ } else {
+ $id = $recipientUser['UID'];
+ $lang = $recipientUser['Sprache'];
+ $email = $recipientUser['email'];
+ $username = $recipientUser['Nick'];
+ }
+
+ if ($notIfItsMe && $user->id == $id) {
return true;
}
@@ -23,12 +36,12 @@ function engelsystem_email_to_user($recipient_user, $title, $message, $not_if_it
/** @var EngelsystemMailer $mailer */
$mailer = app('mailer');
- $translator->setLocale($recipient_user['Sprache']);
+ $translator->setLocale($lang);
$status = $mailer->sendView(
- $recipient_user['email'],
+ $email,
$title,
'emails/mail',
- ['username' => $recipient_user['Nick'], 'message' => $message]
+ ['username' => $username, 'message' => $message]
);
$translator->setLocale($locale);
diff --git a/includes/mailer/shifts_mailer.php b/includes/mailer/shifts_mailer.php
index 0c4e381c..90153146 100644
--- a/includes/mailer/shifts_mailer.php
+++ b/includes/mailer/shifts_mailer.php
@@ -1,5 +1,7 @@
<?php
+use Engelsystem\Models\User\User;
+
/**
* @param array $old_shift
* @param array $new_shift
@@ -96,12 +98,12 @@ function mail_shift_delete($shift)
}
/**
- * @param array $user
+ * @param User $user
* @param array $shift
*/
function mail_shift_assign($user, $shift)
{
- if (!$user['email_shiftinfo']) {
+ if (!$user->settings->email_shiftinfo) {
return;
}
@@ -117,12 +119,12 @@ function mail_shift_assign($user, $shift)
}
/**
- * @param array $user
+ * @param User $user
* @param array $shift
*/
function mail_shift_removed($user, $shift)
{
- if (!$user['email_shiftinfo']) {
+ if (!$user->settings->email_shiftinfo) {
return;
}
diff --git a/includes/mailer/users_mailer.php b/includes/mailer/users_mailer.php
index 23a13806..6135bcf7 100644
--- a/includes/mailer/users_mailer.php
+++ b/includes/mailer/users_mailer.php
@@ -1,7 +1,9 @@
<?php
+use Engelsystem\Models\User\User;
+
/**
- * @param array $user
+ * @param User $user
* @return bool
*/
function mail_user_delete($user)
diff --git a/includes/model/AngelType_model.php b/includes/model/AngelType_model.php
index 2dff7019..9b35f2b8 100644
--- a/includes/model/AngelType_model.php
+++ b/includes/model/AngelType_model.php
@@ -181,10 +181,10 @@ function AngelType_validate_name($name, $angeltype)
/**
* Returns all angeltypes and subscription state to each of them for given user.
*
- * @param array $user
+ * @param int $userId
* @return array
*/
-function AngelTypes_with_user($user)
+function AngelTypes_with_user($userId)
{
return DB::select('
SELECT `AngelTypes`.*,
@@ -194,7 +194,7 @@ function AngelTypes_with_user($user)
FROM `AngelTypes`
LEFT JOIN `UserAngelTypes` ON `AngelTypes`.`id`=`UserAngelTypes`.`angeltype_id`
AND `UserAngelTypes`.`user_id` = ?
- ORDER BY `name`', [$user['UID']]);
+ ORDER BY `name`', [$userId]);
}
/**
diff --git a/includes/model/ShiftEntry_model.php b/includes/model/ShiftEntry_model.php
index ebf600f3..c8ca5ef4 100644
--- a/includes/model/ShiftEntry_model.php
+++ b/includes/model/ShiftEntry_model.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* Returns an array with the attributes of shift entries.
@@ -74,7 +75,7 @@ function ShiftEntries_by_shift($shift_id)
*/
function ShiftEntry_create($shift_entry)
{
- $user = User($shift_entry['UID']);
+ $user = User::find($shift_entry['UID']);
$shift = Shift($shift_entry['SID']);
mail_shift_assign($user, $shift);
$result = DB::insert('
@@ -150,10 +151,10 @@ function ShiftEntry($shift_entry_id)
*/
function ShiftEntry_delete($shiftEntry)
{
- mail_shift_removed(User($shiftEntry['UID']), Shift($shiftEntry['SID']));
+ mail_shift_removed(User::find($shiftEntry['UID']), Shift($shiftEntry['SID']));
DB::delete('DELETE FROM `ShiftEntry` WHERE `id` = ?', [$shiftEntry['id']]);
- $signout_user = User($shiftEntry['UID']);
+ $signout_user = User::find($shiftEntry['UID']);
$shift = Shift($shiftEntry['SID']);
$shifttype = ShiftType($shift['shifttype_id']);
$room = Room($shift['RID']);
@@ -171,10 +172,10 @@ function ShiftEntry_delete($shiftEntry)
/**
* Returns next (or current) shifts of given user.
*
- * @param array $user
+ * @param int $userId
* @return array
*/
-function ShiftEntries_upcoming_for_user($user)
+function ShiftEntries_upcoming_for_user($userId)
{
return DB::select('
SELECT *
@@ -186,7 +187,7 @@ function ShiftEntries_upcoming_for_user($user)
ORDER BY `Shifts`.`end`
',
[
- $user['UID'],
+ $userId,
time(),
]
);
@@ -195,10 +196,10 @@ function ShiftEntries_upcoming_for_user($user)
/**
* Returns shifts completed by the given user.
*
- * @param array $user
+ * @param int $userId
* @return array
*/
-function ShiftEntries_finished_by_user($user)
+function ShiftEntries_finished_by_user($userId)
{
return DB::select('
SELECT *
@@ -211,7 +212,7 @@ function ShiftEntries_finished_by_user($user)
ORDER BY `Shifts`.`end`
',
[
- $user['UID'],
+ $userId,
time(),
]
);
@@ -242,10 +243,10 @@ function ShiftEntries_by_shift_and_angeltype($shift_id, $angeltype_id)
/**
* Returns all freeloaded shifts for given user.
*
- * @param array $user
+ * @param int $userId
* @return array
*/
-function ShiftEntries_freeloaded_by_user($user)
+function ShiftEntries_freeloaded_by_user($userId)
{
return DB::select('
SELECT *
@@ -254,7 +255,7 @@ function ShiftEntries_freeloaded_by_user($user)
AND `UID` = ?
',
[
- $user['UID']
+ $userId
]
);
}
diff --git a/includes/model/Shifts_model.php b/includes/model/Shifts_model.php
index 30ce5a97..e03ca0bf 100644
--- a/includes/model/Shifts_model.php
+++ b/includes/model/Shifts_model.php
@@ -326,7 +326,7 @@ function Shift_signup_allowed_angel(
}
if (empty($user_shifts)) {
- $user_shifts = Shifts_by_user($user);
+ $user_shifts = Shifts_by_user($user['UID']);
}
$signed_up = false;
@@ -352,7 +352,7 @@ function Shift_signup_allowed_angel(
}
if (empty($user_angeltype)) {
- $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype);
+ $user_angeltype = UserAngelType_by_User_and_AngelType($user['UID'], $angeltype);
}
if (
@@ -577,7 +577,7 @@ function Shift_update_by_psid($shift)
*/
function Shift_create($shift)
{
- global $user;
+ $user = auth()->user();
DB::insert('
INSERT INTO `Shifts` (
`shifttype_id`,
@@ -601,7 +601,7 @@ function Shift_create($shift)
$shift['title'],
$shift['URL'],
$shift['PSID'],
- $user['UID'],
+ $user->id,
time(),
time(),
]
@@ -613,11 +613,11 @@ function Shift_create($shift)
/**
* Return users shifts.
*
- * @param array $user
+ * @param int $userId
* @param bool $include_freeload_comments
* @return array[]
*/
-function Shifts_by_user($user, $include_freeload_comments = false)
+function Shifts_by_user($userId, $include_freeload_comments = false)
{
return DB::select('
SELECT
@@ -640,7 +640,7 @@ function Shifts_by_user($user, $include_freeload_comments = false)
ORDER BY `start`
',
[
- $user['UID']
+ $userId
]
);
}
diff --git a/includes/model/UserAngelTypes_model.php b/includes/model/UserAngelTypes_model.php
index b1005095..943dbb5b 100644
--- a/includes/model/UserAngelTypes_model.php
+++ b/includes/model/UserAngelTypes_model.php
@@ -9,43 +9,43 @@ use Engelsystem\Database\DB;
/**
* Checks if a user joined an angeltype.
*
- * @param array $user The user to be checked
+ * @param int $userId The user to be checked
* @param array $angeltype The angeltype to be checked
* @return boolean
*/
-function UserAngelType_exists($user, $angeltype)
+function UserAngelType_exists($userId, $angeltype)
{
return count(DB::select('
SELECT `id`
FROM `UserAngelTypes`
WHERE `UserAngelTypes`.`user_id`=?
AND `angeltype_id`=?
- ', [$user['UID'], $angeltype['id']])) > 0;
+ ', [$userId, $angeltype['id']])) > 0;
}
/**
* List users angeltypes.
*
- * @param array $user
+ * @param int $userId
* @return array[]
*/
-function User_angeltypes($user)
+function User_angeltypes($userId)
{
return DB::select('
SELECT `AngelTypes`.*, `UserAngelTypes`.`confirm_user_id`, `UserAngelTypes`.`supporter`
FROM `UserAngelTypes`
JOIN `AngelTypes` ON `UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id`
WHERE `UserAngelTypes`.`user_id`=?
- ', [$user['UID']]);
+ ', [$userId]);
}
/**
* Gets unconfirmed user angeltypes for angeltypes of which the given user is a supporter.
*
- * @param array $user
+ * @param int $userId
* @return array[]
*/
-function User_unconfirmed_AngelTypes($user)
+function User_unconfirmed_AngelTypes($userId)
{
return DB::select('
SELECT
@@ -61,7 +61,7 @@ function User_unconfirmed_AngelTypes($user)
AND `UnconfirmedMembers`.`confirm_user_id` IS NULL
GROUP BY `UserAngelTypes`.`angeltype_id`, `UserAngelTypes`.`id`
ORDER BY `AngelTypes`.`name`
- ', [$user['UID']]);
+ ', [$userId]);
}
/**
@@ -126,32 +126,32 @@ function UserAngelTypes_delete_all($angeltype_id)
/**
* Confirm all unconfirmed UserAngelTypes for given Angeltype.
*
- * @param int $angeltype_id
- * @param array $confirm_user
+ * @param int $angeltype_id
+ * @param int $confirm_user_id
*/
-function UserAngelTypes_confirm_all($angeltype_id, $confirm_user)
+function UserAngelTypes_confirm_all($angeltype_id, $confirm_user_id)
{
DB::update('
UPDATE `UserAngelTypes`
SET `confirm_user_id`=?
WHERE `angeltype_id`=?
AND `confirm_user_id` IS NULL
- ', [$confirm_user['UID'], $angeltype_id]);
+ ', [$confirm_user_id, $angeltype_id]);
}
/**
* Confirm an UserAngelType with confirming user.
*
- * @param int $user_angeltype_id
- * @param array $confirm_user
+ * @param int $user_angeltype_id
+ * @param int $confirm_user_id
*/
-function UserAngelType_confirm($user_angeltype_id, $confirm_user)
+function UserAngelType_confirm($user_angeltype_id, $confirm_user_id)
{
DB::update('
UPDATE `UserAngelTypes`
SET `confirm_user_id`=?
WHERE `id`=?
- LIMIT 1', [$confirm_user['UID'], $user_angeltype_id]);
+ LIMIT 1', [$confirm_user_id, $user_angeltype_id]);
}
/**
@@ -170,18 +170,18 @@ function UserAngelType_delete($user_angeltype)
/**
* Create an UserAngelType.
*
- * @param array $user
+ * @param int $userId
* @param array $angeltype
* @return int
*/
-function UserAngelType_create($user, $angeltype)
+function UserAngelType_create($userId, $angeltype)
{
DB::insert('
INSERT INTO `UserAngelTypes` (`user_id`, `angeltype_id`, `supporter`)
VALUES (?, ?, FALSE)
',
[
- $user['UID'],
+ $userId,
$angeltype['id']
]
);
@@ -209,11 +209,11 @@ function UserAngelType($user_angeltype_id)
/**
* Get an UserAngelType by user and angeltype.
*
- * @param array $user
+ * @param int $userId
* @param array $angeltype
* @return array|null
*/
-function UserAngelType_by_User_and_AngelType($user, $angeltype)
+function UserAngelType_by_User_and_AngelType($userId, $angeltype)
{
$angelType = DB::selectOne('
SELECT *
@@ -223,7 +223,7 @@ function UserAngelType_by_User_and_AngelType($user, $angeltype)
LIMIT 1
',
[
- $user['UID'],
+ $userId,
$angeltype['id']
]
);
@@ -234,16 +234,16 @@ function UserAngelType_by_User_and_AngelType($user, $angeltype)
/**
* Get an UserAngelTypes by user
*
- * @param array $user
+ * @param int $userId
* @return array[]|null
*/
-function UserAngelTypes_by_User($user)
+function UserAngelTypes_by_User($userId)
{
return DB::select('
SELECT *
FROM `UserAngelTypes`
WHERE `user_id`=?
',
- [$user['UID']]
+ [$userId]
);
}
diff --git a/includes/model/UserDriverLicenses_model.php b/includes/model/UserDriverLicenses_model.php
index 2c251d66..1be6d4d2 100644
--- a/includes/model/UserDriverLicenses_model.php
+++ b/includes/model/UserDriverLicenses_model.php
@@ -57,12 +57,12 @@ function UserDriverLicense($user_id)
* Create a user's driver license entry
*
* @param array $user_driver_license The UserDriverLicense to create
- * @param array $user
+ * @param int $userId
* @return array
*/
-function UserDriverLicenses_create($user_driver_license, $user)
+function UserDriverLicenses_create($user_driver_license, $userId)
{
- $user_driver_license['user_id'] = $user['UID'];
+ $user_driver_license['user_id'] = $userId;
DB::insert('
INSERT INTO `UserDriverLicenses` (
`user_id`,
diff --git a/includes/model/UserGroups_model.php b/includes/model/UserGroups_model.php
index 9d67770c..769871e9 100644
--- a/includes/model/UserGroups_model.php
+++ b/includes/model/UserGroups_model.php
@@ -5,10 +5,10 @@ use Engelsystem\Database\DB;
/**
* Returns users groups
*
- * @param array $user
+ * @param int $userId
* @return array[]
*/
-function User_groups($user)
+function User_groups($userId)
{
return DB::select('
SELECT `Groups`.*
@@ -17,6 +17,6 @@ function User_groups($user)
WHERE `UserGroups`.`uid`=?
ORDER BY `UserGroups`.`group_id`
',
- [$user['UID']]
+ [$userId]
);
}
diff --git a/includes/model/UserWorkLog_model.php b/includes/model/UserWorkLog_model.php
index 46ab891e..c7de3f9e 100644
--- a/includes/model/UserWorkLog_model.php
+++ b/includes/model/UserWorkLog_model.php
@@ -21,13 +21,13 @@ function UserWorkLog($user_worklog_id)
/**
* Returns all work log entries for a user.
*
- * @param array $user
+ * @param int $userId
* @return array[]
*/
-function UserWorkLogsForUser($user)
+function UserWorkLogsForUser($userId)
{
return Db::select("SELECT * FROM `UserWorkLog` WHERE `user_id`=? ORDER BY `created_timestamp`", [
- $user['UID']
+ $userId
]);
}
@@ -123,10 +123,10 @@ function UserWorkLog_create($userWorkLog)
/**
* New user work log entry
*
- * @param array[] $user
+ * @param int $userId
* @return array
*/
-function UserWorkLog_new($user)
+function UserWorkLog_new($userId)
{
$work_date = parse_date('Y-m-d H:i', date('Y-m-d 00:00', time()));
@@ -137,7 +137,7 @@ function UserWorkLog_new($user)
}
return [
- 'user_id' => $user['UID'],
+ 'user_id' => $userId,
'work_timestamp' => $work_date,
'work_hours' => 0,
'comment' => ''
diff --git a/includes/model/User_model.php b/includes/model/User_model.php
index 051f8ff6..bed6bf47 100644
--- a/includes/model/User_model.php
+++ b/includes/model/User_model.php
@@ -22,10 +22,10 @@ function User_delete($user_id)
* Returns the tshirt score (number of hours counted for tshirt).
* Accounts only ended shifts.
*
- * @param array[] $user
+ * @param int $userId
* @return int
*/
-function User_tshirt_score($user)
+function User_tshirt_score($userId)
{
$shift_sum_formula = User_get_shifts_sum_query();
$result_shifts = DB::selectOne('
@@ -36,7 +36,7 @@ function User_tshirt_score($user)
AND `Shifts`.`end` < ?
GROUP BY `User`.`UID`
', [
- $user['UID'],
+ $userId,
time()
]);
if (!isset($result_shifts['tshirt_score'])) {
@@ -50,7 +50,7 @@ function User_tshirt_score($user)
WHERE `User`.`UID` = ?
AND `UserWorkLog`.`work_timestamp` < ?
', [
- $user['UID'],
+ $userId,
time()
]);
if (!isset($result_worklog['tshirt_score'])) {
@@ -245,7 +245,7 @@ function User_is_freeloader($user)
{
global $user;
- return count(ShiftEntries_freeloaded_by_user($user)) >= config('max_freeloadable_shifts');
+ return count(ShiftEntries_freeloaded_by_user($user['UID'])) >= config('max_freeloadable_shifts');
}
/**
@@ -526,10 +526,10 @@ function User_generate_password_recovery_token(&$user)
* @param array $user
* @return float
*/
-function User_get_eligable_voucher_count(&$user)
+function User_get_eligable_voucher_count($user)
{
$voucher_settings = config('voucher_settings');
- $shifts_done = count(ShiftEntries_finished_by_user($user));
+ $shifts_done = count(ShiftEntries_finished_by_user($user['UID']));
$earned_vouchers = $user['got_voucher'] - $voucher_settings['initial_vouchers'];
$eligable_vouchers = $shifts_done / $voucher_settings['shifts_per_voucher'] - $earned_vouchers;
diff --git a/includes/pages/admin_active.php b/includes/pages/admin_active.php
index 3a9ba8c4..33c7459d 100644
--- a/includes/pages/admin_active.php
+++ b/includes/pages/admin_active.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -100,8 +101,8 @@ function admin_active()
if ($request->has('active') && preg_match('/^\d+$/', $request->input('active'))) {
$user_id = $request->input('active');
- $user_source = User($user_id);
- if (!empty($user_source)) {
+ $user_source = User::find($user_id);
+ if ($user_source) {
DB::update('UPDATE `User` SET `Aktiv`=1 WHERE `UID`=? LIMIT 1', [$user_id]);
engelsystem_log('User ' . User_Nick_render($user_source) . ' is active now.');
$msg = success(__('Angel has been marked as active.'), true);
@@ -110,8 +111,8 @@ function admin_active()
}
} elseif ($request->has('not_active') && preg_match('/^\d+$/', $request->input('not_active'))) {
$user_id = $request->input('not_active');
- $user_source = User($user_id);
- if (!empty($user_source)) {
+ $user_source = User::find($user_id);
+ if (!$user_source) {
DB::update('UPDATE `User` SET `Aktiv`=0 WHERE `UID`=? LIMIT 1', [$user_id]);
engelsystem_log('User ' . User_Nick_render($user_source) . ' is NOT active now.');
$msg = success(__('Angel has been marked as not active.'), true);
@@ -120,8 +121,8 @@ function admin_active()
}
} elseif ($request->has('tshirt') && preg_match('/^\d+$/', $request->input('tshirt'))) {
$user_id = $request->input('tshirt');
- $user_source = User($user_id);
- if (!empty($user_source)) {
+ $user_source = User::find($user_id);
+ if (!$user_source) {
DB::update('UPDATE `User` SET `Tshirt`=1 WHERE `UID`=? LIMIT 1', [$user_id]);
engelsystem_log('User ' . User_Nick_render($user_source) . ' has tshirt now.');
$msg = success(__('Angel has got a t-shirt.'), true);
@@ -130,8 +131,8 @@ function admin_active()
}
} elseif ($request->has('not_tshirt') && preg_match('/^\d+$/', $request->input('not_tshirt'))) {
$user_id = $request->input('not_tshirt');
- $user_source = User($user_id);
- if (!empty($user_source)) {
+ $user_source = User::find($user_id);
+ if (!$user_source) {
DB::update('UPDATE `User` SET `Tshirt`=0 WHERE `UID`=? LIMIT 1', [$user_id]);
engelsystem_log('User ' . User_Nick_render($user_source) . ' has NO tshirt.');
$msg = success(__('Angel has got no t-shirt.'), true);
diff --git a/includes/pages/admin_arrive.php b/includes/pages/admin_arrive.php
index 4f29b85d..62d74290 100644
--- a/includes/pages/admin_arrive.php
+++ b/includes/pages/admin_arrive.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -26,8 +27,8 @@ function admin_arrive()
if ($request->has('reset') && preg_match('/^\d+$/', $request->input('reset'))) {
$user_id = $request->input('reset');
- $user_source = User($user_id);
- if (!empty($user_source)) {
+ $user_source = User::find($user_id);
+ if ($user_source) {
DB::update('
UPDATE `User`
SET `Gekommen`=0, `arrival_date` = NULL
@@ -36,14 +37,14 @@ function admin_arrive()
', [$user_id]);
engelsystem_log('User set to not arrived: ' . User_Nick_render($user_source));
success(__('Reset done. Angel has not arrived.'));
- redirect(user_link($user_source['UID']));
+ redirect(user_link($user_source->id));
} else {
$msg = error(__('Angel not found.'), true);
}
} elseif ($request->has('arrived') && preg_match('/^\d+$/', $request->input('arrived'))) {
$user_id = $request->input('arrived');
- $user_source = User($user_id);
- if (!empty($user_source)) {
+ $user_source = User::find($user_id);
+ if ($user_source) {
DB::update('
UPDATE `User`
SET `Gekommen`=1, `arrival_date`=?
@@ -52,7 +53,7 @@ function admin_arrive()
', [time(), $user_id]);
engelsystem_log('User set has arrived: ' . User_Nick_render($user_source));
success(__('Angel has been marked as arrived.'));
- redirect(user_link($user_source['UID']));
+ redirect(user_link($user_source->id));
} else {
$msg = error(__('Angel not found.'), true);
}
diff --git a/includes/pages/admin_news.php b/includes/pages/admin_news.php
index d387e06b..2e951dde 100644
--- a/includes/pages/admin_news.php
+++ b/includes/pages/admin_news.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -29,7 +30,7 @@ function admin_news()
switch ($request->input('action')) {
case 'edit':
- $user_source = User($news['UID']);
+ $user_source = User::find($news['UID']);
if (
!in_array('admin_news_html', $privileges)
&& strip_tags($news['Text']) != $news['Text']
diff --git a/includes/pages/admin_questions.php b/includes/pages/admin_questions.php
index fc84ff9e..02f53d93 100644
--- a/includes/pages/admin_questions.php
+++ b/includes/pages/admin_questions.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -46,7 +47,7 @@ function admin_questions()
$unanswered_questions_table = [];
$questions = DB::select('SELECT * FROM `Questions` WHERE `AID` IS NULL');
foreach ($questions as $question) {
- $user_source = User($question['UID']);
+ $user_source = User::find($question['UID']);
$unanswered_questions_table[] = [
'from' => User_Nick_render($user_source),
@@ -66,7 +67,7 @@ function admin_questions()
$answered_questions_table = [];
$questions = DB::select('SELECT * FROM `Questions` WHERE NOT `AID` IS NULL');
foreach ($questions as $question) {
- $user_source = User($question['UID']);
+ $user_source = User::find($question['UID']);
$answer_user_source = User($question['AID']);
$answered_questions_table[] = [
'from' => User_Nick_render($user_source),
diff --git a/includes/pages/admin_user.php b/includes/pages/admin_user.php
index b4dd9c1b..961d59a2 100644
--- a/includes/pages/admin_user.php
+++ b/includes/pages/admin_user.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -27,8 +28,8 @@ function admin_user()
$user_id = $request->input('id');
if (!$request->has('action')) {
- $user_source = User($user_id);
- if (empty($user_source)) {
+ $user_source = User::find($user_id);
+ if (!$user_source) {
error(__('This user does not exist.'));
redirect(users_link());
}
@@ -47,22 +48,20 @@ function admin_user()
$html .= '<input type="hidden" name="Type" value="Normal">' . "\n";
$html .= '<tr><td>' . "\n";
$html .= '<table>' . "\n";
- $html .= ' <tr><td>Nick</td><td>' . '<input size="40" name="eNick" value="' . $user_source['Nick'] . '" class="form-control"></td></tr>' . "\n";
+ $html .= ' <tr><td>Nick</td><td>' . '<input size="40" name="eNick" value="' . $user_source->name . '" class="form-control"></td></tr>' . "\n";
$html .= ' <tr><td>Last login</td><td><p class="help-block">'
- . date('Y-m-d H:i', $user_source['lastLogIn'])
+ . $user_source->last_login_at->format('Y-m-d H:i')
. '</p></td></tr>' . "\n";
- $html .= ' <tr><td>Name</td><td>' . '<input size="40" name="eName" value="' . $user_source['Name'] . '" class="form-control"></td></tr>' . "\n";
- $html .= ' <tr><td>Vorname</td><td>' . '<input size="40" name="eVorname" value="' . $user_source['Vorname'] . '" class="form-control"></td></tr>' . "\n";
- $html .= ' <tr><td>Alter</td><td>' . '<input size="5" name="eAlter" value="' . $user_source['Alter'] . '" class="form-control"></td></tr>' . "\n";
- $html .= ' <tr><td>Telefon</td><td>' . '<input type="tel" size="40" name="eTelefon" value="' . $user_source['Telefon'] . '" class="form-control"></td></tr>' . "\n";
- $html .= ' <tr><td>Handy</td><td>' . '<input type= "tel" size="40" name="eHandy" value="' . $user_source['Handy'] . '" class="form-control"></td></tr>' . "\n";
- $html .= ' <tr><td>DECT</td><td>' . '<input size="4" name="eDECT" value="' . $user_source['DECT'] . '" class="form-control"></td></tr>' . "\n";
- if ($user_source['email_by_human_allowed']) {
- $html .= " <tr><td>email</td><td>" . '<input type="email" size="40" name="eemail" value="' . $user_source['email'] . '" class="form-control"></td></tr>' . "\n";
+ $html .= ' <tr><td>Name</td><td>' . '<input size="40" name="eName" value="' . $user_source->personalData->last_name . '" class="form-control"></td></tr>' . "\n";
+ $html .= ' <tr><td>Vorname</td><td>' . '<input size="40" name="eVorname" value="' . $user_source->personalData->first_name . '" class="form-control"></td></tr>' . "\n";
+ $html .= ' <tr><td>Handy</td><td>' . '<input type= "tel" size="40" name="eHandy" value="' . $user_source->contact->mobile . '" class="form-control"></td></tr>' . "\n";
+ $html .= ' <tr><td>DECT</td><td>' . '<input size="4" name="eDECT" value="' . $user_source->contact->dect . '" class="form-control"></td></tr>' . "\n";
+ if ($user_source->settings->email_human) {
+ $html .= " <tr><td>email</td><td>" . '<input type="email" size="40" name="eemail" value="' . $user_source->email . '" class="form-control"></td></tr>' . "\n";
}
- $html .= " <tr><td>jabber</td><td>" . '<input type="email" size="40" name="ejabber" value="' . $user_source['jabber'] . '" class="form-control"></td></tr>' . "\n";
$html .= ' <tr><td>Size</td><td>'
- . html_select_key('size', 'eSize', $tshirt_sizes, $user_source['Size'], __('Please select...')) . '</td></tr>' . "\n";
+ . html_select_key('size', 'eSize', $tshirt_sizes, $user_source->personalData->shirt_size,
+ __('Please select...')) . '</td></tr>' . "\n";
$options = [
'1' => __('Yes'),
@@ -71,23 +70,21 @@ function admin_user()
// Gekommen?
$html .= ' <tr><td>Gekommen</td><td>' . "\n";
- $html .= html_options('eGekommen', $options, $user_source['Gekommen']) . '</td></tr>' . "\n";
+ $html .= html_options('eGekommen', $options, $user_source->state->arrived) . '</td></tr>' . "\n";
// Aktiv?
$html .= ' <tr><td>Aktiv</td><td>' . "\n";
- $html .= html_options('eAktiv', $options, $user_source['Aktiv']) . '</td></tr>' . "\n";
+ $html .= html_options('eAktiv', $options, $user_source->state->active) . '</td></tr>' . "\n";
// Aktiv erzwingen
if (in_array('admin_active', $privileges)) {
$html .= ' <tr><td>' . __('Force active') . '</td><td>' . "\n";
- $html .= html_options('force_active', $options, $user_source['force_active']) . '</td></tr>' . "\n";
+ $html .= html_options('force_active', $options, $user_source->state->force_active) . '</td></tr>' . "\n";
}
// T-Shirt bekommen?
$html .= ' <tr><td>T-Shirt</td><td>' . "\n";
- $html .= html_options('eTshirt', $options, $user_source['Tshirt']) . '</td></tr>' . "\n";
-
- $html .= ' <tr><td>Hometown</td><td>' . '<input size="40" name="Hometown" value="' . $user_source['Hometown'] . '" class="form-control"></td></tr>' . "\n";
+ $html .= html_options('eTshirt', $options, $user_source->personalData->shirt_size) . '</td></tr>' . "\n";
$html .= '</table>' . "\n" . '</td><td valign="top"></td></tr>';
@@ -165,7 +162,7 @@ function admin_user()
}
$html .= buttons([
- button(user_delete_link($user_source['UID']), glyph('lock') . __('delete'), 'btn-danger')
+ button(user_delete_link($user_source->id), glyph('lock') . __('delete'), 'btn-danger')
]);
$html .= "<hr />";
@@ -227,7 +224,7 @@ function admin_user()
$user_groups_info[] = $groups[$group]['Name'];
}
}
- $user_source = User($user_id);
+ $user_source = User::find($user_id);
engelsystem_log(
'Set groups of ' . User_Nick_render($user_source) . ' to: '
. join(', ', $user_groups_info)
@@ -243,7 +240,7 @@ function admin_user()
case 'save':
$force_active = $user->state->force_active;
- $user_source = User($user_id);
+ $user_source = User::find($user_id);
if (in_array('admin_active', $privileges)) {
$force_active = $request->input('force_active');
}
@@ -252,37 +249,29 @@ function admin_user()
`Nick` = ?,
`Name` = ?,
`Vorname` = ?,
- `Telefon` = ?,
`Handy` = ?,
- `Alter` =?,
`DECT` = ?,
- ' . ($user_source['email_by_human_allowed']
+ ' . ($user_source->settings->email_human
? '`email` = ' . DB::getPdo()->quote($request->postData('eemail')) . ','
: '') . '
- `jabber` = ?,
`Size` = ?,
`Gekommen`= ?,
`Aktiv`= ?,
`force_active`= ?,
- `Tshirt` = ?,
- `Hometown` = ?
+ `Tshirt` = ?
WHERE `UID` = ?
LIMIT 1';
DB::update($sql, [
User_validate_Nick($request->postData('eNick')),
$request->postData('eName'),
$request->postData('eVorname'),
- $request->postData('eTelefon'),
$request->postData('eHandy'),
- $request->postData('eAlter'),
$request->postData('eDECT'),
- $request->postData('ejabber'),
$request->postData('eSize'),
$request->postData('eGekommen'),
$request->postData('eAktiv'),
$force_active,
$request->postData('eTshirt'),
- $request->postData('Hometown'),
$user_id,
]);
engelsystem_log(
@@ -300,7 +289,7 @@ function admin_user()
&& $request->postData('new_pw') == $request->postData('new_pw2')
) {
set_password($user_id, $request->postData('new_pw'));
- $user_source = User($user_id);
+ $user_source = User::find($user_id);
engelsystem_log('Set new password for ' . User_Nick_render($user_source));
$html .= success('Passwort neu gesetzt.', true);
} else {
diff --git a/includes/pages/guest_login.php b/includes/pages/guest_login.php
index 1bb39d01..32532c6f 100644
--- a/includes/pages/guest_login.php
+++ b/includes/pages/guest_login.php
@@ -2,6 +2,7 @@
use Carbon\Carbon;
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -264,7 +265,7 @@ function guest_register()
}
engelsystem_log(
- 'User ' . User_Nick_render(User($user_id))
+ 'User ' . User_Nick_render(User::find($user_id))
. ' signed up as: ' . join(', ', $user_angel_types_info)
);
success(__('Angel registration successful!'));
@@ -430,10 +431,10 @@ function guest_login()
if ($request->has('submit')) {
if ($request->has('nick') && strlen(User_validate_Nick($request->input('nick'))) > 0) {
$nick = User_validate_Nick($request->input('nick'));
- $login_user = DB::selectOne('SELECT * FROM `User` WHERE `Nick`=?', [$nick]);
- if (!empty($login_user)) {
+ $login_user = User::whereName($nick);
+ if ($login_user) {
if ($request->has('password')) {
- if (!verify_password($request->postData('password'), $login_user['Passwort'], $login_user['UID'])) {
+ if (!verify_password($request->postData('password'), $login_user->password, $login_user->id)) {
$valid = false;
error(__('Your password is incorrect. Please try it again.'));
}
@@ -450,9 +451,9 @@ function guest_login()
error(__('Please enter a nickname.'));
}
- if ($valid && !empty($login_user)) {
- $session->set('uid', $login_user['UID']);
- $session->set('locale', $login_user['Sprache']);
+ if ($valid && $login_user) {
+ $session->set('uid', $login_user->id);
+ $session->set('locale', $login_user->settings->language);
redirect(page_link_to('news'));
}
diff --git a/includes/pages/user_messages.php b/includes/pages/user_messages.php
index d2034dc0..4431133e 100644
--- a/includes/pages/user_messages.php
+++ b/includes/pages/user_messages.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -34,13 +35,13 @@ function user_unread_messages()
*/
function user_messages()
{
- global $user;
+ $user = auth()->user();
$request = request();
if (!$request->has('action')) {
$users = DB::select(
'SELECT `UID`, `Nick` FROM `User` WHERE NOT `UID`=? ORDER BY `Nick`',
- [$user['UID']]
+ [$user->id]
);
$to_select_data = [
@@ -61,8 +62,8 @@ function user_messages()
ORDER BY `isRead`,`Datum` DESC
',
[
- $user['UID'],
- $user['UID'],
+ $user->id,
+ $user->id,
]
);
@@ -78,8 +79,8 @@ function user_messages()
];
foreach ($messages as $message) {
- $sender_user_source = User($message['SUID']);
- $receiver_user_source = User($message['RUID']);
+ $sender_user_source = User::find($message['SUID']);
+ $receiver_user_source = User::find($message['RUID']);
$messages_table_entry = [
'new' => $message['isRead'] == 'N' ? '<span class="glyphicon glyphicon-envelope"></span>' : '',
@@ -89,7 +90,7 @@ function user_messages()
'text' => str_replace("\n", '<br />', $message['Text'])
];
- if ($message['RUID'] == $user['UID']) {
+ if ($message['RUID'] == $user->id) {
if ($message['isRead'] == 'N') {
$messages_table_entry['actions'] = button(
page_link_to('user_messages', ['action' => 'read', 'id' => $message['id']]),
@@ -134,7 +135,7 @@ function user_messages()
'SELECT `RUID` FROM `Messages` WHERE `id`=? LIMIT 1',
[$message_id]
);
- if (!empty($message) && $message['RUID'] == $user['UID']) {
+ if (!empty($message) && $message['RUID'] == $user->id) {
DB::update(
'UPDATE `Messages` SET `isRead`=\'Y\' WHERE `id`=? LIMIT 1',
[$message_id]
@@ -156,7 +157,7 @@ function user_messages()
'SELECT `SUID` FROM `Messages` WHERE `id`=? LIMIT 1',
[$message_id]
);
- if (!empty($message) && $message['SUID'] == $user['UID']) {
+ if (!empty($message) && $message['SUID'] == $user->id) {
DB::delete('DELETE FROM `Messages` WHERE `id`=? LIMIT 1', [$message_id]);
redirect(page_link_to('user_messages'));
} else {
diff --git a/includes/pages/user_myshifts.php b/includes/pages/user_myshifts.php
index 2a8a5d5a..ab4b00b6 100644
--- a/includes/pages/user_myshifts.php
+++ b/includes/pages/user_myshifts.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -31,12 +32,12 @@ function user_myshifts()
$shift_entry_id = $user['UID'];
}
- $shifts_user = DB::selectOne('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$shift_entry_id]);
+ $shifts_user = User::find($shift_entry_id);
if ($request->has('reset')) {
if ($request->input('reset') == 'ack') {
User_reset_api_key($user);
success(__('Key changed.'));
- redirect(page_link_to('users', ['action' => 'view', 'user_id' => $shifts_user['UID']]));
+ redirect(page_link_to('users', ['action' => 'view', 'user_id' => $shifts_user->id]));
}
return page_with_title(__('Reset API key'), [
error(
@@ -68,7 +69,7 @@ function user_myshifts()
',
[
$shift_entry_id,
- $shifts_user['UID'],
+ $shifts_user->id,
]
);
if (!empty($shift)) {
@@ -87,7 +88,7 @@ function user_myshifts()
}
$comment = strip_request_item_nl('comment');
- $user_source = User($shift['UID']);
+ $user_source = User::find($shift['UID']);
if ($valid) {
ShiftEntry_update([
@@ -105,7 +106,7 @@ function user_myshifts()
. '. Freeloaded: ' . ($freeloaded ? 'YES Comment: ' . $freeload_comment : 'NO')
);
success(__('Shift saved.'));
- redirect(page_link_to('users', ['action' => 'view', 'user_id' => $shifts_user['UID']]));
+ redirect(page_link_to('users', ['action' => 'view', 'user_id' => $shifts_user->id]));
}
}
@@ -125,6 +126,6 @@ function user_myshifts()
}
}
- redirect(page_link_to('users', ['action' => 'view', 'user_id' => $shifts_user['UID']]));
+ redirect(page_link_to('users', ['action' => 'view', 'user_id' => $shifts_user->id]));
return '';
}
diff --git a/includes/pages/user_news.php b/includes/pages/user_news.php
index ac1f8b80..266018a0 100644
--- a/includes/pages/user_news.php
+++ b/includes/pages/user_news.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -111,9 +112,7 @@ function display_news($news)
}
$html .= '<span class="glyphicon glyphicon-time"></span> ' . date('Y-m-d H:i', $news['Datum']) . '&emsp;';
- $user_source = User($news['UID']);
-
- $html .= User_Nick_render($user_source);
+ $html .= User_Nick_render(User::find($news['UID']));
if ($page != 'news_comments') {
$html .= '&emsp;<a href="' . page_link_to('news_comments', ['nid' => $news['ID']]) . '">'
. '<span class="glyphicon glyphicon-comment"></span> '
@@ -171,7 +170,7 @@ function user_news_comments()
[$nid]
);
foreach ($comments as $comment) {
- $user_source = User($comment['UID']);
+ $user_source = User::find($comment['UID']);
$html .= '<div class="panel panel-default">';
$html .= '<div class="panel-body">' . nl2br(htmlspecialchars($comment['Text'])) . '</div>';
diff --git a/includes/pages/user_questions.php b/includes/pages/user_questions.php
index 94922141..c269dbb1 100644
--- a/includes/pages/user_questions.php
+++ b/includes/pages/user_questions.php
@@ -1,6 +1,7 @@
<?php
use Engelsystem\Database\DB;
+use Engelsystem\Models\User\User;
/**
* @return string
@@ -29,7 +30,7 @@ function user_questions()
[$user->id]
);
foreach ($answered_questions as &$question) {
- $answer_user_source = User($question['AID']);
+ $answer_user_source = User::find($question['AID']);
$question['answer_user'] = User_Nick_render($answer_user_source);
}
diff --git a/includes/pages/user_shifts.php b/includes/pages/user_shifts.php
index dc33d078..350394be 100644
--- a/includes/pages/user_shifts.php
+++ b/includes/pages/user_shifts.php
@@ -217,7 +217,7 @@ function view_user_shifts()
}
$ownTypes = [];
- foreach (UserAngelTypes_by_User($user) as $type) {
+ foreach (UserAngelTypes_by_User($user['UID']) as $type) {
$ownTypes[] = (int)$type['angeltype_id'];
}
diff --git a/includes/sys_log.php b/includes/sys_log.php
index 513586e6..595e8b55 100644
--- a/includes/sys_log.php
+++ b/includes/sys_log.php
@@ -8,11 +8,11 @@
*/
function engelsystem_log($message)
{
- global $user;
$nick = "Guest";
$logger = app('logger');
+ $user = auth()->user();
- if (isset($user)) {
+ if ($user) {
$nick = User_Nick_render($user);
}
diff --git a/includes/view/Shifts_view.php b/includes/view/Shifts_view.php
index 92447efd..bd13a390 100644
--- a/includes/view/Shifts_view.php
+++ b/includes/view/Shifts_view.php
@@ -75,10 +75,10 @@ function Shift_editor_info_render($shift)
*/
function Shift_signup_button_render($shift, $angeltype, $user_angeltype = null)
{
- global $user;
+ $user = auth()->user();
if (empty($user_angeltype)) {
- $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype);
+ $user_angeltype = UserAngelType_by_User_and_AngelType($user->id, $angeltype);
}
if ($angeltype['shift_signup_state']->isSignupAllowed()) {
@@ -103,7 +103,8 @@ function Shift_signup_button_render($shift, $angeltype, $user_angeltype = null)
*/
function Shift_view($shift, $shifttype, $room, $angeltypes_source, ShiftSignupState $shift_signup_state)
{
- global $user, $privileges;
+ global $privileges;
+ $user = auth()->user();
$shift_admin = in_array('admin_shifts', $privileges);
$user_shift_admin = in_array('user_shifts_admin', $privileges);
@@ -141,7 +142,7 @@ function Shift_view($shift, $shifttype, $room, $angeltypes_source, ShiftSignupSt
$admin_rooms ? button(room_link($room), glyph('map-marker') . $room['Name']) : '',
];
}
- $buttons[] = button(user_link($user['UID']), '<span class="icon-icon_angel"></span> ' . __('My shifts'));
+ $buttons[] = button(user_link($user->id), '<span class="icon-icon_angel"></span> ' . __('My shifts'));
$content[] = buttons($buttons);
$content[] = Shift_view_header($shift, $room);
diff --git a/includes/view/UserAngelTypes_view.php b/includes/view/UserAngelTypes_view.php
index 965a353a..0702a2b3 100644
--- a/includes/view/UserAngelTypes_view.php
+++ b/includes/view/UserAngelTypes_view.php
@@ -1,8 +1,10 @@
<?php
+use Engelsystem\Models\User\User;
+
/**
* @param array $user_angeltype
- * @param array $user
+ * @param User $user
* @param array $angeltype
* @param bool $supporter
* @return string
@@ -89,7 +91,7 @@ function UserAngelTypes_confirm_all_view($angeltype)
/**
* @param array $user_angeltype
- * @param array $user
+ * @param User $user
* @param array $angeltype
* @return string
*/
@@ -118,7 +120,7 @@ function UserAngelType_confirm_view($user_angeltype, $user, $angeltype)
/**
* @param array $user_angeltype
- * @param array $user
+ * @param User $user
* @param array $angeltype
* @return string
*/
diff --git a/includes/view/UserWorkLog_view.php b/includes/view/UserWorkLog_view.php
index 1c2ffb40..e930e9e5 100644
--- a/includes/view/UserWorkLog_view.php
+++ b/includes/view/UserWorkLog_view.php
@@ -1,9 +1,11 @@
<?php
+use Engelsystem\Models\User\User;
+
/**
* Delete work log entry.
*
- * @param array $user_source
+ * @param User $user_source
* @param array $userWorkLog
* @return string
*/
@@ -15,7 +17,7 @@ function UserWorkLog_delete_view($user_source, $userWorkLog)
User_Nick_render($user_source)
), true),
buttons([
- button(user_link($user_source['UID']), glyph('remove') . __('cancel')),
+ button(user_link($user_source->id), glyph('remove') . __('cancel')),
button(user_worklog_delete_link($userWorkLog, [
'confirmed' => 1
]), glyph('ok') . __('delete'), 'btn-danger')
diff --git a/includes/view/User_view.php b/includes/view/User_view.php
index ccd5e5d2..6243d26e 100644
--- a/includes/view/User_view.php
+++ b/includes/view/User_view.php
@@ -145,7 +145,7 @@ function User_registration_success_view($event_welcome_message)
/**
* Gui for deleting user with password field.
*
- * @param array $user
+ * @param User $user
* @return string
*/
function User_delete_view($user)
@@ -153,7 +153,7 @@ function User_delete_view($user)
return page_with_title(sprintf(__('Delete %s'), User_Nick_render($user)), [
msg(),
buttons([
- button(user_edit_link($user['UID']), glyph('chevron-left') . __('back'))
+ button(user_edit_link($user->id), glyph('chevron-left') . __('back'))
]),
error(
__('Do you really want to delete the user including all his shifts and every other piece of his data?'),
@@ -292,7 +292,7 @@ function User_shift_state_render($user)
return '';
}
- $upcoming_shifts = ShiftEntries_upcoming_for_user($user);
+ $upcoming_shifts = ShiftEntries_upcoming_for_user($user['UID']);
if (empty($upcoming_shifts)) {
return '<span class="text-success">' . __('Free') . '</span>';
@@ -823,15 +823,25 @@ function User_groups_render($user_groups)
/**
* Render a user nickname.
*
- * @param array $user_source
+ * @param array|User $user
* @return string
*/
-function User_Nick_render($user_source)
+function User_Nick_render($user)
{
+ if ($user instanceof User) {
+ $id = $user->id;
+ $name = $user->name;
+ $arrived = $user->state->arrived;
+ } else {
+ $id = $user['UID'];
+ $name = $user['Nick'];
+ $arrived = $user['Gekommen'];
+ }
+
return render_profile_link(
- '<span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . '</a>',
- $user_source['UID'],
- ($user_source['Gekommen'] ? '' : 'text-muted')
+ '<span class="icon-icon_angel"></span> ' . htmlspecialchars($name) . '</a>',
+ $id,
+ ($arrived ? '' : 'text-muted')
);
}
@@ -861,9 +871,7 @@ function render_profile_link($text, $user_id = null, $class = '')
*/
function render_user_departure_date_hint()
{
- global $user;
-
- if (!isset($user['planned_departure_date']) || empty($user['planned_departure_date'])) {
+ if (!auth()->user()->personalData->planned_departure_date) {
$text = __('Please enter your planned date of departure on your settings page to give us a feeling for teardown capacities.');
return render_profile_link($text, null, 'alert-link');
}
@@ -895,9 +903,9 @@ function render_user_freeloader_hint()
*/
function render_user_arrived_hint()
{
- global $user;
+ $user = auth()->user();
- if ($user['Gekommen'] == 0) {
+ if (!$user->state->arrived) {
/** @var Carbon $buildup */
$buildup = config('buildup_start');
if (!empty($buildup) && $buildup->lessThan(new Carbon())) {
@@ -913,9 +921,9 @@ function render_user_arrived_hint()
*/
function render_user_tshirt_hint()
{
- global $user;
+ $user = auth()->user();
- if (config('enable_tshirt_size') && $user['Size'] == '') {
+ if (config('enable_tshirt_size') && !$user->personalData->shirt_size) {
$text = __('You need to specify a tshirt size in your settings!');
return render_profile_link($text, null, 'alert-link');
}
@@ -928,9 +936,9 @@ function render_user_tshirt_hint()
*/
function render_user_dect_hint()
{
- global $user;
+ $user = auth()->user();
- if ($user['Gekommen'] == 1 && $user['DECT'] == '') {
+ if ($user->state->arrived && !$user->contact->dect) {
$text = __('You need to specify a DECT phone number in your settings! If you don\'t have a DECT phone, just enter \'-\'.');
return render_profile_link($text, null, 'alert-link');
}
diff --git a/src/Models/User/HasUserModel.php b/src/Models/User/HasUserModel.php
index 89dbd642..d627e50d 100644
--- a/src/Models/User/HasUserModel.php
+++ b/src/Models/User/HasUserModel.php
@@ -6,7 +6,9 @@ use Engelsystem\Models\BaseModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
- * @property integer $user_id
+ * @property integer $user_id
+ *
+ * @property-read \Illuminate\Database\Query\Builder|\Engelsystem\Models\User\User $user
*
* @method static \Illuminate\Database\Query\Builder|static whereUserId($value)
*/