Allow commas and whitespaces in iconclass IDs

This commit is contained in:
2026-03-09 15:21:16 +01:00
parent 0792438a83
commit 7d42e416b3
2 changed files with 5 additions and 4 deletions

View File

@@ -408,10 +408,10 @@ enum MDNodaRepository implements MDValueEnumInterface, JsonSerializable {
'https://www.iconclass.org/' => '',
]), '/');
if (!empty(trim($id, '0123456789abcdefghijklmnopqrstuvwxyzäüö-/ABCDEFGHIJKLMNOPQRSTUVWXYZÄÜÖ(+)'))) {
if (!empty(trim($id, '0123456789abcdefghijklmnopqrstuvwxyzäüö-/ABCDEFGHIJKLMNOPQRSTUVWXYZÄÜÖ(+), '))) {
// Try url_decoding
$id = urldecode($id);
if (!empty(trim($id, '0123456789abcdefghijklmnopqrstuvwxyzäüö-/ABCDEFGHIJKLMNOPQRSTUVWXYZÄÜÖ(+)'))) {
if (!empty(trim($id, '0123456789abcdefghijklmnopqrstuvwxyzäüö-/ABCDEFGHIJKLMNOPQRSTUVWXYZÄÜÖ(+), '))) {
return false;
}
}

View File

@@ -415,8 +415,9 @@ final class MDNodaRepositoryTest extends TestCase {
yield "45C221 ; ID" => ["45C221", "45C221"];
yield "45C221(+321) ; ID" => ["45C221(+321)", "45C221(+321)"];
yield "45C221(%2B321) > 45C221(+321) ; ID" => ["45C221(+321)", "45C221(%2B321)"];
yield "82A(Rattenfanger) ; ID" => ["82A(Rattenfanger)", "http://iconclass.org/rkd/82A(Rattenfanger)"];
yield "82A(Rattenfänger) ; ID" => ["82A(Rattenfänger)", "http://iconclass.org/rkd/82A(Rattenfänger)"];
yield "82A(Rattenfanger) ; ID" => ["82A(Rattenfanger)", "82A(Rattenfanger)"];
yield "82A(Rattenfänger) ; URL" => ["82A(Rattenfänger)", "http://iconclass.org/rkd/82A(Rattenfänger)"];
yield "83(BERNARDIN DE SAINT-PIERRE, Paul et Virginie) ; ID" => ["83(BERNARDIN DE SAINT-PIERRE, Paul et Virginie)", "83(BERNARDIN DE SAINT-PIERRE, Paul et Virginie)"];
yield "Broken input / adfdasjfklasäj%l" => [false, "adfdasjfklasäj%l"];
}