Fixed chat ban loading.
This commit is contained in:
parent
42fc65abbc
commit
90ab9a280b
2 changed files with 25 additions and 8 deletions
|
@ -16,6 +16,7 @@ use Misuzu\Users\UserChatTokenNotFoundException;
|
|||
use Misuzu\Users\UserChatTokenCreationFailedException;
|
||||
use Misuzu\Users\UserSession;
|
||||
use Misuzu\Users\UserSessionNotFoundException;
|
||||
use Misuzu\Users\UserWarning;
|
||||
|
||||
final class SockChatHandler extends Handler {
|
||||
private string $hashKey = 'woomy';
|
||||
|
@ -124,14 +125,22 @@ final class SockChatHandler extends Handler {
|
|||
if(!hash_equals($realHash, $userHash))
|
||||
return [];
|
||||
|
||||
return DB::prepare('
|
||||
SELECT uw.`user_id` AS `id`, DATE_FORMAT(uw.`warning_duration`, \'%Y-%m-%dT%TZ\') AS `expires`, INET6_NTOA(uw.`user_ip`) AS `ip`, u.`username`
|
||||
FROM `msz_user_warnings` AS uw
|
||||
LEFT JOIN `msz_users` AS u
|
||||
ON u.`user_id` = uw.`user_id`
|
||||
WHERE uw.`warning_type` = 3
|
||||
AND uw.`warning_duration` > NOW()
|
||||
')->fetchAll();
|
||||
$warnings = UserWarning::byActive();
|
||||
$bans = [];
|
||||
|
||||
foreach($warnings as $warning) {
|
||||
if(!$warning->isBan() || $warning->hasExpired())
|
||||
continue;
|
||||
|
||||
$bans[] = [
|
||||
'id' => $warning->getUser()->getId(),
|
||||
'expires' => date('c', $warning->isPermanent() ? 0x7FFFFFFF : $warning->getExpirationTime()),
|
||||
'ip' => $warning->getUserRemoteAddress(),
|
||||
'username' => $warning->getUser()->getUsername()
|
||||
];
|
||||
}
|
||||
|
||||
return $bans;
|
||||
}
|
||||
|
||||
public function login(HttpResponse $response, HttpRequest $request) {
|
||||
|
|
|
@ -259,6 +259,14 @@ class UserWarning {
|
|||
|
||||
return $getObjects->fetchObjects(self::class);
|
||||
}
|
||||
public static function byActive(): array {
|
||||
return DB::prepare(
|
||||
self::byQueryBase()
|
||||
. ' WHERE `warning_type` IN (' . implode(',', self::HAS_DURATION) . ')'
|
||||
. ' AND (`warning_duration` IS NULL OR `warning_duration` >= NOW())'
|
||||
. ' ORDER BY `warning_type` DESC, `warning_duration` DESC'
|
||||
)->fetchObjects(self::class);
|
||||
}
|
||||
public static function all(?User $user = null, ?Pagination $pagination = null): array {
|
||||
$query = self::byQueryBase()
|
||||
. ($user === null ? '' : ' WHERE `user_id` = :user')
|
||||
|
|
Loading…
Reference in a new issue