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