From 1dc61f74ee1d4079633ec9e67add7bca19f9d793 Mon Sep 17 00:00:00 2001 From: Matthias Schmidt Date: Mon, 14 Jun 2021 07:16:40 +0200 Subject: [PATCH] Update language PIP GUI to new file structure --- ...TXmlGuiPackageInstallationPlugin.class.php | 5 ++-- ...anguagePackageInstallationPlugin.class.php | 25 ++++++++++--------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/wcfsetup/install/files/lib/system/devtools/pip/TXmlGuiPackageInstallationPlugin.class.php b/wcfsetup/install/files/lib/system/devtools/pip/TXmlGuiPackageInstallationPlugin.class.php index 2542e7229c..9ed0952041 100644 --- a/wcfsetup/install/files/lib/system/devtools/pip/TXmlGuiPackageInstallationPlugin.class.php +++ b/wcfsetup/install/files/lib/system/devtools/pip/TXmlGuiPackageInstallationPlugin.class.php @@ -54,12 +54,11 @@ trait TXmlGuiPackageInstallationPlugin { $document = $element->ownerDocument; - $data = $document->getElementsByTagName('data')->item(0); - $delete = $data->getElementsByTagName('delete')->item(0); + $delete = $document->documentElement->getElementsByTagName('delete')->item(0); if ($delete === null) { $delete = $document->createElement('delete'); - $data->appendChild($delete); + $document->documentElement->appendChild($delete); } $delete->appendChild($document->importNode($this->prepareDeleteXmlElement($element))); diff --git a/wcfsetup/install/files/lib/system/package/plugin/LanguagePackageInstallationPlugin.class.php b/wcfsetup/install/files/lib/system/package/plugin/LanguagePackageInstallationPlugin.class.php index 6b2bd45347..3870da6b82 100644 --- a/wcfsetup/install/files/lib/system/package/plugin/LanguagePackageInstallationPlugin.class.php +++ b/wcfsetup/install/files/lib/system/package/plugin/LanguagePackageInstallationPlugin.class.php @@ -628,7 +628,7 @@ class LanguagePackageInstallationPlugin extends AbstractXMLPackageInstallationPl */ protected function getImportElements(\DOMXPath $xpath) { - return $xpath->query('/ns:language/ns:category/ns:item'); + return $xpath->query('/ns:language/ns:import/ns:category/ns:item'); } /** @@ -720,6 +720,9 @@ XML; ]); $existingRow = $statement->fetchArray(); + if (!$existingRow) { + $existingRow = []; + } } if (!isset($newElementData['languageCategoryID']) && isset($newElementData['languageCategory'])) { @@ -817,8 +820,15 @@ XML; throw new \LogicException("Unknown language category mode '{$data['languageCategoryIDMode']}'."); } + /** @var \DOMElement $import */ + $import = $document->getElementsByTagName('import')->item(0); + if ($import === null) { + $import = $document->createElement('import'); + DOMUtil::prepend($import, $document->documentElement); + } + /** @var \DOMElement $languageCategory */ - foreach ($document->documentElement->childNodes as $languageCategory) { + foreach ($import->getElementsByTagName('category') as $languageCategory) { if ($languageCategory instanceof \DOMElement && $languageCategory->getAttribute('name') === $languageCategoryName) { $languageCategory->appendChild($languageItem); break; @@ -830,7 +840,7 @@ XML; $languageCategory->setAttribute('name', $languageCategoryName); $languageCategory->appendChild($languageItem); - $document->documentElement->appendChild($languageCategory); + $import->appendChild($languageCategory); } return $languageItem; @@ -882,15 +892,6 @@ XML; ]); } - /** - * @inheritDoc - * @since 5.2 - */ - public function supportsDeleteInstruction() - { - return false; - } - /** * @inheritDoc * @since 5.2 -- 2.20.1