e9df0680e835309501b2baaa7a73757fd0e546bd
[GitHub/WoltLab/com.woltlab.wcf.conversation.git] / files / lib / system / importer / ConversationUserImporter.class.php
1 <?php
2 namespace wcf\system\importer;
3 use wcf\system\WCF;
4
5 /**
6 * Imports conversation users.
7 *
8 * @author Marcel Werk
9 * @copyright 2001-2016 WoltLab GmbH
10 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
11 * @package com.woltlab.wcf.conversation
12 * @subpackage system.importer
13 * @category Community Framework
14 */
15 class ConversationUserImporter extends AbstractImporter {
16 /**
17 * @inheritDoc
18 */
19 public function import($oldID, array $data, array $additionalData = []) {
20 $data['conversationID'] = ImportHandler::getInstance()->getNewID('com.woltlab.wcf.conversation', $data['conversationID']);
21 if (!$data['conversationID']) return 0;
22 $data['participantID'] = ImportHandler::getInstance()->getNewID('com.woltlab.wcf.user', $data['participantID']);
23
24 $sql = "INSERT INTO wcf".WCF_N."_conversation_to_user
25 (conversationID, participantID, username, hideConversation, isInvisible, lastVisitTime)
26 VALUES (?, ?, ?, ?, ?, ?)
27 ON DUPLICATE KEY UPDATE hideConversation = IF(hideConversation > 0 AND hideConversation = VALUES(hideConversation),hideConversation,0),
28 isInvisible = IF(isInvisible AND VALUES(isInvisible),1,0),
29 lastVisitTime = GREATEST(lastVisitTime,VALUES(lastVisitTime))";
30 $statement = WCF::getDB()->prepareStatement($sql);
31 $statement->execute([
32 $data['conversationID'],
33 $data['participantID'],
34 $data['username'],
35 $data['hideConversation'],
36 $data['isInvisible'],
37 $data['lastVisitTime']
38 ]);
39
40 // save labels
41 if ($data['participantID'] && !empty($additionalData['labelIDs'])) {
42 $sql = "INSERT IGNORE INTO wcf".WCF_N."_conversation_label_to_object
43 (labelID, conversationID)
44 VALUES (?, ?)";
45 $statement = WCF::getDB()->prepareStatement($sql);
46 foreach ($additionalData['labelIDs'] as $labelID) {
47 $labelID = ImportHandler::getInstance()->getNewID('com.woltlab.wcf.conversation.label', $labelID);
48 if ($labelID) $statement->execute([$labelID, $data['conversationID']]);
49 }
50 }
51
52 return 1;
53 }
54 }