From a2c8a051b7d39a20c928717a88dc18a93d70c7f6 Mon Sep 17 00:00:00 2001
From: Thijs Kinkhorst <thijs@kinkhorst.com>
Date: Sat, 6 Oct 2018 11:02:41 +0000
Subject: [PATCH] Fix array to string conversion when hosted entity has no name
 in current language.

Also search for "en" as a final fallback language to find a displayable
name should such a name not be found in the current language and the
default language.
---
 modules/core/www/frontpage_federation.php | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/modules/core/www/frontpage_federation.php b/modules/core/www/frontpage_federation.php
index d3d946fa3..3ab034ecf 100644
--- a/modules/core/www/frontpage_federation.php
+++ b/modules/core/www/frontpage_federation.php
@@ -103,7 +103,8 @@ $t = new \SimpleSAML\XHTML\Template($config, 'core:frontpage_federation.tpl.php'
 $translator = $t->getTranslator();
 
 $language = $translator->getLanguage()->getLanguage();
-$defaultLanguage = $config->getString('language.default', 'en');
+$fallbackLanguage = 'en';
+$defaultLanguage = $config->getString('language.default', $fallbackLanguage);
 
 $translators = array(
     'name' => 'name_translated',
@@ -117,9 +118,9 @@ foreach ($metaentries['hosted'] as $index => $entity) {
             $metaentries['hosted'][$index][$new] = $entity[$old][$language];
         } elseif (isset($entity[$old][$defaultLanguage])) {
             $metaentries['hosted'][$index][$new] = $entity[$old][$defaultLanguage];
-        } elseif (isset($metaentries['hosted'][$index][$old])) {
-            $metaentries['hosted'][$index][$new] = $metaentries['hosted'][$index][$old];
-        }
+        } elseif (isset($entity[$old][$fallbackLanguage])) {
+            $metaentries['hosted'][$index][$new] = $entity[$old][$fallbackLanguage];
+	}
     }
 }
 foreach ($metaentries['remote'] as $key => $set) {
@@ -129,6 +130,8 @@ foreach ($metaentries['remote'] as $key => $set) {
                 $metaentries['remote'][$key][$entityid][$new] = $entity[$old][$language];
             } elseif (isset($entity[$old][$defaultLanguage])) {
                 $metaentries['remote'][$key][$entityid][$new] = $entity[$old][$defaultLanguage];
+            } elseif (isset($entity[$old][$fallbackLanguage])) {
+                $metaentries['remote'][$key][$entityid][$new] = $entity[$old][$fallbackLanguage];
             } elseif (isset($metaentries['remote'][$key][$entityid][$old])) {
                 $metaentries['remote'][$key][$entityid][$new] = $metaentries['remote'][$key][$entityid][$old];
             }
-- 
GitLab