Fix bug in BNF ID validation

This commit is contained in:
2026-06-01 13:43:42 +02:00
parent 8a1c33fbc3
commit 834d06b70a
2 changed files with 16 additions and 3 deletions
+5 -3
View File
@@ -746,11 +746,13 @@ enum MDNodaRepository implements MDValueEnumInterface, JsonSerializable {
public static function validateBnfId(string $id):string|false { public static function validateBnfId(string $id):string|false {
if (!is_numeric(substr($id, -1))) { if (!is_numeric(substr($id, -1))) {
$validation = self::validateNumericId(substr($id, 0, -1), ["https://catalogue.bnf.fr/ark:/12148/cb"]); $id = self::validateNumericId(substr($id, 0, -1), ["https://catalogue.bnf.fr/ark:/12148/cb"]) . substr($id, -1);
} }
else $validation = self::validateNumericId($id, ["https://catalogue.bnf.fr/ark:/12148/cb"]); else $id = self::validateNumericId($id, ["https://catalogue.bnf.fr/ark:/12148/cb"]);
if ($validation === false) return false; if ($id === false) {
return false;
}
return $id; return $id;
+11
View File
@@ -62,6 +62,17 @@ final class MDNodaRepositoryTest extends TestCase {
} }
/**
* Data provider for validating BNE IDs.
*
* @return Generator<string, array{0: string|false, 1: string}>
*/
public static function bnfIdForValidationProvider():Generator {
yield "Broken input / duplicate https" => [false, "https://catalogue.bnf.fr/ark:/12148/cbhttps://catalogue.bnf.fr/ark:/12148/cbhttps://catalogue.bnf.fr/ark:/12148/cb104183522"];
}
/** /**
* Ensure validating references to the BNE works. * Ensure validating references to the BNE works.
* *