diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml
index 898133cfdc4..662b04f49e1 100644
--- a/apps/files_sharing/appinfo/info.xml
+++ b/apps/files_sharing/appinfo/info.xml
@@ -5,7 +5,7 @@
- SPDX-License-Identifier: AGPL-3.0-only
-->
+ xsi:noNamespaceSchemaLocation="../../../resources/app-info-shipped.xsd">
files_sharing
File sharing
File sharing
@@ -86,11 +86,11 @@ Turning the feature off removes shared files and folders on the server for all s
-
- public.php
-
-
OCA\Files_Sharing\OpenMetrics\SharesCountMetric
+
+
+ public.php
+
diff --git a/lib/private/App/InfoParser.php b/lib/private/App/InfoParser.php
index e034ee4c31d..1441f01125b 100644
--- a/lib/private/App/InfoParser.php
+++ b/lib/private/App/InfoParser.php
@@ -293,26 +293,29 @@ class InfoParser {
* @return AppInfoDefinition
*/
public function applyL10N(array $data, string $lang): array {
- if (isset($data['name'])) {
- if (is_array($data['name'])) {
- $data['name'] = $this->findBestL10NOption($data['name'], $lang);
- }
- $data['name'] = trim($data['name']);
- }
- if (isset($data['summary'])) {
- if (is_array($data['summary'])) {
- $data['summary'] = $this->findBestL10NOption($data['summary'], $lang);
- }
- $data['summary'] = trim($data['summary']);
- }
- if (isset($data['description'])) {
- if (is_array($data['description'])) {
- $data['description'] = trim($this->findBestL10NOption($data['description'], $lang));
- }
- $data['description'] = trim($data['description']);
+ // Ensure name is set and convert arrays to strings
+ if (!isset($data['name'])) {
+ $data['name'] = '';
+ } elseif (is_array($data['name'])) {
+ $data['name'] = $this->findBestL10NOption($data['name'], $lang);
}
+ $data['name'] = trim((string)$data['name']);
+
+ if (!isset($data['summary'])) {
+ $data['summary'] = '';
+ } elseif (is_array($data['summary'])) {
+ $data['summary'] = $this->findBestL10NOption($data['summary'], $lang);
+ }
+ $data['summary'] = trim((string)$data['summary']);
+
+ // Ensure description is set and convert arrays to strings
+ if (!isset($data['description'])) {
+ $data['description'] = '';
+ } elseif (is_array($data['description'])) {
+ $data['description'] = trim($this->findBestL10NOption($data['description'], $lang));
+ }
+ $data['description'] = trim((string)$data['description']);
- /** @var AppInfoDefinition $data */
return $data;
}
diff --git a/lib/public/App/AppInfoDefinition.php b/lib/public/App/AppInfoDefinition.php
index 7aa7667e1ee..b4547faf69f 100644
--- a/lib/public/App/AppInfoDefinition.php
+++ b/lib/public/App/AppInfoDefinition.php
@@ -13,19 +13,19 @@ namespace OCP\App;
* '@attributes'?: array{
* lang?: non-empty-string,
* },
- * '@value': non-empty-string,
+ * '@value': string,
* }
*
* @psalm-type AppInfoLocalizedData = array{
- * 'name': non-empty-string,
- * 'summary': non-empty-string,
- * 'description': non-empty-string,
+ * 'name': string,
+ * 'summary': string,
+ * 'description': string,
* }
*
* @psalm-type AppInfoRawXmlData = array{
- * 'name': non-empty-string|AppInfoLocalizedEntry|list,
- * 'summary': non-empty-string|AppInfoLocalizedEntry|list,
- * 'description': non-empty-string|AppInfoLocalizedEntry|list,
+ * 'name': string|AppInfoLocalizedEntry|list,
+ * 'summary': string|AppInfoLocalizedEntry|list,
+ * 'description': string|AppInfoLocalizedEntry|list,
* }
*
* The enum definitions as per info.xsd:
diff --git a/resources/app-info-shipped.xsd b/resources/app-info-shipped.xsd
index b7b5884eeb8..c7f3808ca9d 100644
--- a/resources/app-info-shipped.xsd
+++ b/resources/app-info-shipped.xsd
@@ -75,6 +75,8 @@
maxOccurs="1" />
+
-
@@ -627,6 +628,13 @@
+
+
+
+
+
+
+