'array' ]; protected $dates = [ 'created_at', 'updated_at', 'deleted_at', 'banend' ]; public function uploads() { return $this->hasMany(Video::class); } public function videos() { return $this->uploads(); } public function comments() { return $this->hasMany(Comment::class); } public function moderator_log() { return $this->hasMany(ModeratorLog::class); } public function messagesSent() { return $this->hasMany(Message::class, 'from'); } public function messagesRecv() { return $this->hasMany(Message::class, 'to'); } public function favs() { return $this->belongsToMany(Video::class, 'favorites'); } public function hasFaved($id) { return ! $this->favs->filter(function($vid) use ($id) { return $vid->id == $id; })->isEmpty(); } public function icon() { return $this->belongsTo(Icon::class, 'icon_id'); } public function activeIcon() { $icon = $this->icon; if($icon === null) { $roles = $this->roles; $roles = $roles->sortByDesc('level'); foreach($roles as $role) { if($role !== null) $icon = $role->icon; } } return $icon; } public function isOnline() { return Cache::has('user-is-online-' . $this->id); } public function isBanned() { if($this->disabled == 1) { return $this->banend->eq(Carbon::createFromTimeStampUTC(1)) || $this->banend->gt(Carbon::now()); } return false; } public function getForeignKey() { return 'user_id'; } public function baseurl() { return 'user/' . $this->username . '/uploads'; } public function displayName() { return e($this->username) . ($this->activeIcon() ? " " . $this->activeIcon() : ""); } }