private function _isUnread()
 {
     if (Auth::guest()) {
         return false;
     }
     $markAsReadAfter = value(Config::get('forums::forums.mark_as_read_after'));
     if (!IoC::registered('topicsview')) {
         IoC::singleton('topicsview', function () use($markAsReadAfter) {
             return Forumview::where('updated_at', '>=', date('Y-m-d H:i:s', $markAsReadAfter))->where('user_id', '=', Auth::user()->id)->lists('topic_id');
         });
     }
     $tv = IoC::resolve('topicsview');
     $nb = count($tv);
     $view = Forumtopic::where('forumcategory_id', '=', $this->id)->where('updated_at', '>=', date('Y-m-d H:i:s', $markAsReadAfter));
     if ($nb > 0) {
         $view = $view->where_not_in('id', $tv);
     }
     $view = $view->count();
     if ($nb == 0 && $view > 0) {
         return true;
     }
     if ($view > 0) {
         return true;
     }
     return false;
 }
 public function save()
 {
     $isNew = !$this->exists;
     if ($isNew) {
         $this->category->nb_posts++;
         $this->category->save();
         $this->topic->nb_messages++;
         Auth::user()->nb_messages++;
         Auth::user()->save();
         $this->user_id = Auth::user()->id;
     }
     parent::save();
     $this->topic->updated_at = $this->updated_at;
     $this->topic->save();
     Forumview::where('topic_id', '=', $this->forumtopic_id)->delete();
     return $this;
 }
 public function _isUnread()
 {
     if (Auth::guest()) {
         return false;
     }
     $markAsReadAfter = value(Config::get('forums::forums.mark_as_read_after'));
     // is the topic > delay, then return false;
     if (strtotime($this->updated_at) < $markAsReadAfter) {
         return false;
     }
     if (!IoC::registered('topicsview')) {
         IoC::singleton('topicsview', function () use($markAsReadAfter) {
             return Forumview::where('updated_at', '>=', date('Y-m-d H:i:s', $markAsReadAfter))->where('user_id', '=', Auth::user()->id)->lists('topic_id');
         });
     }
     if (array_search($this->id, IoC::resolve('topicsview')) !== false) {
         return false;
     }
     return true;
 }