Skip to content

Commit e213f16

Browse files
committed
isMultilingual is not stored directly in the database and must therefore be recognized.
1 parent ea91e7b commit e213f16

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

wcfsetup/install/files/lib/acp/form/UserRankAddForm.class.php

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use wcf\system\form\builder\container\MultilingualFormContainer;
1212
use wcf\system\form\builder\data\processor\CustomFormDataProcessor;
1313
use wcf\system\form\builder\data\processor\MultilingualFormDataProcessor;
14+
use wcf\system\form\builder\data\processor\VoidFormDataProcessor;
1415
use wcf\system\form\builder\field\BadgeColorFormField;
1516
use wcf\system\form\builder\field\BooleanFormField;
1617
use wcf\system\form\builder\field\dependency\EmptyFormFieldDependency;
@@ -20,6 +21,7 @@
2021
use wcf\system\form\builder\field\TitleFormField;
2122
use wcf\system\form\builder\field\UploadFormField;
2223
use wcf\system\form\builder\IFormDocument;
24+
use wcf\system\language\LanguageFactory;
2325
use wcf\system\WCF;
2426

2527
/**
@@ -150,23 +152,34 @@ public function processObjectData(IFormDocument $document, array $data, IStorabl
150152
{
151153
\assert($object instanceof UserRank);
152154

153-
$sql = "SELECT content.title, language.languageCode
154-
FROM wcf1_user_rank_content content
155-
LEFT JOIN wcf1_language language
156-
ON language.languageID = content.languageID
157-
WHERE content.rankID = ?";
155+
$sql = "SELECT title, languageID
156+
FROM wcf1_user_rank_content
157+
WHERE rankID = ?";
158158
$statement = WCF::getDB()->prepare($sql);
159159
$statement->execute([$object->rankID]);
160160

161-
while ($row = $statement->fetchArray()) {
162-
$key = "title" . ($row['languageCode'] ? "_{$row['languageCode']}" : "");
163-
$data[$key] = $row['title'];
161+
$titles = $statement->fetchMap('languageID', 'title');
162+
163+
foreach ($titles as $languageID => $title) {
164+
$languageCode = LanguageFactory::getInstance()->getLanguage($languageID)->languageCode;
165+
166+
$data["title_{$languageCode}"] = $title;
167+
}
168+
169+
if (\count($titles) > 1) {
170+
$data['isMultilingual'] = true;
171+
} else {
172+
$data['isMultilingual'] = false;
173+
if ($titles !== []) {
174+
$data["title"] = \reset($titles);
175+
}
164176
}
165177

166178
return $data;
167179
}
168180
}
169181
)
182+
->addProcessor(new VoidFormDataProcessor('isMultilingual'))
170183
->addProcessor(
171184
new CustomFormDataProcessor(
172185
'requiredGenderProcessor',

0 commit comments

Comments
 (0)