Ejemplo n.º 1
0
 protected function importDiscussions($from, $to)
 {
     $this->info('Importing discussions...');
     $to->table('discussions')->truncate();
     $to->table('discussions_tags')->truncate();
     $to->table('posts')->truncate();
     $to->table('notifications')->truncate();
     $to->table('users_discussions')->truncate();
     $to->table('activity')->truncate();
     $to->table('mentions_posts')->truncate();
     $to->table('mentions_users')->truncate();
     $conversations = $from->table('conversation')->where('private', 0)->get();
     $progress = new ProgressBar($this->output, count($conversations));
     foreach ($conversations as $c) {
         $discussion = new Discussion();
         $discussion->id = $c->conversationId;
         $discussion->title = $c->title;
         $discussion->is_sticky = $c->sticky;
         $discussion->start_user_id = $c->startMemberId;
         $discussion->start_time = $c->startTime;
         $discussion->last_user_id = $c->lastPostMemberId;
         $discussion->last_time = $c->lastPostTime;
         $discussion->save();
         $discussion->tags()->sync([$c->channelId]);
         foreach ($from->table('post')->where('conversationId', $c->conversationId)->get() as $p) {
             $post = new CommentPost();
             $post->id = $p->postId;
             $post->discussion_id = $p->conversationId;
             $post->user_id = $p->memberId;
             $post->time = $p->time;
             $post->edit_user_id = $p->editMemberId;
             $post->edit_time = $p->editTime;
             $post->hide_user_id = $p->deleteMemberId;
             $post->hide_time = $p->deleteTime;
             $post->content = $p->content;
             $this->formatPost($post);
             $post->save();
             if (!$post->hide_time) {
                 event(new PostWasPosted($post));
             }
         }
         $discussion->last_post_id = $p->postId;
         $discussion->last_post_number = $post->number;
         $discussion->comments_count = $post->number;
         $discussion->save();
         $states = $from->table('member_conversation')->where('conversationId', $c->conversationId)->where('type', 'member')->get();
         foreach ($states as $s) {
             $state = new DiscussionState();
             $state->discussion_id = $s->conversationId;
             $state->user_id = $s->id;
             $state->read_time = time();
             $state->read_number = $discussion->posts()->orderBy('time', 'asc')->skip(min($discussion->comments_count, $s->lastRead) - 1)->pluck('number');
             $state->save();
         }
         $progress->advance();
     }
     $progress->finish();
     $this->info("\n");
 }