App\Models\Forum\Topic::moveTo PHP Method

moveTo() public method

public moveTo ( $destinationForum )
    public function moveTo($destinationForum)
    {
        if ($this->forum_id === $destinationForum->forum_id) {
            return true;
        }
        if (!$this->forum->isOpen()) {
            return false;
        }
        return DB::transaction(function () use($destinationForum) {
            $originForum = $this->forum;
            $this->forum()->associate($destinationForum);
            $this->save();
            $this->posts()->update(['forum_id' => $destinationForum->forum_id]);
            $this->logs()->update(['forum_id' => $destinationForum->forum_id]);
            $this->userTracks()->update(['forum_id' => $destinationForum->forum_id]);
            if ($originForum !== null) {
                $originForum->refreshCache();
            }
            if ($this->forum !== null) {
                $this->forum->refreshCache();
            }
            $users = User::whereIn('user_id', model_pluck($this->posts(), 'poster_id'))->get();
            foreach ($users as $user) {
                $user->refreshForumCache();
            }
            Log::logModerateForumTopicMove($this, $originForum);
            return true;
        });
    }