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; }