diff --git a/docs/simplesamlphp-changelog.md b/docs/simplesamlphp-changelog.md index aa7908479bae1c879661d252c52d1d15f29fda65..37ffc7be24a69b6ece31406ec9608c789cd6e009 100644 --- a/docs/simplesamlphp-changelog.md +++ b/docs/simplesamlphp-changelog.md @@ -10,6 +10,7 @@ See the upgrade notes for specific information about upgrading. Released TBD + * Restore support for custom error messages (#1326) * Fixed a bug in the Artifact Resolution Service (#1428) * Fixed compatibility with Composer pre 1.8.5 (Debian 10) (#1427) * Updated npm dependencies up to February 1, 2021 diff --git a/lib/SimpleSAML/Error/ErrorCodes.php b/lib/SimpleSAML/Error/ErrorCodes.php index 7830272889f241d2126c3b7b0239b756222ffd74..cae1250a7d669530375797f44ddeb9c812e2841b 100644 --- a/lib/SimpleSAML/Error/ErrorCodes.php +++ b/lib/SimpleSAML/Error/ErrorCodes.php @@ -12,7 +12,6 @@ use SimpleSAML\Locale\Translate; * @author Hanne Moa, UNINETT AS. <hanne.moa@uninett.no> * @package SimpleSAMLphp */ - class ErrorCodes { /** @@ -161,8 +160,12 @@ class ErrorCodes */ public static function getErrorCodeTitle($errorCode) { - $errorCodeTitles = self::getAllErrorCodeTitles(); - return $errorCodeTitles[$errorCode]; + if (array_key_exists($errorCode, self::getAllErrorCodeTitles())) { + $errorCodeTitles = self::getAllErrorCodeTitles(); + return $errorCodeTitles[$errorCode]; + } else { + return Translate::addTagPrefix($errorCode, 'title_'); + } } @@ -175,8 +178,12 @@ class ErrorCodes */ public static function getErrorCodeDescription($errorCode) { - $errorCodeDescriptions = self::getAllErrorCodeDescriptions(); - return $errorCodeDescriptions[$errorCode]; + if (array_key_exists($errorCode, self::getAllErrorCodeTitles())) { + $errorCodeDescriptions = self::getAllErrorCodeDescriptions(); + return $errorCodeDescriptions[$errorCode]; + } else { + return Translate::addTagPrefix($errorCode, 'descr_'); + } } diff --git a/lib/SimpleSAML/Locale/Translate.php b/lib/SimpleSAML/Locale/Translate.php index 5db3acc1ee5bdfe07eb8210de91e232910290b25..93d49596a80b5ad12fdefd91598f2e976d3befb1 100644 --- a/lib/SimpleSAML/Locale/Translate.php +++ b/lib/SimpleSAML/Locale/Translate.php @@ -58,7 +58,7 @@ class Translate * Constructor * * @param \SimpleSAML\Configuration $configuration Configuration object - * @param string|null $defaultDictionary The default dictionary where tags will come from. + * @param string|null $defaultDictionary The default dictionary where tags will come from. */ public function __construct(Configuration $configuration, $defaultDictionary = null) { @@ -230,7 +230,7 @@ class Translate /** * Mark a string for translation without translating it. * - * @param string $tag A tag name to mark for translation. + * @param string $tag A tag name to mark for translation. * * @return string The tag, unchanged. */ @@ -356,7 +356,7 @@ class Translate /** * Include a language file from the dictionaries directory. * - * @param string $file File name of dictionary to include + * @param string $file File name of dictionary to include * @param \SimpleSAML\Configuration|null $otherConfig Optionally provide a different configuration object than the * one provided in the constructor to be used to find the directory of the dictionary. This allows to combine * dictionaries inside the SimpleSAMLphp main code distribution together with external dictionaries. Defaults to @@ -541,4 +541,21 @@ class Translate // nothing we can use, return null so that we can set a default return null; } + + /** + * Prefix tag + * + * @param string $tag Translation tag + * @param string $prefix Prefix to be added + * + * @return string Prefixed tag + */ + public static function addTagPrefix(string $tag, string $prefix): string + { + $tagPos = strrpos($tag, ':'); + // if tag contains ':' target actual tag + $tagPos = ($tagPos === false) ? 0 : $tagPos + 1; + // add prefix at $tagPos + return substr_replace($tag, $prefix, $tagPos, 0); + } }