X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FModels%2FChannel.php;h=46155cda710d1c5d0de970a692d84a8fce889924;hb=ebdf8e5f6761de2abd85b01096a67dee62d7d4aa;hp=bf3b98bc2b231c384a3079613e551514a7435c02;hpb=7649d12f400f164dd06f6a45486221234052dbb6;p=alttp.git diff --git a/app/Models/Channel.php b/app/Models/Channel.php index bf3b98b..46155cd 100644 --- a/app/Models/Channel.php +++ b/app/Models/Channel.php @@ -31,9 +31,45 @@ class Channel extends Model { ->first(); } + public function randomOfClass($class) { + return $this->queryChatlog() + ->where('classification', '=', $class) + ->first(); + } + + public function queryChatlog() { + return ChatLog::where('type', '=', 'chat') + ->where('banned', '=', false) + ->where('created_at', '<', now()->sub(1, 'day')) + ->where(function ($query) { + $query->whereNull('detected_language'); + $query->orWhereIn('detected_language', $this->getPreferredLanguages()); + }) + ->inRandomOrder(); + } + + public function getPreferredLanguages() { + $setting = $this->getChatSetting('language'); + if ($setting) { + return [$setting]; + } + if (!empty($this->languages)) { + return $this->languages; + } + return ['de']; + } + + public function getChatSetting($name, $default = null) { + if (array_key_exists($name, $this->chat_settings)) { + return $this->chat_settings[$name]; + } + return $default; + } + public function getGuessingLeaderboard() { $query = $this->winners() ->selectRaw('(select t2.uname from guessing_winners t2 where t2.uid = guessing_winners.uid order by created_at desc limit 1) as name, sum(score) as score') + ->where('score', '!=', 0) ->groupBy('uid') ->orderBy('score', 'desc') ->limit(10);