From d295e160499ffb3616988377a5dfc2dbeed10d3e Mon Sep 17 00:00:00 2001 From: Joshua Ramon Enslin Date: Tue, 26 Sep 2023 01:30:40 +0200 Subject: [PATCH] Better validate Wikipedia links --- src/enums/MDNodaRepository.php | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/enums/MDNodaRepository.php b/src/enums/MDNodaRepository.php index fef7685..7fbc181 100644 --- a/src/enums/MDNodaRepository.php +++ b/src/enums/MDNodaRepository.php @@ -482,6 +482,28 @@ enum MDNodaRepository implements MDValueEnumInterface, JsonSerializable { } + /** + * Validates a Wikipedia link. + * + * @param string $id ID to validate. + * + * @return string|false + */ + public static function validateWikipediaId(string $id):string|false { + + $validation = strtr($id, [ + 'https://de.wikipedia.org/wiki/' => '', + 'https://en.wikipedia.org/wiki/' => '', + 'https://sv.wikipedia.org/wiki/' => '', + 'https://ru.wikipedia.org/wiki/' => '', + ]); + + if (str_contains($validation, "/")) return false; + + return $validation; + + } + /** * Validates an ID. * @@ -532,7 +554,7 @@ enum MDNodaRepository implements MDValueEnumInterface, JsonSerializable { 'http://viaf.org/viaf/', ]), self::wikidata => self::validateWikidataId($id), - self::wikipedia => str_replace('https://de.wikipedia.org/wiki/', '', $id), + self::wikipedia => self::validateWikipediaId($id), }; }