summaryrefslogtreecommitdiff
path: root/app/Services/UserService.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Services/UserService.php')
-rw-r--r--app/Services/UserService.php60
1 files changed, 37 insertions, 23 deletions
diff --git a/app/Services/UserService.php b/app/Services/UserService.php
index 97a976c614..0f2238aee4 100644
--- a/app/Services/UserService.php
+++ b/app/Services/UserService.php
@@ -29,6 +29,8 @@ use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
use Illuminate\Database\Capsule\Manager as DB;
+use Illuminate\Database\Query\Builder;
+use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
use Psr\Http\Message\ServerRequestInterface;
@@ -105,7 +107,7 @@ class UserService
->join('user_gedcom_setting', 'user_gedcom_setting.user_id', '=', 'user.user_id')
->where('gedcom_id', '=', $individual->tree()->id())
->where('setting_value', '=', $individual->xref())
- ->where('setting_name', '=', 'gedcomid')
+ ->where('setting_name', '=', User::PREF_TREE_ACCOUNT_XREF)
->select(['user.*'])
->get()
->map(User::rowMapper());
@@ -156,11 +158,11 @@ class UserService
*/
public function sortByLastLogin(): Closure
{
- return function (UserInterface $user1, UserInterface $user2) {
- $registered_at1 = (int) $user1->getPreference('reg_timestamp');
- $logged_in_at1 = (int) $user1->getPreference('sessiontime');
- $registered_at2 = (int) $user2->getPreference('reg_timestamp');
- $logged_in_at2 = (int) $user2->getPreference('sessiontime');
+ return static function (UserInterface $user1, UserInterface $user2) {
+ $registered_at1 = (int) $user1->getPreference(User::PREF_TIMESTAMP_REGISTERED);
+ $logged_in_at1 = (int) $user1->getPreference(User::PREF_TIMESTAMP_ACTIVE);
+ $registered_at2 = (int) $user2->getPreference(User::PREF_TIMESTAMP_REGISTERED);
+ $logged_in_at2 = (int) $user2->getPreference(User::PREF_TIMESTAMP_ACTIVE);
return max($registered_at1, $logged_in_at1) <=> max($registered_at2, $logged_in_at2);
};
@@ -175,9 +177,9 @@ class UserService
*/
public function filterInactive(int $timestamp): Closure
{
- return function (UserInterface $user) use ($timestamp): bool {
- $registered_at = (int) $user->getPreference('reg_timestamp');
- $logged_in_at = (int) $user->getPreference('sessiontime');
+ return static function (UserInterface $user) use ($timestamp): bool {
+ $registered_at = (int) $user->getPreference(User::PREF_TIMESTAMP_REGISTERED);
+ $logged_in_at = (int) $user->getPreference(User::PREF_TIMESTAMP_ACTIVE);
return max($registered_at, $logged_in_at) < $timestamp;
};
@@ -206,7 +208,7 @@ class UserService
{
return DB::table('user')
->join('user_setting', 'user_setting.user_id', '=', 'user.user_id')
- ->where('user_setting.setting_name', '=', 'canadmin')
+ ->where('user_setting.setting_name', '=', User::PREF_IS_ADMINISTRATOR)
->where('user_setting.setting_value', '=', '1')
->where('user.user_id', '>', 0)
->orderBy('real_name')
@@ -224,8 +226,8 @@ class UserService
{
return DB::table('user')
->join('user_gedcom_setting', 'user_gedcom_setting.user_id', '=', 'user.user_id')
- ->where('user_gedcom_setting.setting_name', '=', 'canedit')
- ->where('user_gedcom_setting.setting_value', '=', 'admin')
+ ->where('user_gedcom_setting.setting_name', '=', User::PREF_TREE_ROLE)
+ ->where('user_gedcom_setting.setting_value', '=', User::ROLE_MANAGER)
->where('user.user_id', '>', 0)
->groupBy(['user.user_id'])
->orderBy('real_name')
@@ -243,8 +245,8 @@ class UserService
{
return DB::table('user')
->join('user_gedcom_setting', 'user_gedcom_setting.user_id', '=', 'user.user_id')
- ->where('user_gedcom_setting.setting_name', '=', 'canedit')
- ->where('user_gedcom_setting.setting_value', '=', 'accept')
+ ->where('user_gedcom_setting.setting_name', '=', User::PREF_TREE_ROLE)
+ ->where('user_gedcom_setting.setting_value', '=', User::ROLE_MODERATOR)
->where('user.user_id', '>', 0)
->groupBy(['user.user_id'])
->orderBy('real_name')
@@ -261,12 +263,18 @@ class UserService
public function unapproved(): Collection
{
return DB::table('user')
- ->join('user_setting', 'user_setting.user_id', '=', 'user.user_id')
- ->where('user_setting.setting_name', '=', 'verified_by_admin')
- ->where('user_setting.setting_value', '<>', '1')
+ ->leftJoin('user_setting', static function (JoinClause $join): void {
+ $join
+ ->on('user_setting.user_id', '=', 'user.user_id')
+ ->where('user_setting.setting_name', '=', User::PREF_IS_ACCOUNT_APPROVED);
+ })
+ ->where(static function (Builder $query): void {
+ $query
+ ->where('user_setting.setting_value', '<>', '1')
+ ->orWhereNull('user_setting.setting_value');
+ })
->where('user.user_id', '>', 0)
->orderBy('real_name')
- ->select(['user.*'])
->get()
->map(User::rowMapper());
}
@@ -279,12 +287,18 @@ class UserService
public function unverified(): Collection
{
return DB::table('user')
- ->join('user_setting', 'user_setting.user_id', '=', 'user.user_id')
- ->where('user_setting.setting_name', '=', 'verified')
- ->where('user_setting.setting_value', '<>', '1')
+ ->leftJoin('user_setting', static function (JoinClause $join): void {
+ $join
+ ->on('user_setting.user_id', '=', 'user.user_id')
+ ->where('user_setting.setting_name', '=', User::PREF_IS_EMAIL_VERIFIED);
+ })
+ ->where(static function (Builder $query): void {
+ $query
+ ->where('user_setting.setting_value', '<>', '1')
+ ->orWhereNull('user_setting.setting_value');
+ })
->where('user.user_id', '>', 0)
->orderBy('real_name')
- ->select(['user.*'])
->get()
->map(User::rowMapper());
}
@@ -382,7 +396,7 @@ class UserService
$user = $request->getAttribute('user');
- if ($contact_user->getPreference('contactmethod') === 'mailto') {
+ if ($contact_user->getPreference(User::PREF_CONTACT_METHOD) === 'mailto') {
$url = 'mailto:' . $contact_user->email();
} elseif ($user instanceof User) {
// Logged-in users send direct messages