2011-06-03 06:40:29 +02:00
< ? php
2014-09-24 15:36:26 +02:00
2023-03-05 03:00:38 +01:00
use Engelsystem\Config\GoodieType ;
2023-04-06 19:19:04 +02:00
use Engelsystem\Http\Validation\Rules\Username ;
2022-11-06 12:41:52 +01:00
use Engelsystem\Models\Group ;
2018-10-09 21:47:31 +02:00
use Engelsystem\Models\User\User ;
2022-11-06 12:41:52 +01:00
use Illuminate\Database\Query\JoinClause ;
use Illuminate\Support\Collection ;
2017-01-21 13:58:53 +01:00
2017-01-03 03:22:48 +01:00
/**
* @ return string
*/
2017-01-02 03:57:23 +01:00
function admin_user_title ()
{
2018-08-29 21:55:32 +02:00
return __ ( 'All Angels' );
2013-11-25 21:04:58 +01:00
}
2017-01-03 03:22:48 +01:00
/**
* @ return string
*/
2017-01-02 03:57:23 +01:00
function admin_user ()
{
2018-10-31 12:48:22 +01:00
$user = auth () -> user ();
2017-01-21 23:07:20 +01:00
$tshirt_sizes = config ( 'tshirt_sizes' );
2017-07-18 21:38:53 +02:00
$request = request ();
2017-01-02 03:57:23 +01:00
$html = '' ;
2023-03-05 03:00:38 +01:00
$goodie = GoodieType :: from ( config ( 'goodie_type' ));
$goodie_enabled = $goodie !== GoodieType :: None ;
$goodie_tshirt = $goodie === GoodieType :: Tshirt ;
2023-11-16 21:27:23 +01:00
$user_info_edit = auth () -> can ( 'user.info.edit' );
2023-12-07 15:47:49 +01:00
$user_edit_shirt = auth () -> can ( 'user.edit.shirt' );
2023-12-21 10:14:34 +01:00
$user_edit = auth () -> can ( 'user.edit' );
2023-12-29 11:54:16 +01:00
$admin_arrive = auth () -> can ( 'admin_arrive' );
2017-01-02 15:43:36 +01:00
2017-07-18 21:38:53 +02:00
if ( ! $request -> has ( 'id' )) {
2019-09-08 02:25:49 +02:00
throw_redirect ( users_link ());
2014-12-27 21:55:24 +01:00
}
2017-01-02 15:43:36 +01:00
2017-07-18 21:38:53 +02:00
$user_id = $request -> input ( 'id' );
if ( ! $request -> has ( 'action' )) {
2018-10-09 21:47:31 +02:00
$user_source = User :: find ( $user_id );
if ( ! $user_source ) {
2018-08-29 21:55:32 +02:00
error ( __ ( 'This user does not exist.' ));
2019-09-08 02:25:49 +02:00
throw_redirect ( users_link ());
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2022-12-23 03:20:10 +01:00
$html .= __ ( 'Here you can change the user entry. Under the item \'Arrived\' the angel is marked as present, a yes at Active means that the angel was active.' );
2023-12-07 15:47:49 +01:00
if ( $goodie_enabled && $user_edit_shirt ) {
2023-03-05 03:00:38 +01:00
if ( $goodie_tshirt ) {
2023-01-27 21:01:23 +01:00
$html .= ' ' . __ ( 'If the angel is active, it can claim a T-shirt. If T-shirt is set to \'Yes\', the angel already got their T-shirt.' );
2023-03-05 03:00:38 +01:00
} else {
$html .= ' ' . __ ( 'If the angel is active, it can claim a goodie. If goodie is set to \'Yes\', the angel already got their goodie.' );
2023-01-27 21:01:23 +01:00
}
2022-12-23 03:20:10 +01:00
}
2023-12-04 23:33:07 +01:00
$html .= '<br><br>' ;
2017-08-28 16:21:10 +02:00
$html .= '<form action="'
2023-11-13 16:56:52 +01:00
. url ( '/admin-user' , [ 'action' => 'save' , 'id' => $user_id ])
2017-08-28 16:21:10 +02:00
. '" method="post">' . " \n " ;
2018-09-03 16:33:13 +02:00
$html .= form_csrf ();
2022-06-16 23:00:56 +02:00
$html .= '<table>' . " \n " ;
2017-01-03 14:12:17 +01:00
$html .= '<input type="hidden" name="Type" value="Normal">' . " \n " ;
$html .= '<tr><td>' . " \n " ;
$html .= '<table>' . " \n " ;
2023-12-06 19:03:12 +01:00
$html .= ' <tr><td>' . __ ( 'general.nick' ) . '</td><td>'
2023-12-21 10:14:34 +01:00
. '<input size="40" name="eNick" value="' . htmlspecialchars ( $user_source -> name )
. '" class="form-control" maxlength="24" ' . ( $user_edit ? '' : 'disabled' ) . '>'
2023-12-04 23:33:07 +01:00
. '</td></tr>' . " \n " ;
2022-12-23 03:20:10 +01:00
$html .= ' <tr><td>' . __ ( 'Last login' ) . '</td><td><p class="help-block">'
2023-11-23 14:30:46 +01:00
. ( $user_source -> last_login_at ? $user_source -> last_login_at -> format ( __ ( 'general.datetime' )) : '-' )
2017-01-03 15:32:12 +01:00
. '</p></td></tr>' . " \n " ;
2019-08-24 10:56:59 +02:00
if ( config ( 'enable_user_name' )) {
2023-12-06 19:03:12 +01:00
$html .= ' <tr><td>' . __ ( 'settings.profile.firstname' ) . '</td><td>'
2023-12-04 23:33:07 +01:00
. '<input size="40" name="eName" value="' . htmlspecialchars (( string ) $user_source -> personalData -> last_name ) . '" class="form-control" maxlength="64">'
. '</td></tr>' . " \n " ;
2023-12-06 19:03:12 +01:00
$html .= ' <tr><td>' . __ ( 'settings.profile.lastname' ) . '</td><td>'
2023-12-04 23:33:07 +01:00
. '<input size="40" name="eVorname" value="' . htmlspecialchars (( string ) $user_source -> personalData -> first_name ) . '" class="form-control" maxlength="64">'
. '</td></tr>' . " \n " ;
2019-08-24 10:56:59 +02:00
}
2023-12-06 19:03:12 +01:00
$html .= ' <tr><td>' . __ ( 'settings.profile.mobile' ) . '</td><td>'
2023-12-04 23:33:07 +01:00
. '<input type= "tel" size="40" name="eHandy" value="' . htmlspecialchars (( string ) $user_source -> contact -> mobile ) . '" class="form-control" maxlength="40">'
. '</td></tr>' . " \n " ;
2019-04-23 12:42:01 +02:00
if ( config ( 'enable_dect' )) {
2023-12-06 19:03:12 +01:00
$html .= ' <tr><td>' . __ ( 'general.dect' ) . '</td><td>'
2023-12-04 23:33:07 +01:00
. '<input size="40" name="eDECT" value="' . htmlspecialchars (( string ) $user_source -> contact -> dect ) . '" class="form-control" maxlength="40">'
. '</td></tr>' . " \n " ;
2019-04-23 12:42:01 +02:00
}
2018-10-09 21:47:31 +02:00
if ( $user_source -> settings -> email_human ) {
2023-12-06 19:03:12 +01:00
$html .= ' <tr><td>' . __ ( 'general.email' ) . '</td><td>'
2023-12-04 23:33:07 +01:00
. '<input type="email" size="40" name="eemail" value="' . htmlspecialchars ( $user_source -> email ) . '" class="form-control" maxlength="254">'
. '</td></tr>' . " \n " ;
2022-12-23 03:20:10 +01:00
}
2023-12-07 15:47:49 +01:00
if ( $goodie_tshirt && $user_edit_shirt ) {
2022-12-23 03:20:10 +01:00
$html .= ' <tr><td>' . __ ( 'user.shirt_size' ) . '</td><td>'
. html_select_key (
'size' ,
'eSize' ,
$tshirt_sizes ,
$user_source -> personalData -> shirt_size ,
2023-05-11 19:04:07 +02:00
__ ( 'form.select_placeholder' )
2022-12-23 03:20:10 +01:00
)
. '</td></tr>' . " \n " ;
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2023-11-17 12:26:41 +01:00
// User info
2023-11-16 21:27:23 +01:00
if ( $user_info_edit ) {
2023-11-17 12:26:41 +01:00
$html .= ' <tr><td>'
. __ ( 'user.info' )
. ' <span class="bi bi-info-circle-fill text-info" data-bs-toggle="tooltip" title="'
. __ ( 'user.info.hint' )
. '"></span>'
. '</td><td>'
. '<textarea cols="40" rows="" name="userInfo" class="form-control">'
. htmlspecialchars (( string ) $user_source -> state -> user_info )
. '</textarea>'
. '</td></tr>' . " \n " ;
2023-11-16 21:27:23 +01:00
}
2017-01-02 03:57:23 +01:00
$options = [
2018-08-29 21:55:32 +02:00
'1' => __ ( 'Yes' ),
2023-02-05 18:03:00 +01:00
'0' => __ ( 'No' ),
2017-01-02 15:43:36 +01:00
];
2023-11-17 12:26:41 +01:00
// Arrived?
2023-10-03 21:34:03 +02:00
$html .= ' <tr><td>' . __ ( 'user.arrived' ) . '</td><td>' . " \n " ;
2023-12-29 11:54:16 +01:00
if ( $admin_arrive ) {
$html .= html_options ( 'arrive' , $options , $user_source -> state -> arrived ) . '</td></tr>' . " \n " ;
} else {
$html .= ( $user_source -> state -> arrived ? __ ( 'Yes' ) : __ ( 'No' ));
$html .= '</td></tr>' . " \n " ;
}
2017-01-02 15:43:36 +01:00
2023-11-17 12:26:41 +01:00
// Active?
2023-12-07 15:47:49 +01:00
if ( $user_edit_shirt ) {
$html .= ' <tr><td>' . __ ( 'user.active' ) . '</td><td>' . " \n " ;
$html .= html_options ( 'eAktiv' , $options , $user_source -> state -> active ) . '</td></tr>' . " \n " ;
} else {
$html .= ' <tr><td>' . __ ( 'user.active' ) . '</td><td>' . " \n " ;
$html .= ( $user_source -> state -> active ? __ ( 'Yes' ) : __ ( 'No' ));
$html .= '</td></tr>' . " \n " ;
}
2017-01-02 15:43:36 +01:00
2023-11-17 12:26:41 +01:00
// Forced active?
2024-01-23 17:11:32 +01:00
if ( auth () -> can ( 'admin_active' ) && config ( 'enable_force_active' )) {
2018-08-29 21:55:32 +02:00
$html .= ' <tr><td>' . __ ( 'Force active' ) . '</td><td>' . " \n " ;
2018-10-09 21:47:31 +02:00
$html .= html_options ( 'force_active' , $options , $user_source -> state -> force_active ) . '</td></tr>' . " \n " ;
2017-01-02 15:43:36 +01:00
}
2023-12-07 15:47:49 +01:00
if ( $goodie_enabled && $user_edit_shirt ) {
2022-12-23 03:20:10 +01:00
// T-Shirt bekommen?
2023-03-05 03:00:38 +01:00
if ( $goodie_tshirt ) {
2023-11-16 16:11:45 +01:00
$html .= ' <tr><td>' . __ ( 'T-shirt' ) . '</td><td>' . " \n " ;
2023-03-05 03:00:38 +01:00
} else {
$html .= ' <tr><td>' . __ ( 'Goodie' ) . '</td><td>' . " \n " ;
2023-01-27 21:01:23 +01:00
}
2022-12-23 03:20:10 +01:00
$html .= html_options ( 'eTshirt' , $options , $user_source -> state -> got_shirt ) . '</td></tr>' . " \n " ;
}
2022-06-16 23:00:56 +02:00
$html .= '</table>' . " \n " . '</td><td></td></tr>' ;
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
$html .= '</td></tr>' . " \n " ;
2023-12-04 23:33:07 +01:00
$html .= '</table>' . " \n " . '<br>' . " \n " ;
2023-12-21 13:08:29 +01:00
$html .= '<button type="submit" class="btn btn-primary">'
. icon ( 'save' ) . __ ( 'form.save' ) . '</button>' . " \n " ;
2017-01-03 14:12:17 +01:00
$html .= '</form>' ;
2017-01-02 15:43:36 +01:00
2023-12-04 23:33:07 +01:00
$html .= '<hr>' ;
2017-01-02 15:43:36 +01:00
2023-12-06 13:24:46 +01:00
$html .= __ ( 'Here you can reset the password of this angel:' );
2017-01-02 15:43:36 +01:00
2023-12-06 13:24:46 +01:00
$html .= '<form action="'
2023-11-13 16:56:52 +01:00
. url ( '/admin-user' , [ 'action' => 'change_pw' , 'id' => $user_id ])
2017-08-28 16:21:10 +02:00
. '" method="post">' . " \n " ;
2018-09-03 16:33:13 +02:00
$html .= form_csrf ();
2017-01-03 14:12:17 +01:00
$html .= '<table>' . " \n " ;
2023-12-06 13:24:46 +01:00
$html .= ' <tr><td>' . __ ( 'settings.password' )
. ' <span class="bi bi-info-circle-fill text-info" data-bs-toggle="tooltip" title="'
. __ ( 'password.minimal_length' , [ config ( 'min_password_length' )]) . '"></span>'
. '</td><td>'
2023-12-04 23:33:07 +01:00
. '<input type="password" size="40" name="new_pw" value="" class="form-control" autocomplete="new-password">'
. '</td></tr>' . " \n " ;
2023-12-06 19:03:12 +01:00
$html .= ' <tr><td>' . __ ( 'password.reset.confirm' ) . '</td><td>'
2023-12-04 23:33:07 +01:00
. '<input type="password" size="40" name="new_pw2" value="" class="form-control" autocomplete="new-password">'
. '</td></tr>' . " \n " ;
2017-01-02 15:43:36 +01:00
2023-12-04 23:33:07 +01:00
$html .= '</table>' . " \n " . '<br>' . " \n " ;
2023-12-21 13:08:29 +01:00
$html .= '<button type="submit" class="btn btn-primary">'
. icon ( 'save' ) . __ ( 'form.save' ) . '</button>' . " \n " ;
2017-01-03 14:12:17 +01:00
$html .= '</form>' ;
2017-01-02 15:43:36 +01:00
2023-12-04 23:33:07 +01:00
$html .= '<hr>' ;
2017-01-02 15:43:36 +01:00
2022-11-06 12:41:52 +01:00
/** @var Group $my_highest_group */
$my_highest_group = $user -> groups () -> orderByDesc ( 'id' ) -> first ();
2017-07-28 20:11:09 +02:00
if ( ! empty ( $my_highest_group )) {
2022-11-06 12:41:52 +01:00
$my_highest_group = $my_highest_group -> id ;
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2022-11-06 12:41:52 +01:00
$angel_highest_group = $user_source -> groups () -> orderByDesc ( 'id' ) -> first ();
2019-07-28 15:33:01 +02:00
if ( ! empty ( $angel_highest_group )) {
2022-11-06 12:41:52 +01:00
$angel_highest_group = $angel_highest_group -> id ;
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2020-09-12 23:03:38 +02:00
if (
( $user_id != $user -> id || auth () -> can ( 'admin_groups' ))
2019-07-28 15:33:01 +02:00
&& ( $my_highest_group >= $angel_highest_group || is_null ( $angel_highest_group ))
2020-09-12 23:03:38 +02:00
) {
2022-12-23 03:20:10 +01:00
$html .= __ ( 'Here you can define the user groups of the angel:' ) . '<form action="'
2023-11-13 16:56:52 +01:00
. url ( '/admin-user' , [ 'action' => 'save_groups' , 'id' => $user_id ])
2017-08-28 16:21:10 +02:00
. '" method="post">' . " \n " ;
2018-09-03 16:33:13 +02:00
$html .= form_csrf ();
2022-11-30 00:14:08 +01:00
$html .= '<div>' ;
2017-01-02 15:43:36 +01:00
2022-11-06 12:41:52 +01:00
$groups = changeableGroups ( $my_highest_group , $user_id );
2017-01-02 03:57:23 +01:00
foreach ( $groups as $group ) {
2022-11-30 00:14:08 +01:00
$html .= '<div class="form-check">'
. '<input class="form-check-input" type="checkbox" id="' . $group -> id . '" name="groups[]" value="' . $group -> id . '" '
2022-11-06 12:41:52 +01:00
. ( $group -> selected ? ' checked="checked"' : '' )
2023-12-04 23:33:07 +01:00
. ' /><label class="form-check-label" for="' . $group -> id . '">'
. htmlspecialchars ( $group -> name )
. '</label></div>' ;
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2022-11-30 00:14:08 +01:00
$html .= '</div><br>' ;
2017-01-02 15:43:36 +01:00
2023-12-21 13:08:29 +01:00
$html .= '<button type="submit" class="btn btn-primary">'
. icon ( 'save' ) . __ ( 'form.save' ) . '</button>' . " \n " ;
2017-01-03 14:12:17 +01:00
$html .= '</form>' ;
2017-01-02 15:43:36 +01:00
2023-12-04 23:33:07 +01:00
$html .= '<hr>' ;
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html .= buttons ([
2023-12-21 13:08:29 +01:00
button ( user_delete_link ( $user_source -> id ), icon ( 'trash' ) . __ ( 'form.delete' ), 'btn-danger' ),
2017-01-02 15:43:36 +01:00
]);
2023-02-05 16:34:16 +01:00
$html .= '<hr>' ;
2017-01-02 03:57:23 +01:00
} else {
2017-07-18 21:38:53 +02:00
switch ( $request -> input ( 'action' )) {
2017-01-02 15:43:36 +01:00
case 'save_groups' :
2022-11-06 12:41:52 +01:00
$angel = User :: findOrFail ( $user_id );
if ( $angel -> id != $user -> id || auth () -> can ( 'admin_groups' )) {
/** @var Group $my_highest_group */
$my_highest_group = $user -> groups () -> orderByDesc ( 'id' ) -> first ();
/** @var Group $angel_highest_group */
$angel_highest_group = $angel -> groups () -> orderByDesc ( 'id' ) -> first ();
2017-01-21 13:58:53 +01:00
if (
2019-07-28 15:33:01 +02:00
$my_highest_group
2017-01-21 13:58:53 +01:00
&& (
2019-07-28 15:33:01 +02:00
empty ( $angel_highest_group )
2022-11-06 12:41:52 +01:00
|| ( $my_highest_group -> id >= $angel_highest_group -> id )
2017-01-21 13:58:53 +01:00
)
) {
2022-11-06 12:41:52 +01:00
$groups_source = changeableGroups ( $my_highest_group -> id , $angel -> id );
2017-01-02 15:43:36 +01:00
$groups = [];
2022-11-06 12:41:52 +01:00
$groupList = [];
2017-01-02 15:43:36 +01:00
foreach ( $groups_source as $group ) {
2022-11-06 12:41:52 +01:00
$groups [ $group -> id ] = $group ;
$groupList [] = $group -> id ;
2017-01-02 15:43:36 +01:00
}
2017-07-18 21:38:53 +02:00
$groupsRequest = $request -> input ( 'groups' );
if ( ! is_array ( $groupsRequest )) {
$groupsRequest = [];
2017-01-02 15:43:36 +01:00
}
2022-11-06 12:41:52 +01:00
$angel -> groups () -> detach ();
2017-01-02 15:43:36 +01:00
$user_groups_info = [];
2017-07-18 21:38:53 +02:00
foreach ( $groupsRequest as $group ) {
2022-11-06 12:41:52 +01:00
if ( in_array ( $group , $groupList )) {
$group = $groups [ $group ];
$angel -> groups () -> attach ( $group );
$user_groups_info [] = $group -> name ;
2017-01-02 15:43:36 +01:00
}
}
2017-01-03 14:12:17 +01:00
engelsystem_log (
2022-11-06 12:41:52 +01:00
'Set groups of ' . User_Nick_render ( $angel , true ) . ' to: '
2017-12-25 23:12:52 +01:00
. join ( ', ' , $user_groups_info )
2017-01-03 14:12:17 +01:00
);
2022-12-23 03:20:10 +01:00
$html .= success ( __ ( 'User groups saved.' ), true );
2017-01-02 15:43:36 +01:00
} else {
2022-12-23 03:20:10 +01:00
$html .= error ( __ ( 'You cannot edit angels with more rights.' ), true );
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
} else {
2022-12-23 03:20:10 +01:00
$html .= error ( __ ( 'You cannot edit your own rights.' ), true );
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
break ;
case 'save' :
2018-10-09 21:47:31 +02:00
$user_source = User :: find ( $user_id );
2023-12-07 15:47:49 +01:00
2023-12-21 10:14:34 +01:00
$changed_email = false ;
2024-01-13 15:07:40 +01:00
$email = $request -> postData ( 'eemail' );
if (( $user_source -> email !== $email ) && User :: whereEmail ( $email ) -> exists ()) {
$html .= error ( __ ( 'settings.profile.email.already-taken' ) . " \n " , true );
break ;
}
2018-10-17 01:30:10 +02:00
if ( $user_source -> settings -> email_human ) {
2024-01-13 15:07:40 +01:00
$changed_email = $user_source -> email !== $email ;
$user_source -> email = $email ;
2018-10-14 18:24:42 +02:00
}
2023-04-06 19:19:04 +02:00
2024-01-13 15:07:40 +01:00
$changed_nick = false ;
2023-12-28 16:26:56 +01:00
$nick = trim (( string ) $request -> get ( 'eNick' ));
2023-04-06 19:19:04 +02:00
$nickValid = ( new Username ()) -> validate ( $nick );
2024-01-13 15:07:40 +01:00
if (( $user_source -> name !== $nick ) && User :: whereName ( $nick ) -> exists ()) {
$html .= error ( __ ( 'settings.profile.nick.already-taken' ) . " \n " , true );
break ;
}
2023-12-21 10:14:34 +01:00
$old_nick = $user_source -> name ;
if ( $nickValid && $user_edit ) {
2024-01-13 15:07:40 +01:00
$changed_nick = ( $user_source -> name !== $nick ) || User :: whereName ( $nick ) -> exists ();
2023-04-06 19:19:04 +02:00
$user_source -> name = $nick ;
2019-04-28 14:34:04 +02:00
}
2018-10-14 18:24:42 +02:00
$user_source -> save ();
2022-12-23 03:20:10 +01:00
2019-08-24 12:53:26 +02:00
if ( config ( 'enable_user_name' )) {
$user_source -> personalData -> first_name = $request -> postData ( 'eVorname' );
$user_source -> personalData -> last_name = $request -> postData ( 'eName' );
}
2023-12-07 15:47:49 +01:00
if ( $goodie_tshirt && $user_edit_shirt ) {
2022-12-23 03:20:10 +01:00
$user_source -> personalData -> shirt_size = $request -> postData ( 'eSize' );
}
2018-10-14 18:24:42 +02:00
$user_source -> personalData -> save ();
2022-12-23 03:20:10 +01:00
2018-10-14 18:24:42 +02:00
$user_source -> contact -> mobile = $request -> postData ( 'eHandy' );
2023-12-07 15:47:49 +01:00
if ( config ( 'enable_dect' )) {
$user_source -> contact -> dect = $request -> postData ( 'eDECT' );
}
2018-10-14 18:24:42 +02:00
$user_source -> contact -> save ();
2022-12-23 03:20:10 +01:00
2023-12-07 15:47:49 +01:00
if ( $goodie_enabled && $user_edit_shirt ) {
2022-12-23 03:20:10 +01:00
$user_source -> state -> got_shirt = $request -> postData ( 'eTshirt' );
}
2023-11-16 21:27:23 +01:00
if ( $user_info_edit ) {
$user_source -> state -> user_info = $request -> postData ( 'userInfo' );
}
2023-12-29 11:54:16 +01:00
if ( $admin_arrive ) {
$user_source -> state -> arrived = $request -> postData ( 'arrive' );
}
2023-11-16 21:27:23 +01:00
2023-12-07 15:47:49 +01:00
if ( $user_edit_shirt ) {
$user_source -> state -> active = $request -> postData ( 'eAktiv' );
}
2024-01-23 17:11:32 +01:00
if ( auth () -> can ( 'admin_active' ) && config ( 'enable_force_active' )) {
2023-12-07 15:47:49 +01:00
$user_source -> state -> force_active = $request -> input ( 'force_active' );
}
2018-10-14 18:24:42 +02:00
$user_source -> state -> save ();
2017-01-03 14:12:17 +01:00
engelsystem_log (
2023-12-21 10:14:34 +01:00
'Updated user: ' . ( $changed_nick
? ( 'nick modified form ' . $old_nick . ' to ' . $user_source -> name )
: $user_source -> name )
. ' (' . $user_source -> id . ')'
. ( $changed_email ? ', email modified' : '' )
2023-11-16 21:27:23 +01:00
. ( $goodie_tshirt ? ', t-shirt-size: ' . $user_source -> personalData -> shirt_size : '' )
2023-12-29 11:54:16 +01:00
. ', arrived: ' . $user_source -> state -> arrived
2019-08-22 23:26:00 +02:00
. ', active: ' . $user_source -> state -> active
. ', force-active: ' . $user_source -> state -> force_active
2023-11-16 21:27:23 +01:00
. ( $goodie_tshirt ? ', t-shirt: ' : ', goodie: ' . $user_source -> state -> got_shirt )
. ( $user_info_edit ? ', user-info: ' . $user_source -> state -> user_info : '' )
2017-01-03 14:12:17 +01:00
);
2023-08-13 23:32:36 +02:00
$html .= success ( __ ( 'Changes were saved.' ) . " \n " , true );
2017-01-02 15:43:36 +01:00
break ;
case 'change_pw' :
2017-12-25 23:12:52 +01:00
if (
$request -> postData ( 'new_pw' ) != ''
&& $request -> postData ( 'new_pw' ) == $request -> postData ( 'new_pw2' )
) {
2018-10-09 21:47:31 +02:00
$user_source = User :: find ( $user_id );
2018-11-27 12:01:36 +01:00
auth () -> setPassword ( $user_source , $request -> postData ( 'new_pw' ));
2019-05-31 04:03:19 +02:00
engelsystem_log ( 'Set new password for ' . User_Nick_render ( $user_source , true ));
2022-12-23 03:20:10 +01:00
$html .= success ( __ ( 'Password reset done.' ), true );
2017-01-02 15:43:36 +01:00
} else {
2017-12-25 23:12:52 +01:00
$html .= error (
2022-12-23 03:20:10 +01:00
__ ( 'The entries must match and must not be empty!' ),
2017-12-25 23:12:52 +01:00
true
);
2017-01-02 15:43:36 +01:00
}
break ;
2014-12-27 21:55:24 +01:00
}
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2023-12-21 13:08:29 +01:00
$link = button ( url ( '/users' , [ 'action' => 'view' , 'user_id' => $user_id ]), icon ( 'chevron-left' ), 'btn-sm' , '' , __ ( 'general.back' ));
2023-10-25 17:38:23 +02:00
return page_with_title (
$link . ' ' . __ ( 'Edit user' ),
[
2023-02-05 18:03:00 +01:00
$html ,
2023-10-25 17:38:23 +02:00
]
);
2011-06-03 06:40:29 +02:00
}
2022-11-06 12:41:52 +01:00
/**
* @ param $myHighestGroup
* @ param $angelId
* @ return Collection | Group []
*/
function changeableGroups ( $myHighestGroup , $angelId ) : Collection
{
return Group :: query ()
-> where ( 'groups.id' , '<=' , $myHighestGroup )
-> join ( 'users_groups' , function ( $query ) use ( $angelId ) {
/** @var JoinClause $query */
$query -> where ( 'users_groups.group_id' , '=' , $query -> raw ( 'groups.id' ))
-> where ( 'users_groups.user_id' , $angelId );
}, null , null , 'left outer' )
-> orderBy ( 'name' )
-> get ([
'groups.*' ,
2023-02-05 18:03:00 +01:00
'users_groups.group_id as selected' ,
2022-11-06 12:41:52 +01:00
]);
}