feat(groups): user_groups lookup, admin assignment UI, public directory with DataTables

This commit is contained in:
2025-12-10 10:01:07 +01:00
parent 9094b58b6d
commit 2b6d4c49f5
8 changed files with 201 additions and 2 deletions

View File

@@ -19,7 +19,7 @@ class UserModel
{
$database = DatabaseFactory::getFactory()->getConnection();
$sql = "SELECT user_id, user_name, user_email, user_active, user_has_avatar, user_deleted FROM users";
$sql = "SELECT user_id, user_name, user_email, user_active, user_has_avatar, user_deleted, user_account_type FROM users";
$query = $database->prepare($sql);
$query->execute();
@@ -39,11 +39,46 @@ class UserModel
$all_users_profiles[$user->user_id]->user_active = $user->user_active;
$all_users_profiles[$user->user_id]->user_deleted = $user->user_deleted;
$all_users_profiles[$user->user_id]->user_avatar_link = (Config::get('USE_GRAVATAR') ? AvatarModel::getGravatarLinkByEmail($user->user_email) : AvatarModel::getPublicAvatarFilePathOfUser($user->user_has_avatar, $user->user_id));
$all_users_profiles[$user->user_id]->user_account_type = $user->user_account_type;
}
return $all_users_profiles;
}
/**
* Gets list of users including their group name via user_groups lookup.
* @return array
*/
public static function getUsersWithGroups()
{
$database = DatabaseFactory::getFactory()->getConnection();
$sql = "SELECT u.user_id, u.user_name, u.user_email, u.user_active, u.user_has_avatar, u.user_deleted, u.user_account_type,
g.group_name
FROM users u
LEFT JOIN user_groups g ON g.group_id = u.user_account_type";
$query = $database->prepare($sql);
$query->execute();
$result = [];
foreach ($query->fetchAll() as $user) {
array_walk_recursive($user, 'Filter::XSSFilter');
$obj = new stdClass();
$obj->user_id = $user->user_id;
$obj->user_name = $user->user_name;
$obj->user_email = $user->user_email;
$obj->user_active = $user->user_active;
$obj->user_deleted = $user->user_deleted;
$obj->user_account_type = $user->user_account_type;
$obj->group_name = $user->group_name;
$obj->user_avatar_link = (Config::get('USE_GRAVATAR') ? AvatarModel::getGravatarLinkByEmail($user->user_email) : AvatarModel::getPublicAvatarFilePathOfUser($user->user_has_avatar, $user->user_id));
$result[] = $obj;
}
return $result;
}
/**
* Gets a user's profile data, according to the given $user_id
* @param int $user_id The user's id