Merge branch '2.0'
[GitHub/WoltLab/com.woltlab.wcf.conversation.git] / files / lib / system / event / listener / ConversationUserMergeListener.class.php
1 <?php
2 namespace wcf\system\event\listener;
3 use wcf\system\database\util\PreparedStatementConditionBuilder;
4 use wcf\system\WCF;
5
6 /**
7 * Merges user conversations.
8 *
9 * @author Marcel Werk
10 * @copyright 2001-2014 WoltLab GmbH
11 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
12 * @package com.woltlab.wcf.conversation
13 * @subpackage system.event.listener
14 * @category Community Framework
15 */
16 class ConversationUserMergeListener implements IParameterizedEventListener {
17 /**
18 * @see \wcf\system\event\listener\IParameterizedEventListener::execute()
19 */
20 public function execute($eventObj, $className, $eventName, array &$parameters) {
21 // conversation
22 $conditions = new PreparedStatementConditionBuilder();
23 $conditions->add("userID IN (?)", array($eventObj->mergedUserIDs));
24 $sql = "UPDATE wcf".WCF_N."_conversation
25 SET userID = ?
26 ".$conditions;
27 $statement = WCF::getDB()->prepareStatement($sql);
28 $statement->execute(array_merge(array($eventObj->destinationUserID), $conditions->getParameters()));
29
30 // conversation_to_user
31 $conditions = new PreparedStatementConditionBuilder();
32 $conditions->add("participantID IN (?)", array($eventObj->mergedUserIDs));
33 $sql = "UPDATE IGNORE wcf".WCF_N."_conversation_to_user
34 SET participantID = ?
35 ".$conditions;
36 $statement = WCF::getDB()->prepareStatement($sql);
37 $statement->execute(array_merge(array($eventObj->destinationUserID), $conditions->getParameters()));
38
39 // conversation_message
40 $conditions = new PreparedStatementConditionBuilder();
41 $conditions->add("userID IN (?)", array($eventObj->mergedUserIDs));
42 $sql = "UPDATE wcf".WCF_N."_conversation_message
43 SET userID = ?
44 ".$conditions;
45 $statement = WCF::getDB()->prepareStatement($sql);
46 $statement->execute(array_merge(array($eventObj->destinationUserID), $conditions->getParameters()));
47
48 // conversation_label
49 $conditions = new PreparedStatementConditionBuilder();
50 $conditions->add("userID IN (?)", array($eventObj->mergedUserIDs));
51 $sql = "UPDATE wcf".WCF_N."_conversation_label
52 SET userID = ?
53 ".$conditions;
54 $statement = WCF::getDB()->prepareStatement($sql);
55 $statement->execute(array_merge(array($eventObj->destinationUserID), $conditions->getParameters()));
56 }
57 }