-
Notifications
You must be signed in to change notification settings - Fork 148
Expand file tree
/
Copy pathupdate_com.woltlab.wcf_6.3_userGroupAssignment.php
More file actions
59 lines (53 loc) · 2.26 KB
/
update_com.woltlab.wcf_6.3_userGroupAssignment.php
File metadata and controls
59 lines (53 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
use wcf\system\condition\ConditionHandler;
use wcf\system\WCF;
use wcf\util\JSON;
$exportedConditions = ConditionHandler::getInstance()->exportConditions("com.woltlab.wcf.condition.userGroupAssignment");
if ($exportedConditions === []) {
return;
}
$sql = "UPDATE wcf1_user_group_assignment
SET conditions = ?,
isLegacy = ?
WHERE assignmentID = ?";
$statement = WCF::getDB()->prepare($sql);
foreach ($exportedConditions as $assignmentID => $conditionData) {
renameObjectTypes($conditionData);
$statement->execute([
JSON::encode($conditionData),
1,
$assignmentID,
]);
}
/**
* Rename the object types so that the migration functions can handle them.
* @see \wcf\system\condition\provider\UserConditionProvider
*
* @param array<string, mixed> $conditionData
*/
function renameObjectTypes(array &$conditionData): void
{
$objectTypeMap = [
'com.woltlab.wcf.username' => 'com.woltlab.wcf.user.username',
'com.woltlab.wcf.email' => 'com.woltlab.wcf.user.email',
'com.woltlab.wcf.userGroup' => 'com.woltlab.wcf.user.userGroup',
'com.woltlab.wcf.languages' => 'com.woltlab.wcf.user.languages',
'com.woltlab.wcf.registrationDate' => 'com.woltlab.wcf.user.registrationDate',
'com.woltlab.wcf.registrationDateInterval' => 'com.woltlab.wcf.user.registrationDateInterval',
'com.woltlab.wcf.avatar' => 'com.woltlab.wcf.user.avatar',
'com.woltlab.wcf.signature' => 'com.woltlab.wcf.user.signature',
'com.woltlab.wcf.coverPhoto' => 'com.woltlab.wcf.user.coverPhoto',
'com.woltlab.wcf.state' => 'com.woltlab.wcf.user.state',
'com.woltlab.wcf.activityPoints' => 'com.woltlab.wcf.user.activityPoints',
'com.woltlab.wcf.likesReceived' => 'com.woltlab.wcf.user.likesReceived',
// TODO 'com.woltlab.wcf.userOptions'
'com.woltlab.wcf.userTrophyCondition' => 'com.woltlab.wcf.user.trophyCondition',
'com.woltlab.wcf.trophyPoints' => 'com.woltlab.wcf.user.trophyPoints',
];
foreach ($objectTypeMap as $currentName => $newName) {
if (isset($conditionData[$currentName])) {
$conditionData[$newName] = $conditionData[$currentName];
unset($conditionData[$currentName]);
}
}
}