|
11 | 11 | use wcf\system\form\builder\container\MultilingualFormContainer; |
12 | 12 | use wcf\system\form\builder\data\processor\CustomFormDataProcessor; |
13 | 13 | use wcf\system\form\builder\data\processor\MultilingualFormDataProcessor; |
| 14 | +use wcf\system\form\builder\data\processor\VoidFormDataProcessor; |
14 | 15 | use wcf\system\form\builder\field\BadgeColorFormField; |
15 | 16 | use wcf\system\form\builder\field\BooleanFormField; |
16 | 17 | use wcf\system\form\builder\field\dependency\EmptyFormFieldDependency; |
|
20 | 21 | use wcf\system\form\builder\field\TitleFormField; |
21 | 22 | use wcf\system\form\builder\field\UploadFormField; |
22 | 23 | use wcf\system\form\builder\IFormDocument; |
| 24 | +use wcf\system\language\LanguageFactory; |
23 | 25 | use wcf\system\WCF; |
24 | 26 |
|
25 | 27 | /** |
@@ -150,23 +152,34 @@ public function processObjectData(IFormDocument $document, array $data, IStorabl |
150 | 152 | { |
151 | 153 | \assert($object instanceof UserRank); |
152 | 154 |
|
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 = ?"; |
158 | 158 | $statement = WCF::getDB()->prepare($sql); |
159 | 159 | $statement->execute([$object->rankID]); |
160 | 160 |
|
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 | + } |
164 | 176 | } |
165 | 177 |
|
166 | 178 | return $data; |
167 | 179 | } |
168 | 180 | } |
169 | 181 | ) |
| 182 | + ->addProcessor(new VoidFormDataProcessor('isMultilingual')) |
170 | 183 | ->addProcessor( |
171 | 184 | new CustomFormDataProcessor( |
172 | 185 | 'requiredGenderProcessor', |
|
0 commit comments