/** * @param TopicImportState $state * @param IImportPost $post * @param PostRevision $replyTo * @param string $logPrefix */ public function importPost(TopicImportState $state, IImportPost $post, PostRevision $replyTo, $logPrefix = ' ') { $state->parent->logger->info($logPrefix . "Importing post"); $postId = $state->parent->getImportedId($post); $topRevision = false; if ($postId) { $topRevision = $state->parent->getTopRevision('PostRevision', $postId); } if ($topRevision) { $state->parent->logger->info($logPrefix . "Post previously imported"); } else { $replyRevisions = $this->importObjectWithHistory($post, function (IObjectRevision $rev) use($replyTo, $state) { return $replyTo->reply($state->topicWorkflow, $state->parent->createUser($rev->getAuthor()), $rev->getText(), 'wikitext'); }, 'edit-post', $state->parent, $state->topicWorkflow->getArticleTitle()); $topRevision = end($replyRevisions); $metadata = array('workflow' => $state->topicWorkflow, 'board-workflow' => $state->parent->boardWorkflow, 'topic-title' => $state->topicTitle, 'reply-to' => $replyTo); $state->parent->put($replyRevisions, $metadata); $state->parent->recordAssociation($topRevision->getPostId(), $post); $state->parent->logger->info($logPrefix . "Finished importing post with " . count($replyRevisions) . " revisions"); $state->parent->postprocessor->afterPostImported($state, $post, $topRevision->getPostId()); } $state->recordModificationTime($topRevision->getRevisionId()); foreach ($post->getReplies() as $subReply) { $this->importPost($state, $subReply, $topRevision, $logPrefix . ' '); } }