Migrate to new event organization
[GitHub/WoltLab/com.woltlab.wcf.conversation.git] / files / lib / system / importer / ConversationImporter.class.php
1 <?php
2
3 namespace wcf\system\importer;
4
5 use wcf\data\conversation\Conversation;
6 use wcf\data\conversation\ConversationEditor;
7
8 /**
9 * Imports conversations.
10 *
11 * @author Marcel Werk
12 * @copyright 2001-2019 WoltLab GmbH
13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
14 */
15 class ConversationImporter extends AbstractImporter
16 {
17 /**
18 * @inheritDoc
19 */
20 protected $className = Conversation::class;
21
22 /**
23 * @inheritDoc
24 */
25 public function import($oldID, array $data, array $additionalData = [])
26 {
27 $oldUserID = $data['userID'];
28 $data['userID'] = ImportHandler::getInstance()->getNewID('com.woltlab.wcf.user', $data['userID']);
29
30 // check existing conversation
31 if (\ctype_digit((string)$oldID)) {
32 $existingConversation = new Conversation($oldID);
33 if (!$existingConversation->conversationID) {
34 $data['conversationID'] = $oldID;
35 }
36 }
37
38 $conversation = ConversationEditor::create($data);
39
40 ImportHandler::getInstance()->saveNewID('com.woltlab.wcf.conversation', $oldID, $conversation->conversationID);
41
42 // add author
43 if (empty($data['isDraft'])) {
44 ImportHandler::getInstance()->getImporter('com.woltlab.wcf.conversation.user')->import(0, [
45 'conversationID' => $oldID,
46 'participantID' => $oldUserID,
47 'username' => $data['username'],
48 'hideConversation' => 0,
49 'isInvisible' => 0,
50 'lastVisitTime' => $data['time'],
51 ], ['labelIDs' => []]);
52 }
53
54 return $conversation->conversationID;
55 }
56 }